From e8a3ab4f61d60bfdef8c8f6c062d4d40202b7329 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Fri, 4 Jan 2019 22:35:17 +0100 Subject: [PATCH 1/5] Group permissions fixes --- TelegramUI/ChannelAdminController.swift | 66 ++- TelegramUI/ChannelAdminsController.swift | 59 +- TelegramUI/ChannelInfoController.swift | 2 +- TelegramUI/ChannelPermissionsController.swift | 23 +- TelegramUI/ChatController.swift | 51 +- TelegramUI/ChatHistoryEntriesForView.swift | 15 +- .../ChatInterfaceStateContextMenus.swift | 6 - TelegramUI/ChatListController.swift | 2 +- TelegramUI/ChatTextInputPanelNode.swift | 37 +- TelegramUI/ContactListNode.swift | 3 + .../ContactMultiselectionController.swift | 3 +- TelegramUI/GroupInfoController.swift | 103 ++-- TelegramUI/PresentationStrings.swift | 521 +++++++++--------- .../Resources/PresentationStrings.mapping | Bin 98803 -> 98857 bytes 14 files changed, 507 insertions(+), 384 deletions(-) diff --git a/TelegramUI/ChannelAdminController.swift b/TelegramUI/ChannelAdminController.swift index c11fdacd0b..0d9031d8af 100644 --- a/TelegramUI/ChannelAdminController.swift +++ b/TelegramUI/ChannelAdminController.swift @@ -677,38 +677,50 @@ public func channelAdminController(account: Account, peerId: PeerId, adminId: Pe updateFlags = defaultFlags } - if let updateFlags = updateFlags, updateFlags != defaultFlags { - let signal = convertGroupToSupergroup(account: account, peerId: peerId) - |> map(Optional.init) - |> `catch` { _ -> Signal in - return .single(nil) - } - |> mapToSignal { upgradedPeerId -> Signal in - guard let upgradedPeerId = upgradedPeerId else { + if let updateFlags = updateFlags { + if initialParticipant?.adminInfo == nil && updateFlags == defaultFlags { + updateState { current in + return current.withUpdatedUpdating(true) + } + updateRightsDisposable.set((addGroupAdmin(account: account, peerId: peerId, adminId: adminId) + |> deliverOnMainQueue).start(completed: { + dismissImpl?() + })) + } else if updateFlags != defaultFlags { + let signal = convertGroupToSupergroup(account: account, peerId: peerId) + |> map(Optional.init) + |> `catch` { _ -> Signal in return .single(nil) } - return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.updateMemberAdminRights(account: account, peerId: upgradedPeerId, memberId: adminId, adminRights: TelegramChatAdminRights(flags: updateFlags)) - |> mapToSignal { _ -> Signal in - return .complete() + |> mapToSignal { upgradedPeerId -> Signal in + guard let upgradedPeerId = upgradedPeerId else { + return .single(nil) + } + return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.updateMemberAdminRights(account: account, peerId: upgradedPeerId, memberId: adminId, adminRights: TelegramChatAdminRights(flags: updateFlags)) + |> mapToSignal { _ -> Signal in + return .complete() + } + |> then(.single(upgradedPeerId)) } - |> then(.single(upgradedPeerId)) - } - |> deliverOnMainQueue - - updateState { current in - return current.withUpdatedUpdating(true) - } - updateRightsDisposable.set(signal.start(next: { upgradedPeerId in - if let upgradedPeerId = upgradedPeerId { - upgradedToSupergroup(upgradedPeerId, { - dismissImpl?() - }) - } - }, error: { _ in + |> deliverOnMainQueue + updateState { current in - return current.withUpdatedUpdating(false) + return current.withUpdatedUpdating(true) } - })) + updateRightsDisposable.set(signal.start(next: { upgradedPeerId in + if let upgradedPeerId = upgradedPeerId { + upgradedToSupergroup(upgradedPeerId, { + dismissImpl?() + }) + } + }, error: { _ in + updateState { current in + return current.withUpdatedUpdating(false) + } + })) + } else { + dismissImpl?() + } } else { dismissImpl?() } diff --git a/TelegramUI/ChannelAdminsController.swift b/TelegramUI/ChannelAdminsController.swift index dc88298e53..77ee1e687c 100644 --- a/TelegramUI/ChannelAdminsController.swift +++ b/TelegramUI/ChannelAdminsController.swift @@ -490,6 +490,9 @@ public func channelAdminsController(account: Account, peerId: PeerId, loadComple upgradedToSupergroupImpl?(upgradedPeerId, f) } + let peerView = Promise() + peerView.set(account.viewTracker.peerView(peerId)) + let arguments = ChannelAdminsControllerArguments(account: account, openRecentActions: { let _ = (account.postbox.loadedPeerWithId(peerId) |> deliverOnMainQueue).start(next: { peer in @@ -526,21 +529,12 @@ public func channelAdminsController(account: Account, peerId: PeerId, loadComple })) } }, addAdmin: { - updateState { current in - var dismissController: (() -> Void)? - let controller = ChannelMembersSearchController(account: account, peerId: peerId, mode: .promote, filters: [], openPeer: { peer, participant in - if peerId.namespace == Namespaces.Peer.CloudGroup { - let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } - let progress = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: nil)) - presentControllerImpl?(progress, nil) - - addAdminDisposable.set((addGroupAdmin(account: account, peerId: peerId, adminId: peer.id) - |> deliverOnMainQueue).start(completed: { - [weak progress] in - dismissController?() - progress?.dismiss() - })) - } else { + let _ = (peerView.get() + |> take(1) + |> deliverOnMainQueue).start(next: { peerView in + updateState { current in + var dismissController: (() -> Void)? + let controller = ChannelMembersSearchController(account: account, peerId: peerId, mode: .promote, filters: [], openPeer: { peer, participant in dismissController?() let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } if peer.id == account.peerId { @@ -551,32 +545,39 @@ public func channelAdminsController(account: Account, peerId: PeerId, loadComple case .creator: return case let .member(_, _, _, banInfo): - if let banInfo = banInfo, banInfo.restrictedBy != account.peerId { - presentControllerImpl?(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: nil, text: presentationData.strings.Channel_Members_AddAdminErrorBlacklisted, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) - return + if let banInfo = banInfo { + var canUnban = false + if banInfo.restrictedBy != account.peerId { + canUnban = true + } + if let channel = peerView.peers[peerId] as? TelegramChannel { + if channel.hasPermission(.banMembers) { + canUnban = true + } + } + if !canUnban { + presentControllerImpl?(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: nil, text: presentationData.strings.Channel_Members_AddAdminErrorBlacklisted, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) + return + } } } } presentControllerImpl?(channelAdminController(account: account, peerId: peerId, adminId: peer.id, initialParticipant: participant?.participant, updated: { _ in }, upgradedToSupergroup: upgradedToSupergroup), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + }) + dismissController = { [weak controller] in + controller?.dismiss() } - }) - dismissController = { [weak controller] in - controller?.dismiss() + presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + + return current } - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) - - return current - } - + }) }, openAdmin: { participant in presentControllerImpl?(channelAdminController(account: account, peerId: peerId, adminId: participant.peerId, initialParticipant: participant, updated: { _ in }, upgradedToSupergroup: upgradedToSupergroup), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) }) - let peerView = Promise() - peerView.set(account.viewTracker.peerView(peerId)) - let membersAndLoadMoreControl: (Disposable, PeerChannelMemberCategoryControl?) if peerId.namespace == Namespaces.Peer.CloudChannel { var didReportLoadCompleted = false diff --git a/TelegramUI/ChannelInfoController.swift b/TelegramUI/ChannelInfoController.swift index 5a55a65f3e..891c1c5138 100644 --- a/TelegramUI/ChannelInfoController.swift +++ b/TelegramUI/ChannelInfoController.swift @@ -451,7 +451,7 @@ private func channelInfoEntries(account: Account, presentationData: Presentation } if let cachedChannelData = view.cachedData as? CachedChannelData { - if state.editingState != nil && canEditMembers { + if canEditMembers { if peer.adminRights != nil || peer.flags.contains(.isCreator) { let adminCount = cachedChannelData.participantsSummary.adminCount ?? 0 entries.append(.admins(theme: presentationData.theme, text: presentationData.strings.GroupInfo_Administrators, value: "\(adminCount == 0 ? "" : "\(adminCount)")")) diff --git a/TelegramUI/ChannelPermissionsController.swift b/TelegramUI/ChannelPermissionsController.swift index 8ab17ac368..8070cf33c3 100644 --- a/TelegramUI/ChannelPermissionsController.swift +++ b/TelegramUI/ChannelPermissionsController.swift @@ -14,8 +14,9 @@ private final class ChannelPermissionsControllerArguments { let openPeer: (ChannelParticipant) -> Void let openPeerInfo: (Peer) -> Void let openKicked: () -> Void + let presentRestrictedPublicGroupPermissionsAlert: () -> Void - init(account: Account, updatePermission: @escaping (TelegramChatBannedRightsFlags, Bool) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, addPeer: @escaping () -> Void, removePeer: @escaping (PeerId) -> Void, openPeer: @escaping (ChannelParticipant) -> Void, openPeerInfo: @escaping (Peer) -> Void, openKicked: @escaping () -> Void) { + init(account: Account, updatePermission: @escaping (TelegramChatBannedRightsFlags, Bool) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, addPeer: @escaping () -> Void, removePeer: @escaping (PeerId) -> Void, openPeer: @escaping (ChannelParticipant) -> Void, openPeerInfo: @escaping (Peer) -> Void, openKicked: @escaping () -> Void, presentRestrictedPublicGroupPermissionsAlert: @escaping () -> Void) { self.account = account self.updatePermission = updatePermission self.addPeer = addPeer @@ -24,6 +25,7 @@ private final class ChannelPermissionsControllerArguments { self.openPeer = openPeer self.openPeerInfo = openPeerInfo self.openKicked = openKicked + self.presentRestrictedPublicGroupPermissionsAlert = presentRestrictedPublicGroupPermissionsAlert } } @@ -40,7 +42,7 @@ private enum ChannelPermissionsEntryStableId: Hashable { private enum ChannelPermissionsEntry: ItemListNodeEntry { case permissionsHeader(PresentationTheme, String) - case permission(PresentationTheme, Int, String, Bool, TelegramChatBannedRightsFlags, Bool) + case permission(PresentationTheme, Int, String, Bool, TelegramChatBannedRightsFlags, Bool?) case kicked(PresentationTheme, String, String) case exceptionsHeader(PresentationTheme, String) case add(PresentationTheme, String) @@ -173,8 +175,12 @@ private enum ChannelPermissionsEntry: ItemListNodeEntry { case let .permissionsHeader(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) case let .permission(theme, _, title, value, rights, enabled): - return ItemListSwitchItem(theme: theme, title: title, value: value, type: .icon, enabled: enabled, sectionId: self.section, style: .blocks, updated: { value in - arguments.updatePermission(rights, value) + return ItemListSwitchItem(theme: theme, title: title, value: value, type: .icon, enabled: enabled ?? true, sectionId: self.section, style: .blocks, updated: { value in + if let _ = enabled { + arguments.updatePermission(rights, value) + } else { + arguments.presentRestrictedPublicGroupPermissionsAlert() + } }) case let .kicked(theme, text, value): return ItemListDisclosureItem(theme: theme, title: text, label: value, sectionId: self.section, style: .blocks, action: { @@ -341,9 +347,9 @@ private func channelPermissionsControllerEntries(presentationData: PresentationD entries.append(.permissionsHeader(presentationData.theme, presentationData.strings.GroupInfo_Permissions_SectionTitle)) var rightIndex: Int = 0 for rights in allGroupPermissionList { - var enabled = true - if channel.addressName != nil { - enabled = !publicGroupRestrictedPermissions.contains(rights) + var enabled: Bool? = true + if channel.addressName != nil && !publicGroupRestrictedPermissions.contains(rights) { + enabled = nil } entries.append(.permission(presentationData.theme, rightIndex, stringForGroupPermission(strings: presentationData.strings, right: rights), !effectiveRightsFlags.contains(rights), rights, enabled)) rightIndex += 1 @@ -566,6 +572,9 @@ public func channelPermissionsController(account: Account, peerId: PeerId, loadC } }, openKicked: { pushControllerImpl?(channelBlacklistController(account: account, peerId: peerId)) + }, presentRestrictedPublicGroupPermissionsAlert: { + let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } + presentControllerImpl?(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: nil, text: presentationData.strings.GroupPermission_NotAvailableInPublicGroups, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) }) let previousParticipants = Atomic<[RenderedChannelParticipant]?>(value: nil) diff --git a/TelegramUI/ChatController.swift b/TelegramUI/ChatController.swift index 9b1bbe7526..1437b50496 100644 --- a/TelegramUI/ChatController.swift +++ b/TelegramUI/ChatController.swift @@ -2578,8 +2578,10 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal let banDescription: String switch subject { case .stickers: - if personal { - banDescription = strongSelf.presentationInterfaceState.strings.Group_ErrorSendRestrictedStickers + if untilDate != 0 && untilDate != Int32.max { + banDescription = strongSelf.presentationInterfaceState.strings.Conversation_RestrictedStickersTimed(stringForFullDate(timestamp: untilDate, strings: strongSelf.presentationInterfaceState.strings, dateTimeFormat: strongSelf.presentationInterfaceState.dateTimeFormat)).0 + } else if personal { + banDescription = strongSelf.presentationInterfaceState.strings.Conversation_RestrictedStickers } else { banDescription = strongSelf.presentationInterfaceState.strings.Conversation_DefaultRestrictedStickers } @@ -3739,10 +3741,21 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal strongSelf.chatDisplayNode.dismissInput() var bannedSendMedia: (Int32, Bool)? - if let channel = peer as? TelegramChannel, let value = channel.hasBannedPermission(.banSendMedia) { - bannedSendMedia = value - } else if let group = peer as? TelegramGroup, group.hasBannedPermission(.banSendMedia) { - bannedSendMedia = (Int32.max, false) + var canSendPolls = true + if let channel = peer as? TelegramChannel { + if let value = channel.hasBannedPermission(.banSendMedia) { + bannedSendMedia = value + } + if channel.hasBannedPermission(.banSendPolls) != nil { + canSendPolls = false + } + } else if let group = peer as? TelegramGroup { + if group.hasBannedPermission(.banSendMedia) { + bannedSendMedia = (Int32.max, false) + } + if group.hasBannedPermission(.banSendPolls) { + canSendPolls = false + } } if editMediaOptions == nil, let (untilDate, personal) = bannedSendMedia { @@ -3756,16 +3769,24 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal } let actionSheet = ActionSheetController(presentationTheme: strongSelf.presentationData.theme) + var items: [ActionSheetItem] = [] + items.append(ActionSheetTextItem(title: banDescription)) + items.append(ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_Location, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + self?.presentMapPicker(editingMessage: false) + })) + if canSendPolls { + items.append(ActionSheetButtonItem(title: strongSelf.presentationData.strings.AttachmentMenu_Poll, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + self?.presentPollCreation() + })) + } + items.append(ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_Contact, color: .accent, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + self?.presentContactPicker() + })) actionSheet.setItemGroups([ActionSheetItemGroup(items: [ - ActionSheetTextItem(title: banDescription), - ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_Location, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - self?.presentMapPicker(editingMessage: false) - }), - ActionSheetButtonItem(title: strongSelf.presentationData.strings.Conversation_Contact, color: .accent, action: { [weak actionSheet] in - actionSheet?.dismissAnimated() - self?.presentContactPicker() - }) + ]), ActionSheetItemGroup(items: [ ActionSheetButtonItem(title: strongSelf.presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in actionSheet?.dismissAnimated() diff --git a/TelegramUI/ChatHistoryEntriesForView.swift b/TelegramUI/ChatHistoryEntriesForView.swift index d0cf004fed..2563ffd7b6 100644 --- a/TelegramUI/ChatHistoryEntriesForView.swift +++ b/TelegramUI/ChatHistoryEntriesForView.swift @@ -17,7 +17,7 @@ func chatHistoryEntriesForView(location: ChatLocation, view: MessageHistoryView, } var groupBucket: [(Message, Bool, ChatHistoryMessageSelection, Bool)] = [] - for entry in view.entries { + loop: for entry in view.entries { switch entry { case let .HoleEntry(hole, _): if !groupBucket.isEmpty { @@ -28,6 +28,19 @@ func chatHistoryEntriesForView(location: ChatLocation, view: MessageHistoryView, entries.append(.HoleEntry(hole, presentationData)) } case let .MessageEntry(message, read, _, monthLocation): + if message.id.peerId.namespace == Namespaces.Peer.CloudChannel { + for media in message.media { + if let action = media as? TelegramMediaAction { + switch action.action { + case .channelMigratedFromGroup, .groupMigratedToChannel: + continue loop + default: + break + } + } + } + } + var isAdmin = false if let author = message.author { isAdmin = adminIds.contains(author.id) diff --git a/TelegramUI/ChatInterfaceStateContextMenus.swift b/TelegramUI/ChatInterfaceStateContextMenus.swift index e9aa9e4c8d..279a1f2554 100644 --- a/TelegramUI/ChatInterfaceStateContextMenus.swift +++ b/TelegramUI/ChatInterfaceStateContextMenus.swift @@ -585,12 +585,6 @@ private func canPerformEditingActions(limits: LimitsConfiguration, accountPeerId return true } - if let peer = message.peers[message.id.peerId] as? TelegramChannel { - if peer.hasPermission(.pinMessages) { - return true - } - } - return false } diff --git a/TelegramUI/ChatListController.swift b/TelegramUI/ChatListController.swift index abb235df54..377e963c7d 100644 --- a/TelegramUI/ChatListController.swift +++ b/TelegramUI/ChatListController.swift @@ -969,7 +969,7 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie let signal: Signal = strongSelf.account.postbox.transaction { transaction -> Void in for peerId in peerIds { - removePeerChat(transaction: transaction, mediaBox: account.postbox.mediaBox, peerId: peerId, reportChatSpam: false) + removePeerChat(transaction: transaction, mediaBox: account.postbox.mediaBox, peerId: peerId, reportChatSpam: false, deleteGloballyIfPossible: false) } } |> afterDisposed { diff --git a/TelegramUI/ChatTextInputPanelNode.swift b/TelegramUI/ChatTextInputPanelNode.swift index 4727cf8561..56df3d885e 100644 --- a/TelegramUI/ChatTextInputPanelNode.swift +++ b/TelegramUI/ChatTextInputPanelNode.swift @@ -20,11 +20,17 @@ private let searchLayoutProgressImage = generateImage(CGSize(width: 22.0, height private let accessoryButtonFont = Font.medium(14.0) -private final class AccessoryItemIconButton: HighlightableButton { +private final class AccessoryItemIconButton: HighlightTrackingButton { private let item: ChatTextInputAccessoryItem private var width: CGFloat + private let imageNode: ASImageNode init(item: ChatTextInputAccessoryItem, theme: PresentationTheme, strings: PresentationStrings) { + self.imageNode = ASImageNode() + self.imageNode.isLayerBacked = true + self.imageNode.displaysAsynchronously = false + self.imageNode.displayWithoutProcessing = true + self.item = item let (image, text, alpha, insets) = AccessoryItemIconButton.imageAndInsets(item: item, theme: theme, strings: strings) @@ -33,15 +39,29 @@ private final class AccessoryItemIconButton: HighlightableButton { super.init(frame: CGRect()) + self.addSubnode(self.imageNode) + if let text = text { self.titleLabel?.font = accessoryButtonFont self.setTitleColor(theme.chat.inputPanel.inputControlColor, for: []) self.setTitle(text, for: []) } - self.setImage(image, for: []) + self.imageNode.image = image + self.imageNode.alpha = alpha self.imageEdgeInsets = insets - self.imageView?.alpha = alpha + + self.highligthedChanged = { [weak self] highlighted in + if let strongSelf = self { + if highlighted { + strongSelf.layer.removeAnimation(forKey: "opacity") + strongSelf.alpha = 0.4 + } else { + strongSelf.alpha = 1.0 + strongSelf.layer.animateAlpha(from: 0.4, to: 1.0, duration: 0.2) + } + } + } } func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings) { @@ -57,9 +77,9 @@ private final class AccessoryItemIconButton: HighlightableButton { self.setTitle("", for: []) } - self.setImage(image, for: []) + self.imageNode.image = image self.imageEdgeInsets = insets - self.imageView?.alpha = alpha + self.imageNode.alpha = alpha } required init?(coder aDecoder: NSCoder) { @@ -105,6 +125,12 @@ private final class AccessoryItemIconButton: HighlightableButton { } } + func updateLayout(size: CGSize) { + if let image = self.imageNode.image { + self.imageNode.frame = CGRect(origin: CGPoint(x: floor((size.width - image.size.width) / 2.0), y: floor((size.width - image.size.width) / 2.0) - self.imageEdgeInsets.bottom), size: image.size) + } + } + var buttonWidth: CGFloat { return self.width } @@ -984,6 +1010,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { var nextButtonTopRight = CGPoint(x: width - rightInset - textFieldInsets.right - accessoryButtonInset, y: panelHeight - textFieldInsets.bottom - minimalInputHeight + audioRecordingItemsVerticalOffset) for (_, button) in self.accessoryItemButtons.reversed() { let buttonSize = CGSize(width: button.buttonWidth, height: minimalInputHeight) + button.updateLayout(size: buttonSize) let buttonFrame = CGRect(origin: CGPoint(x: nextButtonTopRight.x - buttonSize.width, y: nextButtonTopRight.y + floor((minimalInputHeight - buttonSize.height) / 2.0)), size: buttonSize) if button.superview == nil { self.view.addSubview(button) diff --git a/TelegramUI/ContactListNode.swift b/TelegramUI/ContactListNode.swift index a7d33cd0ee..c3fcb777cc 100644 --- a/TelegramUI/ContactListNode.swift +++ b/TelegramUI/ContactListNode.swift @@ -730,6 +730,9 @@ final class ContactListNode: ASDisplayNode { self.selectionStatePromise.set(.single(self.selectionStateValue)) } } + var selectionState: ContactListNodeGroupSelectionState? { + return self.selectionStateValue + } private var enableUpdatesValue = false var enableUpdates: Bool { diff --git a/TelegramUI/ContactMultiselectionController.swift b/TelegramUI/ContactMultiselectionController.swift index 46653766f8..80319e1cf0 100644 --- a/TelegramUI/ContactMultiselectionController.swift +++ b/TelegramUI/ContactMultiselectionController.swift @@ -131,7 +131,8 @@ class ContactMultiselectionController: ViewController { switch self.mode { case .groupCreation: let maxCount: Int32 = self.limitsConfiguration?.maxSupergroupMemberCount ?? 5000 - self.titleView.title = CounterContollerTitle(title: self.presentationData.strings.Compose_NewGroupTitle, counter: "0/\(maxCount)") + let count = self.contactsNode.contactListNode.selectionState?.selectedPeerIndices.count ?? 0 + self.titleView.title = CounterContollerTitle(title: self.presentationData.strings.Compose_NewGroupTitle, counter: "\(count)/\(maxCount)") let rightNavigationButton = UIBarButtonItem(title: self.presentationData.strings.Common_Next, style: .done, target: self, action: #selector(self.rightNavigationButtonPressed)) self.rightNavigationButton = rightNavigationButton self.navigationItem.rightBarButtonItem = self.rightNavigationButton diff --git a/TelegramUI/GroupInfoController.swift b/TelegramUI/GroupInfoController.swift index 06adaa6e32..5590588bcd 100644 --- a/TelegramUI/GroupInfoController.swift +++ b/TelegramUI/GroupInfoController.swift @@ -698,9 +698,7 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa var canAddMembers = false var isPublic = false var isCreator = false - var isGroup = false if let group = view.peers[view.peerId] as? TelegramGroup { - isGroup = true if case .creator = group.role { isCreator = true } @@ -713,10 +711,13 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa case .member: break } - } else if let channel = view.peers[view.peerId] as? TelegramChannel { - if case .group = channel.info { - isGroup = true + if !group.hasBannedPermission(.banChangeInfo) { + canEditGroupInfo = true } + if !group.hasBannedPermission(.banAddMembers) { + canAddMembers = true + } + } else if let channel = view.peers[view.peerId] as? TelegramChannel { highlightAdmins = true isPublic = channel.username != nil isCreator = channel.flags.contains(.isCreator) @@ -1074,8 +1075,18 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa entries.append(.leave(presentationData.theme, presentationData.strings.Group_LeaveGroup)) } } else if let channel = view.peers[view.peerId] as? TelegramChannel { - if case .member = channel.participationStatus, let cachedChannelData = view.cachedData as? CachedChannelData, let memberCount = cachedChannelData.participantsSummary.memberCount, memberCount <= 200 { - entries.append(.leave(presentationData.theme, presentationData.strings.Group_LeaveGroup)) + if case .member = channel.participationStatus { + if channel.flags.contains(.isCreator) { + if let cachedChannelData = view.cachedData as? CachedChannelData, let memberCount = cachedChannelData.participantsSummary.memberCount, memberCount <= 200 { + if state.editingState != nil { + entries.append(.leave(presentationData.theme, presentationData.strings.ChannelInfo_DeleteGroup)) + } else { + entries.append(.leave(presentationData.theme, presentationData.strings.Group_LeaveGroup)) + } + } + } else { + entries.append(.leave(presentationData.theme, presentationData.strings.Group_LeaveGroup)) + } } } @@ -1177,6 +1188,9 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl var upgradedToSupergroupImpl: ((PeerId, @escaping () -> Void) -> Void)? + let peerView = Promise() + peerView.set(account.viewTracker.peerView(peerId)) + let arguments = GroupInfoArguments(account: account, peerId: peerId, avatarAndNameInfoContext: avatarAndNameInfoContext, tapAvatarAction: { let _ = (account.postbox.loadedPeerWithId(peerId) |> take(1) @@ -1427,7 +1441,7 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.addMember(account: account, peerId: peerId, memberId: memberId) } - return account.postbox.peerView(id: memberId) + return peerView.get() |> take(1) |> deliverOnMainQueue |> mapToSignal { view -> Signal in @@ -1648,28 +1662,55 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl }, convertToSupergroup: { pushControllerImpl?(convertToSupergroupController(account: account, peerId: peerId)) }, leave: { - let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } - let controller = ActionSheetController(presentationTheme: presentationData.theme) - let dismissAction: () -> Void = { [weak controller] in - controller?.dismissAnimated() - } - - var items: [ActionSheetItem] = [] - if peerId.namespace == Namespaces.Peer.CloudGroup { - items.append(ActionSheetTextItem(title: presentationData.strings.GroupInfo_DeleteAndExitConfirmation)) - } - items.append(ActionSheetButtonItem(title: presentationData.strings.Group_LeaveGroup, color: .destructive, action: { - dismissAction() - let _ = (removePeerChat(postbox: account.postbox, peerId: peerId, reportChatSpam: false) - |> deliverOnMainQueue).start(completed: { - popToRootImpl?() - }) - })) - controller.setItemGroups([ - ActionSheetItemGroup(items: items), - ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) - ]) - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + let _ = (peerView.get() + |> take(1) + |> deliverOnMainQueue).start(next: { peerView in + let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } + + if let channel = peerView.peers[peerId] as? TelegramChannel, channel.flags.contains(.isCreator), stateValue.with({ $0 }).editingState != nil { + let controller = ActionSheetController(presentationTheme: presentationData.theme) + let dismissAction: () -> Void = { [weak controller] in + controller?.dismissAnimated() + } + + var items: [ActionSheetItem] = [] + items.append(ActionSheetTextItem(title: presentationData.strings.ChannelInfo_DeleteGroupConfirmation)) + items.append(ActionSheetButtonItem(title: presentationData.strings.ChannelInfo_DeleteGroup, color: .destructive, action: { + dismissAction() + let _ = (removePeerChat(postbox: account.postbox, peerId: peerId, reportChatSpam: false, deleteGloballyIfPossible: true) + |> deliverOnMainQueue).start(completed: { + popToRootImpl?() + }) + })) + controller.setItemGroups([ + ActionSheetItemGroup(items: items), + ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) + ]) + presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + } else { + let controller = ActionSheetController(presentationTheme: presentationData.theme) + let dismissAction: () -> Void = { [weak controller] in + controller?.dismissAnimated() + } + + var items: [ActionSheetItem] = [] + if peerId.namespace == Namespaces.Peer.CloudGroup { + items.append(ActionSheetTextItem(title: presentationData.strings.GroupInfo_DeleteAndExitConfirmation)) + } + items.append(ActionSheetButtonItem(title: presentationData.strings.Group_LeaveGroup, color: .destructive, action: { + dismissAction() + let _ = (removePeerChat(postbox: account.postbox, peerId: peerId, reportChatSpam: false) + |> deliverOnMainQueue).start(completed: { + popToRootImpl?() + }) + })) + controller.setItemGroups([ + ActionSheetItemGroup(items: items), + ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) + ]) + presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + } + }) }, displayUsernameShareMenu: { text in let shareController = ShareController(account: account, subject: .url(text)) presentControllerImpl?(shareController, nil) @@ -1709,7 +1750,7 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl let previousChannelMembers = Atomic<[PeerId]?>(value: nil) let globalNotificationsKey: PostboxViewKey = .preferences(keys: Set([PreferencesKeys.globalNotifications])) - let signal = combineLatest(queue: .mainQueue(), (account.applicationContext as! TelegramApplicationContext).presentationData, statePromise.get(), account.viewTracker.peerView(peerId), account.postbox.combinedView(keys: [globalNotificationsKey]), channelMembersPromise.get()) + let signal = combineLatest(queue: .mainQueue(), (account.applicationContext as! TelegramApplicationContext).presentationData, statePromise.get(), peerView.get(), account.postbox.combinedView(keys: [globalNotificationsKey]), channelMembersPromise.get()) |> map { presentationData, state, view, combinedView, channelMembers -> (ItemListControllerState, (ItemListNodeState, GroupInfoEntry.ItemGenerationArguments)) in let peer = peerViewMainPeer(view) diff --git a/TelegramUI/PresentationStrings.swift b/TelegramUI/PresentationStrings.swift index ae8c23d475..42ff2e510f 100644 --- a/TelegramUI/PresentationStrings.swift +++ b/TelegramUI/PresentationStrings.swift @@ -3322,509 +3322,510 @@ public final class PresentationStrings { return formatWithArgumentRanges(self._s[2858]!, self._r[2858]!, [_1, _2]) } public var Group_Info_AdminLog: String { return self._s[2859]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[2860]! } - public var Conversation_Admin: String { return self._s[2862]! } - public var Conversation_GifTooltip: String { return self._s[2863]! } - public var Passport_NotLoggedInMessage: String { return self._s[2864]! } - public var Profile_MessageLifetimeForever: String { return self._s[2865]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[2860]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[2861]! } + public var Conversation_Admin: String { return self._s[2863]! } + public var Conversation_GifTooltip: String { return self._s[2864]! } + public var Passport_NotLoggedInMessage: String { return self._s[2865]! } + public var Profile_MessageLifetimeForever: String { return self._s[2866]! } public func MESSAGE_POLL_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2867]!, self._r[2867]!, [_1]) + return formatWithArgumentRanges(self._s[2868]!, self._r[2868]!, [_1]) } - public var SharedMedia_EmptyTitle: String { return self._s[2868]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[2869]! } - public var Username_Help: String { return self._s[2870]! } - public var DialogList_LanguageTooltip: String { return self._s[2872]! } - public var Map_LoadError: String { return self._s[2873]! } - public var Notification_Exceptions_NewException: String { return self._s[2874]! } - public var TwoStepAuth_EmailTitle: String { return self._s[2875]! } - public var WatchRemote_AlertText: String { return self._s[2876]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[2878]! } + public var SharedMedia_EmptyTitle: String { return self._s[2869]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[2870]! } + public var Username_Help: String { return self._s[2871]! } + public var DialogList_LanguageTooltip: String { return self._s[2873]! } + public var Map_LoadError: String { return self._s[2874]! } + public var Notification_Exceptions_NewException: String { return self._s[2875]! } + public var TwoStepAuth_EmailTitle: String { return self._s[2876]! } + public var WatchRemote_AlertText: String { return self._s[2877]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[2879]! } public func CHANNEL_MESSAGE_GEOLIVE_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2879]!, self._r[2879]!, [_1]) - } - public func LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2880]!, self._r[2880]!, [_1]) } - public var Passport_Address_CountryPlaceholder: String { return self._s[2881]! } + public func LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2881]!, self._r[2881]!, [_1]) + } + public var Passport_Address_CountryPlaceholder: String { return self._s[2882]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2882]!, self._r[2882]!, [_0]) + return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[2884]! } - public var AccessDenied_VideoMicrophone: String { return self._s[2886]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2887]! } - public var Cache_ClearNone: String { return self._s[2888]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[2889]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2890]! } + public var Group_AdminLog_EmptyText: String { return self._s[2885]! } + public var AccessDenied_VideoMicrophone: String { return self._s[2887]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2888]! } + public var Cache_ClearNone: String { return self._s[2889]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[2890]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2891]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2891]!, self._r[2891]!, [_0]) + return formatWithArgumentRanges(self._s[2892]!, self._r[2892]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[2892]! } + public var Passport_Identity_Country: String { return self._s[2893]! } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2893]!, self._r[2893]!, [_0]) + return formatWithArgumentRanges(self._s[2894]!, self._r[2894]!, [_0]) } - public var AccessDenied_Settings: String { return self._s[2894]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2895]! } - public var Month_ShortMay: String { return self._s[2896]! } - public var Compose_NewGroup: String { return self._s[2897]! } - public var Group_Setup_TypePrivate: String { return self._s[2899]! } - public var Login_PadPhoneHelpTitle: String { return self._s[2900]! } - public var Appearance_ThemeDayClassic: String { return self._s[2901]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[2902]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[2903]! } - public var Conversation_typing: String { return self._s[2905]! } - public var Paint_Masks: String { return self._s[2906]! } + public var AccessDenied_Settings: String { return self._s[2895]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2896]! } + public var Month_ShortMay: String { return self._s[2897]! } + public var Compose_NewGroup: String { return self._s[2898]! } + public var Group_Setup_TypePrivate: String { return self._s[2900]! } + public var Login_PadPhoneHelpTitle: String { return self._s[2901]! } + public var Appearance_ThemeDayClassic: String { return self._s[2902]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[2903]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[2904]! } + public var Conversation_typing: String { return self._s[2906]! } + public var Paint_Masks: String { return self._s[2907]! } public func PINNED_DOC_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2907]!, self._r[2907]!, [_1]) + return formatWithArgumentRanges(self._s[2908]!, self._r[2908]!, [_1]) } - public var Username_InvalidTaken: String { return self._s[2908]! } + public var Username_InvalidTaken: String { return self._s[2909]! } public func CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2909]!, self._r[2909]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2910]!, self._r[2910]!, [_1, _2]) } - public var Call_StatusNoAnswer: String { return self._s[2910]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2911]! } - public var Passport_Identity_Selfie: String { return self._s[2912]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[2913]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2914]! } - public var Conversation_ClearSecretHistory: String { return self._s[2915]! } - public var NetworkUsageSettings_Title: String { return self._s[2917]! } - public var Your_cards_security_code_is_invalid: String { return self._s[2919]! } + public var Call_StatusNoAnswer: String { return self._s[2911]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2912]! } + public var Passport_Identity_Selfie: String { return self._s[2913]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[2914]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2915]! } + public var Conversation_ClearSecretHistory: String { return self._s[2916]! } + public var NetworkUsageSettings_Title: String { return self._s[2918]! } + public var Your_cards_security_code_is_invalid: String { return self._s[2920]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2921]!, self._r[2921]!, [_0]) + return formatWithArgumentRanges(self._s[2922]!, self._r[2922]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2922]!, self._r[2922]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2923]!, self._r[2923]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[2924]! } - public var Map_LiveLocationTitle: String { return self._s[2925]! } - public var Login_InfoAvatarAdd: String { return self._s[2926]! } - public var Passport_Identity_FilesView: String { return self._s[2927]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[2928]! } - public var Privacy_Calls_NeverAllow: String { return self._s[2929]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[2925]! } + public var Map_LiveLocationTitle: String { return self._s[2926]! } + public var Login_InfoAvatarAdd: String { return self._s[2927]! } + public var Passport_Identity_FilesView: String { return self._s[2928]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[2929]! } + public var Privacy_Calls_NeverAllow: String { return self._s[2930]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2930]!, self._r[2930]!, [_0]) + return formatWithArgumentRanges(self._s[2931]!, self._r[2931]!, [_0]) } - public var TwoStepAuth_ConfirmationText: String { return self._s[2931]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2932]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2933]! } - public var Tour_Title2: String { return self._s[2934]! } - public var Conversation_FileOpenIn: String { return self._s[2935]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2936]! } - public var Wallpaper_Set: String { return self._s[2937]! } - public var Passport_Identity_Translations: String { return self._s[2939]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2932]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2933]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2934]! } + public var Tour_Title2: String { return self._s[2935]! } + public var Conversation_FileOpenIn: String { return self._s[2936]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2937]! } + public var Wallpaper_Set: String { return self._s[2938]! } + public var Passport_Identity_Translations: String { return self._s[2940]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2940]!, self._r[2940]!, [_0]) + return formatWithArgumentRanges(self._s[2941]!, self._r[2941]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[2941]! } + public var Channel_LeaveChannel: String { return self._s[2942]! } public func MESSAGE_NOTEXT_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2942]!, self._r[2942]!, [_1]) - } - public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_1]) } - public var PhotoEditor_HighlightsTint: String { return self._s[2944]! } - public var Passport_Email_Delete: String { return self._s[2945]! } - public var Conversation_Mute: String { return self._s[2947]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[2949]! } + public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2944]!, self._r[2944]!, [_1]) + } + public var PhotoEditor_HighlightsTint: String { return self._s[2945]! } + public var Passport_Email_Delete: String { return self._s[2946]! } + public var Conversation_Mute: String { return self._s[2948]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[2950]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2950]!, self._r[2950]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2951]!, self._r[2951]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[2951]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2952]! } - public var Common_No: String { return self._s[2953]! } - public var Weekday_Sunday: String { return self._s[2954]! } - public var Notification_Reply: String { return self._s[2955]! } - public var Conversation_ViewMessage: String { return self._s[2956]! } + public var Calls_CallTabDescription: String { return self._s[2952]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2953]! } + public var Common_No: String { return self._s[2954]! } + public var Weekday_Sunday: String { return self._s[2955]! } + public var Notification_Reply: String { return self._s[2956]! } + public var Conversation_ViewMessage: String { return self._s[2957]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2957]!, self._r[2957]!, [_0]) - } - public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_0]) } - public var Message_PinnedDocumentMessage: String { return self._s[2959]! } - public var DialogList_TabTitle: String { return self._s[2961]! } - public var Passport_FieldEmail: String { return self._s[2962]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2963]! } - public var Passport_Address_TypeBankStatement: String { return self._s[2964]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2965]! } - public var Privacy_Calls_P2P: String { return self._s[2966]! } - public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2968]!, self._r[2968]!, [_0]) + public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2959]!, self._r[2959]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[2969]! } - public var EnterPasscode_ChangeTitle: String { return self._s[2970]! } - public var Passport_InfoText: String { return self._s[2971]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2972]! } + public var Message_PinnedDocumentMessage: String { return self._s[2960]! } + public var DialogList_TabTitle: String { return self._s[2962]! } + public var Passport_FieldEmail: String { return self._s[2963]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2964]! } + public var Passport_Address_TypeBankStatement: String { return self._s[2965]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2966]! } + public var Privacy_Calls_P2P: String { return self._s[2967]! } + public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2969]!, self._r[2969]!, [_0]) + } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[2970]! } + public var EnterPasscode_ChangeTitle: String { return self._s[2971]! } + public var Passport_InfoText: String { return self._s[2972]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2973]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2973]!, self._r[2973]!, [_0]) + return formatWithArgumentRanges(self._s[2974]!, self._r[2974]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2974]!, self._r[2974]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2975]!, self._r[2975]!, [_1, _2, _3]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2975]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2977]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[2976]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2978]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2978]!, self._r[2978]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_1, _2]) } public func MESSAGE_ROUND_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_1]) + return formatWithArgumentRanges(self._s[2980]!, self._r[2980]!, [_1]) } public func PHONE_CALL_MISSED_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2981]!, self._r[2981]!, [_1]) + return formatWithArgumentRanges(self._s[2982]!, self._r[2982]!, [_1]) } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2983]!, self._r[2983]!, [_0]) + return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0]) } - public var DialogList_Unread: String { return self._s[2984]! } - public var User_DeletedAccount: String { return self._s[2985]! } + public var DialogList_Unread: String { return self._s[2985]! } + public var User_DeletedAccount: String { return self._s[2986]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2986]!, self._r[2986]!, [_0]) + return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[2987]! } - public var SharedMedia_CategoryMedia: String { return self._s[2988]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2989]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2990]! } - public var Watch_ChatList_Compose: String { return self._s[2991]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2992]! } - public var Watch_Microphone_Access: String { return self._s[2993]! } - public var Group_Setup_HistoryHeader: String { return self._s[2994]! } - public var Activity_UploadingPhoto: String { return self._s[2995]! } + public var UserInfo_NotificationsDefault: String { return self._s[2988]! } + public var SharedMedia_CategoryMedia: String { return self._s[2989]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2990]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2991]! } + public var Watch_ChatList_Compose: String { return self._s[2992]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2993]! } + public var Watch_Microphone_Access: String { return self._s[2994]! } + public var Group_Setup_HistoryHeader: String { return self._s[2995]! } + public var Activity_UploadingPhoto: String { return self._s[2996]! } public func MESSAGE_VIDEO_SECRET_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2997]!, self._r[2997]!, [_1]) + return formatWithArgumentRanges(self._s[2998]!, self._r[2998]!, [_1]) } - public var Conversation_Edit: String { return self._s[2998]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[2999]! } - public var Login_TermsOfServiceDecline: String { return self._s[3000]! } - public var Message_PinnedContactMessage: String { return self._s[3001]! } + public var Conversation_Edit: String { return self._s[2999]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3000]! } + public var Login_TermsOfServiceDecline: String { return self._s[3001]! } + public var Message_PinnedContactMessage: String { return self._s[3002]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3003]!, self._r[3003]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3003]!, self._r[3003]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_1, _2, _3, _4, _5]) } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3005]! } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3006]! } - public var Message_PinnedPhotoMessage: String { return self._s[3007]! } - public var Passport_FieldPhone: String { return self._s[3008]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3009]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3011]! } - public var Conversation_Call: String { return self._s[3012]! } - public var Common_TakePhoto: String { return self._s[3014]! } - public var Channel_NotificationLoading: String { return self._s[3015]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3006]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3007]! } + public var Message_PinnedPhotoMessage: String { return self._s[3008]! } + public var Passport_FieldPhone: String { return self._s[3009]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3010]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3012]! } + public var Conversation_Call: String { return self._s[3013]! } + public var Common_TakePhoto: String { return self._s[3015]! } + public var Channel_NotificationLoading: String { return self._s[3016]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3016]!, self._r[3016]!, [_0]) + return formatWithArgumentRanges(self._s[3017]!, self._r[3017]!, [_0]) } - public var Permissions_SiriTitle_v0: String { return self._s[3017]! } + public var Permissions_SiriTitle_v0: String { return self._s[3018]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3018]!, self._r[3018]!, [_0]) + return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3019]! } - public var Common_edit: String { return self._s[3020]! } - public var PrivacySettings_AuthSessions: String { return self._s[3021]! } - public var Month_ShortJune: String { return self._s[3022]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3023]! } - public var Call_ReportSend: String { return self._s[3024]! } - public var Watch_LastSeen_JustNow: String { return self._s[3025]! } - public var Notifications_MessageNotifications: String { return self._s[3026]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3028]! } - public var Group_Status: String { return self._s[3029]! } + public var Channel_MessagePhotoRemoved: String { return self._s[3020]! } + public var Common_edit: String { return self._s[3021]! } + public var PrivacySettings_AuthSessions: String { return self._s[3022]! } + public var Month_ShortJune: String { return self._s[3023]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3024]! } + public var Call_ReportSend: String { return self._s[3025]! } + public var Watch_LastSeen_JustNow: String { return self._s[3026]! } + public var Notifications_MessageNotifications: String { return self._s[3027]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3029]! } + public var Group_Status: String { return self._s[3030]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3030]!, self._r[3030]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3031]!, self._r[3031]!, [_0, _1]) } - public var ShareMenu_ShareTo: String { return self._s[3031]! } - public var Conversation_Moderate_Ban: String { return self._s[3032]! } + public var ShareMenu_ShareTo: String { return self._s[3032]! } + public var Conversation_Moderate_Ban: String { return self._s[3033]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3033]!, self._r[3033]!, [_0]) + return formatWithArgumentRanges(self._s[3034]!, self._r[3034]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3034]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3035]! } + public var SharedMedia_ViewInChat: String { return self._s[3035]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3036]! } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3037]!, self._r[3037]!, [_0]) + return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_0]) } - public var Appearance_ReduceMotion: String { return self._s[3038]! } - public var Map_OpenInHereMaps: String { return self._s[3039]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[3040]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3041]! } - public var PhotoEditor_Skip: String { return self._s[3042]! } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public var Appearance_ReduceMotion: String { return self._s[3039]! } + public var Map_OpenInHereMaps: String { return self._s[3040]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[3041]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3042]! } + public var PhotoEditor_Skip: String { return self._s[3043]! } + public func CHANNEL_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedVideos(_ value: Int32) -> String { + public func MessageTimer_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedGifs(_ value: Int32) -> String { + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGES_SEPARATED(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func CHANNEL_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGES_SEPARATED(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func MessageTimer_Years(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Generic(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_StickerCount(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_SharePhoto(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusOnline(_ value: Int32) -> String { + public func MuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedMessages(_ value: Int32) -> String { + public func Call_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public func MessageTimer_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedAuthorsOthers(_ value: Int32) -> String { + public func MuteFor_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreExtended(_ value: Int32) -> String { + public func CHANNEL_MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Days(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Minutes(_ value: Int32) -> String { + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + public func MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Map_ETAMinutes(_ value: Int32) -> String { + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, "\(value)") } - public func InviteText_ContactsCountText(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func ForwardedVideoMessages(_ 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 { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func MuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Invitation_Members(_ value: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func CHAT_MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedVideoMessages(_ value: Int32) -> String { + public func SharedMedia_Link(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func ForwardedAuthorsOthers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)") } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func Media_SharePhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_File(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGES_SEPARATED(_ value: Int32) -> String { + public func LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareVideo(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Hours(_ value: Int32) -> String { + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Days(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortDays(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Passport_Scans(_ value: Int32) -> String { + public func MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func MuteFor_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, "\(value)") } - public func UserCount(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Months(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedAudios(_ value: Int32) -> String { + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Years(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortSeconds(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)") } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + public func MessageTimer_Months(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedStickers(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func MuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func Media_ShareItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)") } - public func QuickSend_Photos(_ value: Int32) -> String { + public func ForwardedVideos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)") } @@ -3832,115 +3833,115 @@ public final class PresentationStrings { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Link(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Map_ETAHours(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func ForwardedFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func Map_ETAMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedContacts(_ value: Int32) -> String { + 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 ForwardedPolls(_ value: Int32) -> String { + public func StickerPack_StickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func ForwardedContacts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Seconds(_ value: Int32) -> String { + public func Contacts_ImportersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareItem(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Video(_ value: Int32) -> String { + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPhotos(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedLocations(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Days(_ value: Int32) -> String { + public func CHAT_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedFiles(_ value: Int32) -> String { + public func StickerPack_AddStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)") } diff --git a/TelegramUI/Resources/PresentationStrings.mapping b/TelegramUI/Resources/PresentationStrings.mapping index dcc2adc26592cb281a2413ec21d5de4dcb6fa8ba..39ad32e5a2f3c775989219c765f7af4bc346bc53 100644 GIT binary patch delta 3392 zcmZu!32;<*8PB)yLf9n}a+4{ogJaMl;Fm{=fV9 zec%6|zkMq8>4#I{;w(G|@cbdD*DvJflxdD(Q3{FuA=V+gV*Me>yDh53B5Df#tg@t} zROrp-Y`y7lW;GktIB_)*SJG#TA`i2uDr%A<+a12JBy(;Pf(Oc>87nuMFREu{F~W$EeMNolNW63dx(}nN=`-A0`}g364jidVRa{QmJ_E%2}cx_ z*}K??(K{lgxbdi$`mhV1(Wa-PQ_3^bj+PGsRHI z-m8gPOzlz}vO2unwm2{Q#9ZPE0G=(T}}U2s79qfemJ{O`<42i9v}ndKiyLP-r^L z!^y+T5@ZRVA*E`)d$0)qF2Qp6EG`*@3e)E-xVZ?ddPAKVy9OaG_wyvSlx!1N!Zfg5 z3J>@T7#ajy#S!B1k?vA7$uD^mBfXPFLI%vf$fMFD;cR?y5G?QrzB)))Ig0-ngjH}1 zYl1XBkD@C`$k9=u57T276yuPkN8T0isUR#D9w!s!w{e|gI$_b9%B*-R2pNEw5rRVa z5;lY=%`fvAtB0@PWC$wZtM~-xeGM;#sM9C$FCkhcr}(7Wuqh0JaGLB^atL8}m=OCU z`opCCbvz!1>a=eVGmo;;9R~`8Z_=SaztNJN>FI5AId(ddko^{#WLi{DW1UQ%&fr#= z()czqBATADU{4to;mJlw#q%;OhVS5WGE@p@$yl{s=E&AVFPQOPGGq$ph*ZZ%3mX*3 zf%E84XgOUVY7^d4p-OjsWY#wa(%@M{o3Y}jOF_R_K*x*#EA$+{R4b50yU-|T6DX)m^(J>SO2{nUc|*iRLe_PKSZ)G zp?ipm@-oIb@iOmFj_&zD;9y9(Le6URxyyz4$01k=SMkFkSheBD|1ShS)Li8!#7u4- z4kWi2WUhds8F+dX4@D`ipW>&Z1d7-2Y!oVl*GZvNKjkc0>ZT3N_rx3cF^LtvNeueE z4M~>F@hzei>hrZ(jgFWW=%r0bTgq6EKO;^iDJ)op+hek^;ICm^g^e(WmsDESKgV}e zx@mraAE|`Vx3NxxI@>Qvdl_jPJ2JVR=$P^=3~Eqa{A*(Ky7vaeD04D7M!S~2xsAl$ z!E+k5>o*BtWB6WJA@EFoiyv#`=v^$0L1n>pGGVN0y0U1;$D*P}`dsdJ=!rpj$qf?V zgU0W)#D-{Rr~h9g zN+_gq3J=an&f7*KQk1E7Lz(;IAmk4KZ>B!?-SjuG5 z75Ky~O?f5OPeN5`71yJ`L?WG{N`PQ;q7se)r5dY8=w7TL2^$_Ahn%&^YS$8lm+npn zw@H4rjtIOp3p41H*f{|;Yd0qiEG&!>lYSA#4yYo-Lw8mPWlHz6TO;h@1W;vR3qdVTVNLk zCZSQ-O%jDXw|ukF{ylU~fEAS)SOR--(Fmb$ACdF*xg)u0P8RMb8xP@+CJ24|Q5=TV zrUNOD#uJ@f!OMG)qzmZJc)em%oZbwF&^1Z&9?Y1ct=NalX($DeWO9wk5V%@DJ~jch F{{c{omv;aF delta 3362 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 Date: Fri, 4 Jan 2019 22:47:07 +0100 Subject: [PATCH 2/5] Typo --- TelegramUI/ChannelPermissionsController.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/TelegramUI/ChannelPermissionsController.swift b/TelegramUI/ChannelPermissionsController.swift index 8070cf33c3..53b44450bc 100644 --- a/TelegramUI/ChannelPermissionsController.swift +++ b/TelegramUI/ChannelPermissionsController.swift @@ -175,7 +175,7 @@ private enum ChannelPermissionsEntry: ItemListNodeEntry { case let .permissionsHeader(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) case let .permission(theme, _, title, value, rights, enabled): - return ItemListSwitchItem(theme: theme, title: title, value: value, type: .icon, enabled: enabled ?? true, sectionId: self.section, style: .blocks, updated: { value in + return ItemListSwitchItem(theme: theme, title: title, value: value, type: .icon, enableInteractiveChanges: enabled != nil, enabled: enabled ?? true, sectionId: self.section, style: .blocks, updated: { value in if let _ = enabled { arguments.updatePermission(rights, value) } else { @@ -348,7 +348,7 @@ private func channelPermissionsControllerEntries(presentationData: PresentationD var rightIndex: Int = 0 for rights in allGroupPermissionList { var enabled: Bool? = true - if channel.addressName != nil && !publicGroupRestrictedPermissions.contains(rights) { + if channel.addressName != nil && publicGroupRestrictedPermissions.contains(rights) { enabled = nil } entries.append(.permission(presentationData.theme, rightIndex, stringForGroupPermission(strings: presentationData.strings, right: rights), !effectiveRightsFlags.contains(rights), rights, enabled)) @@ -364,7 +364,7 @@ private func channelPermissionsControllerEntries(presentationData: PresentationD entries.append(.peerItem(presentationData.theme, presentationData.strings, presentationData.dateTimeFormat, presentationData.nameDisplayOrder, index, participant, ItemListPeerItemEditing(editable: true, editing: false, revealed: participant.peer.id == state.peerIdWithRevealedOptions), state.removingPeerId != participant.peer.id, true, effectiveRightsFlags)) index += 1 } - } else if let group = view.peers[view.peerId] as? TelegramGroup, let cachedData = view.cachedData as? CachedGroupData, let defaultBannedRights = group.defaultBannedRights { + } else if let group = view.peers[view.peerId] as? TelegramGroup, let _ = view.cachedData as? CachedGroupData, let defaultBannedRights = group.defaultBannedRights { let effectiveRightsFlags: TelegramChatBannedRightsFlags if let modifiedRightsFlags = state.modifiedRightsFlags { effectiveRightsFlags = modifiedRightsFlags @@ -442,7 +442,7 @@ public func channelPermissionsController(account: Account, peerId: PeerId, loadC let _ = (peerView.get() |> take(1) |> deliverOnMainQueue).start(next: { view in - if let channel = view.peers[peerId] as? TelegramChannel, let cachedData = view.cachedData as? CachedChannelData { + if let channel = view.peers[peerId] as? TelegramChannel, let _ = view.cachedData as? CachedChannelData { updateState { state in var state = state var effectiveRightsFlags: TelegramChatBannedRightsFlags @@ -472,7 +472,7 @@ public func channelPermissionsController(account: Account, peerId: PeerId, loadC updateDefaultRightsDisposable.set((updateDefaultChannelMemberBannedRights(account: account, peerId: peerId, rights: TelegramChatBannedRights(flags: completeRights(modifiedRightsFlags), untilDate: Int32.max)) |> deliverOnMainQueue).start()) } - } else if let group = view.peers[peerId] as? TelegramGroup, let cachedData = view.cachedData as? CachedGroupData { + } else if let group = view.peers[peerId] as? TelegramGroup, let _ = view.cachedData as? CachedGroupData { updateState { state in var state = state var effectiveRightsFlags: TelegramChatBannedRightsFlags From 62730b9c0b9fab50b6e398ad0bf6847959dbce16 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 6 Jan 2019 22:44:00 +0100 Subject: [PATCH 3/5] AccountManager API Change --- TelegramUI/ChannelMembersController.swift | 40 +- TelegramUI/ChatController.swift | 4 +- .../ChatRecentActionsHistoryTransition.swift | 8 +- TelegramUI/DebugAccountsController.swift | 29 +- TelegramUI/PresentationStrings.swift | 3520 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 98857 -> 99013 bytes 6 files changed, 1812 insertions(+), 1789 deletions(-) diff --git a/TelegramUI/ChannelMembersController.swift b/TelegramUI/ChannelMembersController.swift index 69bdc99e1a..3076efd1f5 100644 --- a/TelegramUI/ChannelMembersController.swift +++ b/TelegramUI/ChannelMembersController.swift @@ -336,40 +336,40 @@ public func channelMembersController(account: Account, peerId: PeerId) -> ViewCo let disabledIds = members?.compactMap({$0.peer.id}) ?? [] let contactsController = ContactMultiselectionController(account: account, mode: .peerSelection(searchChatList: false), options: [], filters: [.excludeSelf, .disable(disabledIds)]) - let addMembers: ([ContactListPeerId]) -> Signal = { members -> Signal in - let peerIds = members.compactMap { contact -> PeerId? in - switch contact { - case let .peer(peerId): - return peerId - default: - return nil - } - } - return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.addMembers(account: account, peerId: peerId, memberIds: peerIds) - } - addMembersDisposable.set((contactsController.result |> deliverOnMainQueue - |> mapToSignal { [weak contactsController] contacts -> Signal in + |> introduceError(AddChannelMemberError.self) + |> mapToSignal { [weak contactsController] contacts -> Signal in contactsController?.displayProgress = true - let signals = contacts.compactMap({ contact -> Signal? in + let signal = account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.addMembers(account: account, peerId: peerId, memberIds: contacts.compactMap({ contact -> PeerId? in switch contact { case let .peer(contactId): - return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.addMember(account: account, peerId: peerId, memberId: contactId) - |> ignoreValues - case .deviceContact: + return contactId + default: return nil } - }) + })) - return combineLatest(signals) + return signal |> ignoreValues |> deliverOnMainQueue |> afterCompleted { contactsController?.dismiss() } - }).start()) + }).start(error: { error in + let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } + let text: String + switch error { + case .limitExceeded: + text = presentationData.strings.Channel_ErrorAddTooMuch + case .generic: + text = presentationData.strings.Login_UnknownError + case .restricted: + text = presentationData.strings.Channel_ErrorAddBlocked + } + presentControllerImpl?(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) + })) presentControllerImpl?(contactsController, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) })) diff --git a/TelegramUI/ChatController.swift b/TelegramUI/ChatController.swift index 1437b50496..bd83bcb6aa 100644 --- a/TelegramUI/ChatController.swift +++ b/TelegramUI/ChatController.swift @@ -3785,9 +3785,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal actionSheet?.dismissAnimated() self?.presentContactPicker() })) - actionSheet.setItemGroups([ActionSheetItemGroup(items: [ - - ]), ActionSheetItemGroup(items: [ + actionSheet.setItemGroups([ActionSheetItemGroup(items: items), ActionSheetItemGroup(items: [ ActionSheetButtonItem(title: strongSelf.presentationData.strings.Common_Cancel, color: .accent, action: { [weak actionSheet] in actionSheet?.dismissAnimated() }) diff --git a/TelegramUI/ChatRecentActionsHistoryTransition.swift b/TelegramUI/ChatRecentActionsHistoryTransition.swift index f6414cd6aa..174e9382e9 100644 --- a/TelegramUI/ChatRecentActionsHistoryTransition.swift +++ b/TelegramUI/ChatRecentActionsHistoryTransition.swift @@ -767,8 +767,6 @@ struct ChatRecentActionsEntry: Comparable, Identifiable { var text: String = "" var entities: [MessageTextEntity] = [] - let newFlags = new.flags - var addedRights = new.flags var removedRights: TelegramChatBannedRightsFlags = [] addedRights = addedRights.subtracting(prev.flags) @@ -777,8 +775,6 @@ struct ChatRecentActionsEntry: Comparable, Identifiable { text += self.presentationData.strings.Channel_AdminLog_DefaultRestrictionsUpdated text += "\n" - let prevFlags = prev.flags - let order: [(TelegramChatBannedRightsFlags, String)] = [ (.banReadMessages, self.presentationData.strings.Channel_AdminLog_BanReadMessages), (.banSendMessages, self.presentationData.strings.Channel_AdminLog_BanSendMessages), @@ -786,6 +782,10 @@ struct ChatRecentActionsEntry: Comparable, Identifiable { (.banSendStickers, self.presentationData.strings.Channel_AdminLog_BanSendStickers), (.banSendGifs, self.presentationData.strings.Channel_AdminLog_BanSendGifs), (.banEmbedLinks, self.presentationData.strings.Channel_AdminLog_BanEmbedLinks), + (.banSendPolls, self.presentationData.strings.Channel_AdminLog_SendPolls), + (.banAddMembers, self.presentationData.strings.Channel_AdminLog_AddMembers), + (.banPinMessages, self.presentationData.strings.Channel_AdminLog_PinMessages), + (.banSendPolls, self.presentationData.strings.Channel_AdminLog_SendPolls) ] for (flag, string) in order { diff --git a/TelegramUI/DebugAccountsController.swift b/TelegramUI/DebugAccountsController.swift index c062ab9028..8f0f8a472a 100644 --- a/TelegramUI/DebugAccountsController.swift +++ b/TelegramUI/DebugAccountsController.swift @@ -105,10 +105,31 @@ public func debugAccountsController(account: Account, accountManager: AccountMan transaction.setCurrentId(id) }).start() }, loginNewAccount: { - let _ = accountManager.transaction({ transaction -> Void in - let id = transaction.createRecord([]) - transaction.setCurrentId(id) - }).start() + let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } + let controller = ActionSheetController(presentationTheme: presentationData.theme) + let dismissAction: () -> Void = { [weak controller] in + controller?.dismissAnimated() + } + controller.setItemGroups([ + ActionSheetItemGroup(items: [ + ActionSheetButtonItem(title: "Production", color: .accent, action: { + dismissAction() + let _ = accountManager.transaction({ transaction -> Void in + let id = transaction.createRecord([AccountEnvironmentAttribute(environment: .production)]) + transaction.setCurrentId(id) + }).start() + }), + ActionSheetButtonItem(title: "Test", color: .accent, action: { + dismissAction() + let _ = accountManager.transaction({ transaction -> Void in + let id = transaction.createRecord([AccountEnvironmentAttribute(environment: .test)]) + transaction.setCurrentId(id) + }).start() + }) + ]), + ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) + ]) + presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) }) let signal = combineLatest((account.applicationContext as! TelegramApplicationContext).presentationData, accountManager.accountRecords()) diff --git a/TelegramUI/PresentationStrings.swift b/TelegramUI/PresentationStrings.swift index 42ff2e510f..fcbffdd734 100644 --- a/TelegramUI/PresentationStrings.swift +++ b/TelegramUI/PresentationStrings.swift @@ -1310,2638 +1310,2642 @@ public final class PresentationStrings { public var Channel_Username_Help: String { return self._s[1036]! } public var Camera_Title: String { return self._s[1037]! } public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1039]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1040]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1041]! } - public var Conversation_RestrictedStickers: String { return self._s[1042]! } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[1044]! } - public var UserInfo_TelegramCall: String { return self._s[1046]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1047]! } - public var CreatePoll_OptionsHeader: String { return self._s[1048]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1049]! } - public var Passport_Identity_EditPersonalDetails: String { return self._s[1050]! } + public var Channel_AdminLog_SendPolls: String { return self._s[1040]! } + public var Channel_AdminLog_TitleAllEvents: 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[1051]!, self._r[1051]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1052]!, self._r[1052]!, [_1, _2, _3]) } - public var Settings_SaveEditedPhotos: String { return self._s[1052]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[1053]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1054]! } - public var Conversation_MessageDialogRetry: String { return self._s[1055]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[1056]! } - public var Group_Setup_TypeHeader: String { return self._s[1057]! } - public var Paint_RecentStickers: String { return self._s[1058]! } - public var PhotoEditor_GrainTool: String { return self._s[1059]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[1060]! } - public var EmptyGroupInfo_Line4: String { return self._s[1061]! } - public var Watch_AuthRequired: String { return self._s[1064]! } + 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[1065]! } public func Passport_Email_UseTelegramEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1066]!, self._r[1066]!, [_0]) + return formatWithArgumentRanges(self._s[1067]!, self._r[1067]!, [_0]) } public func CHANNEL_MESSAGE_PHOTOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1067]!, self._r[1067]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1068]!, self._r[1068]!, [_1, _2]) } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1068]! } - public var ChannelIntro_Text: String { return self._s[1069]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[1070]! } - public var GroupPermission_NoSendMedia: String { return self._s[1071]! } - public var Calls_AddTab: String { return self._s[1072]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[1073]! } - public var Channel_AdminLog_EmptyFilterText: String { return self._s[1074]! } - public var Notification_MessageLifetime1d: String { return self._s[1075]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1076]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1077]! } - public var Passport_Identity_GenderFemale: String { return self._s[1078]! } - public var BlockedUsers_BlockTitle: String { return self._s[1079]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1069]! } + public var ChannelIntro_Text: String { return self._s[1070]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[1071]! } + public var GroupPermission_NoSendMedia: String { return self._s[1072]! } + public var Calls_AddTab: String { return self._s[1073]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[1074]! } + public var Channel_AdminLog_EmptyFilterText: String { return self._s[1075]! } + public var Notification_MessageLifetime1d: String { return self._s[1076]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1077]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1078]! } + public var Passport_Identity_GenderFemale: String { return self._s[1079]! } + public var BlockedUsers_BlockTitle: String { return self._s[1080]! } public func MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1080]!, self._r[1080]!, [_1]) + return formatWithArgumentRanges(self._s[1081]!, self._r[1081]!, [_1]) } - public var Weekday_Yesterday: String { return self._s[1081]! } - public var AutoNightTheme_Scheduled: String { return self._s[1082]! } + public var Weekday_Yesterday: String { return self._s[1082]! } + public var AutoNightTheme_Scheduled: String { return self._s[1083]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1083]!, self._r[1083]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[1084]!, self._r[1084]!, [_1, _2, _3, _4, _5, _6]) } - public var PrivacyPolicy_DeclineDeleteNow: 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 var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1085]! } + public var CreatePoll_Create: String { return self._s[1086]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1087]! } public func Notification_CallFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1087]!, self._r[1087]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1088]!, self._r[1088]!, [_1, _2]) } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1088]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[1089]! } - public var Preview_OpenInInstagram: String { return self._s[1090]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1091]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1089]! } + 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 CHANNEL_MESSAGE_GIF_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1092]!, self._r[1092]!, [_1]) + return formatWithArgumentRanges(self._s[1093]!, self._r[1093]!, [_1]) } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1093]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1094]! } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1094]!, self._r[1094]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1095]!, self._r[1095]!, [_1, _2]) } - public var NetworkUsageSettings_TotalSection: String { return self._s[1095]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1096]! } public func PINNED_PHOTO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1096]!, self._r[1096]!, [_1]) + return formatWithArgumentRanges(self._s[1097]!, self._r[1097]!, [_1]) } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1097]! } - public var Wallpaper_PhotoLibrary: String { return self._s[1099]! } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1100]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1098]! } + public var Wallpaper_PhotoLibrary: String { return self._s[1100]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1101]! } public func MESSAGE_PHOTO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1101]!, self._r[1101]!, [_1]) + return formatWithArgumentRanges(self._s[1102]!, self._r[1102]!, [_1]) } - public var FastTwoStepSetup_HintSection: 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 var Settings_About: String { return self._s[1128]! } + public var FastTwoStepSetup_HintSection: String { return self._s[1103]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1104]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[1105]! } + public var GroupInfo_ActionPromote: String { return self._s[1106]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[1107]! } + public var GroupInfo_Permissions_Title: String { return self._s[1108]! } + public var Permissions_ContactsText_v0: String { return self._s[1109]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1112]! } + public var Passport_FieldEmailHelp: String { return self._s[1113]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[1114]! } + public var Weekday_ShortSaturday: String { return self._s[1115]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[1116]! } + public var Watch_Conversation_UserInfo: String { return self._s[1117]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1118]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[1119]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[1120]! } + public var PhotoEditor_VignetteTool: String { return self._s[1121]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1122]! } + public var Passport_Language_et: String { return self._s[1123]! } + public var Passport_Language_bg: String { return self._s[1125]! } + public var Stickers_NoStickersFound: String { return self._s[1127]! } + public var Settings_About: String { return self._s[1129]! } public func CHAT_MESSAGE_POLL_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1129]!, self._r[1129]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1130]!, self._r[1130]!, [_1, _2]) } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1130]!, self._r[1130]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1131]!, self._r[1131]!, [_0, _1, _2]) } - public var KeyCommand_NewMessage: String { return self._s[1132]! } - public var Group_ErrorAddBlocked: String { return self._s[1133]! } + public var KeyCommand_NewMessage: String { return self._s[1133]! } + public var Group_ErrorAddBlocked: String { return self._s[1134]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1134]!, self._r[1134]!, [_0]) + return formatWithArgumentRanges(self._s[1135]!, self._r[1135]!, [_0]) } - 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 var Map_LocationTitle: String { return self._s[1136]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1137]! } + public var Cache_ClearProgress: String { return self._s[1138]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1138]!, self._r[1138]!, [_0]) + return formatWithArgumentRanges(self._s[1139]!, self._r[1139]!, [_0]) } - public var GroupRemoved_AddToGroup: String { return self._s[1139]! } - public var Passport_UpdateRequiredError: String { return self._s[1140]! } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[1142]! } - public var Passport_Identity_MainPageHelp: String { return self._s[1143]! } - public var Conversation_StatusKickedFromGroup: String { return self._s[1144]! } - public var Passport_Language_ka: String { return self._s[1145]! } - public var Call_Decline: String { return self._s[1146]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[1147]! } + public var GroupRemoved_AddToGroup: String { return self._s[1140]! } + public var Passport_UpdateRequiredError: String { return self._s[1141]! } + 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[1150]!, self._r[1150]!, [_0]) + return formatWithArgumentRanges(self._s[1151]!, self._r[1151]!, [_0]) } public func CHANNEL_MESSAGE_POLL_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1151]!, self._r[1151]!, [_1]) + return formatWithArgumentRanges(self._s[1152]!, self._r[1152]!, [_1]) } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1152]!, self._r[1152]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1153]!, self._r[1153]!, [_1, _2]) } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1153]! } - public var Passport_DeletePassport: String { return self._s[1155]! } - public var Privacy_Calls_P2PAlways: String { return self._s[1156]! } - public var Month_ShortDecember: String { return self._s[1157]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1159]! } + 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[1160]!, self._r[1160]!, [_0]) + return formatWithArgumentRanges(self._s[1161]!, self._r[1161]!, [_0]) } - public var Channel_Stickers_Searching: String { return self._s[1161]! } - public var Conversation_EncryptedDescription1: String { return self._s[1162]! } - public var Conversation_EncryptedDescription2: String { return self._s[1163]! } - public var Conversation_EncryptedDescription3: String { return self._s[1164]! } - public var PhotoEditor_SharpenTool: String { return self._s[1165]! } + 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 func ENCRYPTED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1166]!, self._r[1166]!, [_1]) + return formatWithArgumentRanges(self._s[1167]!, self._r[1167]!, [_1]) } - public var Conversation_EncryptedDescription4: String { return self._s[1168]! } - public var Channel_Members_AddMembers: String { return self._s[1169]! } + public var Conversation_EncryptedDescription4: String { return self._s[1169]! } + public var Channel_Members_AddMembers: String { return self._s[1170]! } public func CHANNEL_MESSAGE_GAME_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1170]!, self._r[1170]!, [_1, _2]) - } - public func CHAT_MESSAGE_GEOLIVE_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1171]!, self._r[1171]!, [_1, _2]) } - public var Weekday_Friday: String { return self._s[1172]! } - public var Privacy_ContactsSync: String { return self._s[1173]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1174]! } + public func CHAT_MESSAGE_GEOLIVE_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1172]!, self._r[1172]!, [_1, _2]) + } + public var Weekday_Friday: String { return self._s[1173]! } + public var Privacy_ContactsSync: String { return self._s[1174]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1175]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1175]!, self._r[1175]!, [_0]) + return formatWithArgumentRanges(self._s[1176]!, self._r[1176]!, [_0]) } - public var GroupInfo_Permissions_Removed: String { return self._s[1176]! } - public var Passport_Identity_GenderMale: String { return self._s[1177]! } + public var GroupInfo_Permissions_Removed: String { return self._s[1177]! } + public var Passport_Identity_GenderMale: String { return self._s[1178]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1178]!, self._r[1178]!, [_0]) + return formatWithArgumentRanges(self._s[1179]!, self._r[1179]!, [_0]) } - public var Notifications_PermissionsKeepDisabled: String { return self._s[1179]! } - public var Conversation_JumpToDate: String { return self._s[1180]! } - public var Contacts_GlobalSearch: String { return self._s[1181]! } - public var AutoDownloadSettings_ResetHelp: String { return self._s[1182]! } - public var Profile_MessageLifetime1d: String { return self._s[1183]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[1180]! } + public var Conversation_JumpToDate: String { return self._s[1181]! } + public var Contacts_GlobalSearch: String { return self._s[1182]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[1183]! } + public var Profile_MessageLifetime1d: String { return self._s[1184]! } public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1184]!, self._r[1184]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1185]!, self._r[1185]!, [_1, _2]) } - public var StickerPack_BuiltinPackName: String { return self._s[1187]! } - public var Passport_InfoTitle: String { return self._s[1189]! } - public var Notifications_PermissionsUnreachableText: String { return self._s[1190]! } + public var StickerPack_BuiltinPackName: String { return self._s[1188]! } + public var Passport_InfoTitle: String { return self._s[1190]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[1191]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1194]!, self._r[1194]!, [_0]) + return formatWithArgumentRanges(self._s[1195]!, self._r[1195]!, [_0]) } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1195]! } - public var Profile_BotInfo: String { return self._s[1196]! } - public var Watch_Compose_CreateMessage: String { return self._s[1197]! } - public var Month_ShortNovember: String { return self._s[1198]! } + 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 func PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1199]!, self._r[1199]!, [_1]) - } - public func ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1200]!, self._r[1200]!, [_1]) } - 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 ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1201]!, self._r[1201]!, [_1]) + } + public var Passport_Identity_TranslationsHelp: String { return self._s[1202]! } + public var NotificationsSound_Chime: String { return self._s[1203]! } + public var Passport_Language_ko: String { return self._s[1205]! } + public var InviteText_URL: String { return self._s[1206]! } + public var TextFormat_Monospace: String { return self._s[1207]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1207]!, self._r[1207]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1208]!, self._r[1208]!, [_1, _2, _3]) } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1208]!, self._r[1208]!, [_0]) + return formatWithArgumentRanges(self._s[1209]!, self._r[1209]!, [_0]) } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1209]!, self._r[1209]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1210]!, self._r[1210]!, [_1, _2]) } - 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 var Passport_InfoLearnMore: String { return self._s[1212]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[1213]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[1214]! } + public var Your_card_has_expired: String { return self._s[1215]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[1216]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1217]! } + public var Conversation_Report: String { return self._s[1220]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1221]! } + public var Notification_MessageLifetime1m: String { return self._s[1222]! } + public var Privacy_ContactsTitle: String { return self._s[1223]! } + public var Conversation_ShareMyContactInfo: String { return self._s[1224]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1225]! } + public var Channel_Members_Title: String { return self._s[1226]! } + public var Map_OpenInWaze: String { return self._s[1227]! } + public var Login_PhoneBannedError: String { return self._s[1228]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1228]!, self._r[1228]!, [_0]) + return formatWithArgumentRanges(self._s[1229]!, self._r[1229]!, [_0]) } public func MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1229]!, self._r[1229]!, [_1]) + return formatWithArgumentRanges(self._s[1230]!, self._r[1230]!, [_1]) } - public var Group_Management_AddModeratorHelp: String { return self._s[1230]! } - public var Common_OK: String { return self._s[1231]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1232]! } - public var Cache_Music: String { return self._s[1233]! } + public var Group_Management_AddModeratorHelp: String { return self._s[1231]! } + public var Common_OK: String { return self._s[1232]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1233]! } + public var Cache_Music: String { return self._s[1234]! } public func CHAT_TITLE_EDITED_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1234]!, self._r[1234]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1235]!, self._r[1235]!, [_1, _2]) } public func PINNED_AUDIO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1235]!, self._r[1235]!, [_1]) + return formatWithArgumentRanges(self._s[1236]!, self._r[1236]!, [_1]) } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1236]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1237]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1237]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1238]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1238]!, self._r[1238]!, [_0]) + return formatWithArgumentRanges(self._s[1239]!, self._r[1239]!, [_0]) } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1240]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[1241]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1243]! } - public var State_ConnectingToProxyInfo: String { return self._s[1244]! } - public var Message_VideoMessage: String { return self._s[1246]! } - public var ChannelInfo_DeleteChannel: String { return self._s[1247]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1241]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[1242]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1244]! } + public var State_ConnectingToProxyInfo: String { return self._s[1245]! } + public var Message_VideoMessage: String { return self._s[1247]! } + public var ChannelInfo_DeleteChannel: String { return self._s[1248]! } public func CHAT_MESSAGE_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1248]!, self._r[1248]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1249]!, self._r[1249]!, [_1, _2]) } - public var ContactInfo_PhoneLabelOther: String { return self._s[1249]! } - public var Channel_EditAdmin_CannotEdit: String { return self._s[1250]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[1251]! } - public var Activity_RecordingAudio: String { return self._s[1252]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1253]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[1250]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[1251]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[1252]! } + public var Activity_RecordingAudio: String { return self._s[1253]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1254]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1255]!, self._r[1255]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1256]!, self._r[1256]!, [_0, _1]) } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1258]!, self._r[1258]!, [_0]) + return formatWithArgumentRanges(self._s[1259]!, self._r[1259]!, [_0]) } - public var Conversation_ApplyLocalization: String { return self._s[1259]! } - public var UserInfo_AddPhone: String { return self._s[1260]! } - public var Map_ShareLiveLocationHelp: String { return self._s[1261]! } + public var Conversation_ApplyLocalization: String { return self._s[1260]! } + public var UserInfo_AddPhone: String { return self._s[1261]! } + public var Map_ShareLiveLocationHelp: String { return self._s[1262]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1262]!, self._r[1262]!, [_0]) + return formatWithArgumentRanges(self._s[1263]!, self._r[1263]!, [_0]) } - public var Passport_Scans: String { return self._s[1264]! } - public var BlockedUsers_Unblock: String { return self._s[1265]! } - public var Channel_Management_LabelCreator: String { return self._s[1266]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1267]! } + public var Passport_Scans: String { return self._s[1265]! } + public var BlockedUsers_Unblock: String { return self._s[1266]! } + public var Channel_Management_LabelCreator: String { return self._s[1267]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1268]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1268]!, self._r[1268]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1269]!, self._r[1269]!, [_0, _1, _2]) } - public var Login_PhoneNumberHelp: String { return self._s[1269]! } - public var LastSeen_ALongTimeAgo: String { return self._s[1270]! } - public var Channel_AdminLog_CanPinMessages: String { return self._s[1271]! } - public var ChannelIntro_CreateChannel: String { return self._s[1272]! } - public var Conversation_UnreadMessages: String { return self._s[1273]! } - public var Channel_AdminLog_EmptyText: String { return self._s[1274]! } - public var Notification_GroupActivated: String { return self._s[1275]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[1276]! } + public var Login_PhoneNumberHelp: String { return self._s[1270]! } + public var LastSeen_ALongTimeAgo: String { return self._s[1271]! } + public var Channel_AdminLog_CanPinMessages: String { return self._s[1272]! } + public var ChannelIntro_CreateChannel: String { return self._s[1273]! } + public var Conversation_UnreadMessages: String { return self._s[1274]! } + public var Channel_AdminLog_EmptyText: String { return self._s[1275]! } + public var Notification_GroupActivated: String { return self._s[1276]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[1277]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1277]!, self._r[1277]!, [_0]) + return formatWithArgumentRanges(self._s[1278]!, self._r[1278]!, [_0]) } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1278]!, self._r[1278]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1279]!, self._r[1279]!, [_0, _1]) } - public var GroupInfo_ConvertToSupergroup: String { return self._s[1280]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[1281]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1281]!, self._r[1281]!, [_0]) + return formatWithArgumentRanges(self._s[1282]!, self._r[1282]!, [_0]) } - public var Document_TargetConfirmationFormat: 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[1283]!, self._r[1283]!, [_0]) + return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_0]) } - public var Contacts_SortByName: String { return self._s[1284]! } + 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[1286]!, self._r[1286]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1287]!, self._r[1287]!, [_1, _2, _3]) } - public var Conversation_ClearSelfHistory: String { return self._s[1287]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1288]! } - public var Stickers_SuggestNone: String { return self._s[1289]! } - public var ChatSettings_Cache: String { return self._s[1290]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1291]! } - public var Media_ShareThisPhoto: String { return self._s[1292]! } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[1293]! } - public var Conversation_ContextMenuCopyLink: String { return self._s[1294]! } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1295]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1296]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[1297]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1298]! } - public var Map_OpenIn: String { return self._s[1299]! } + 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 Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1299]! } + public var Map_OpenIn: String { return self._s[1300]! } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1302]!, self._r[1302]!, [_0]) + return formatWithArgumentRanges(self._s[1303]!, self._r[1303]!, [_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 Watch_Suggestion_BRB: String { return self._s[1310]! } - public var Contacts_PermissionsTitle: String { return self._s[1311]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[1312]! } - public var Conversation_RestrictedInline: String { return self._s[1313]! } - public var StickerPack_ViewPack: String { return self._s[1315]! } + public var MessagePoll_LabelClosed: String { return self._s[1304]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1306]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[1307]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1308]! } + public var Login_SelectCountry_Title: String { return self._s[1309]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1310]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[1311]! } + public var Watch_Suggestion_BRB: String { return self._s[1312]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[1313]! } + public var Contacts_PermissionsTitle: String { return self._s[1314]! } + public var Conversation_RestrictedInline: String { return self._s[1315]! } + public var StickerPack_ViewPack: String { return self._s[1317]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1316]!, self._r[1316]!, [_0]) + return formatWithArgumentRanges(self._s[1318]!, self._r[1318]!, [_0]) } - public var Compose_NewChannel: String { return self._s[1318]! } - public var Channel_Info_Stickers: String { return self._s[1322]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[1323]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1324]! } - public var Passport_DeletePersonalDetails: String { return self._s[1325]! } - public var Conversation_SearchNoResults: String { return self._s[1327]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1328]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1329]! } - public var Login_Code: String { return self._s[1330]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1331]! } - public var Weekday_ShortThursday: String { return self._s[1332]! } - public var Resolve_ErrorNotFound: String { return self._s[1334]! } - public var LastSeen_Offline: String { return self._s[1335]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1336]! } - public var Channel_AdminLog_CanChangeInviteLink: String { return self._s[1337]! } - public var GroupInfo_Title: String { return self._s[1338]! } - public var NotificationsSound_Note: String { return self._s[1339]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[1340]! } - public var Watch_Message_Poll: String { return self._s[1341]! } - public var Privacy_Calls: String { return self._s[1342]! } + public var Compose_NewChannel: String { return self._s[1320]! } + public var Channel_Info_Stickers: String { return self._s[1324]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[1325]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1326]! } + public var Passport_DeletePersonalDetails: String { return self._s[1327]! } + public var Conversation_SearchNoResults: String { return self._s[1329]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1330]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1331]! } + public var Login_Code: String { return self._s[1332]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1333]! } + public var Weekday_ShortThursday: String { return self._s[1334]! } + public var Resolve_ErrorNotFound: String { return self._s[1336]! } + public var LastSeen_Offline: String { return self._s[1337]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1338]! } + public var Channel_AdminLog_CanChangeInviteLink: String { return self._s[1339]! } + public var GroupInfo_Title: String { return self._s[1340]! } + public var NotificationsSound_Note: String { return self._s[1341]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[1342]! } + public var Watch_Message_Poll: String { return self._s[1343]! } + public var Privacy_Calls: String { return self._s[1344]! } public func CHANNEL_MESSAGE_PHOTO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1343]!, self._r[1343]!, [_1]) + return formatWithArgumentRanges(self._s[1345]!, self._r[1345]!, [_1]) } - 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 Month_ShortAugust: String { return self._s[1346]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[1347]! } + public var Notifications_Reset: String { return self._s[1348]! } + public var Conversation_Pin: String { return self._s[1349]! } + public var Passport_Language_lv: String { return self._s[1350]! } + public var BlockedUsers_Info: String { return self._s[1351]! } + public var Watch_Conversation_Unblock: String { return self._s[1354]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1353]!, self._r[1353]!, [_0]) + return formatWithArgumentRanges(self._s[1355]!, self._r[1355]!, [_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[1356]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1357]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1356]!, self._r[1356]!, [_0]) + return formatWithArgumentRanges(self._s[1358]!, self._r[1358]!, [_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 Channel_AdminLogFilter_AdminsTitle: String { return self._s[1359]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[1360]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1361]! } public func MESSAGE_CONTACT_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1360]!, self._r[1360]!, [_1]) + return formatWithArgumentRanges(self._s[1362]!, self._r[1362]!, [_1]) } - public var Passport_Address_EditBankStatement: String { return self._s[1361]! } - public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1362]! } - public var ShareMenu_Comment: String { return self._s[1363]! } - public var Permissions_ContactsTitle_v0: String { return self._s[1364]! } - public var Notifications_PermissionsTitle: String { return self._s[1365]! } - public var GroupPermission_NoSendLinks: String { return self._s[1366]! } - public var Settings_Support: String { return self._s[1367]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1368]! } + public var Passport_Address_EditBankStatement: String { return self._s[1363]! } + public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1364]! } + public var ShareMenu_Comment: String { return self._s[1365]! } + public var Permissions_ContactsTitle_v0: String { return self._s[1366]! } + public var Notifications_PermissionsTitle: String { return self._s[1367]! } + public var GroupPermission_NoSendLinks: String { return self._s[1368]! } + public var Settings_Support: String { return self._s[1369]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1370]! } public func CHAT_RETURNED_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1369]!, self._r[1369]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1371]!, self._r[1371]!, [_1, _2]) } - public var GroupPermission_ApplyAlertAction: String { return self._s[1370]! } - public var Channel_AdminLog_BanSendGifs: String { return self._s[1371]! } - public var Watch_Stickers_StickerPacks: String { return self._s[1372]! } - public var Common_Select: String { return self._s[1374]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1375]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1377]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1378]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[1379]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1380]! } - public var Widget_AuthRequired: String { return self._s[1381]! } - public var Camera_FlashOn: String { return self._s[1382]! } - public var Channel_Stickers_NotFoundHelp: String { return self._s[1383]! } - public var Watch_Suggestion_OK: String { return self._s[1384]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[1372]! } + public var Channel_AdminLog_BanSendGifs: String { return self._s[1373]! } + public var Watch_Stickers_StickerPacks: String { return self._s[1374]! } + public var Common_Select: String { return self._s[1376]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1377]! } + 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[1386]!, self._r[1386]!, [_0]) + return formatWithArgumentRanges(self._s[1388]!, self._r[1388]!, [_0]) } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1387]!, self._r[1387]!, [_0]) + return formatWithArgumentRanges(self._s[1389]!, self._r[1389]!, [_0]) } - public var DialogList_AdLabel: String { return self._s[1388]! } - public var WatchRemote_NotificationText: String { return self._s[1389]! } - public var Conversation_ReportSpam: String { return self._s[1390]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[1392]! } - public var PhoneLabel_Title: String { return self._s[1393]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[1394]! } - public var Notifications_ExceptionsTitle: String { return self._s[1395]! } + public var DialogList_AdLabel: String { return self._s[1390]! } + public var WatchRemote_NotificationText: String { return self._s[1391]! } + public var Conversation_ReportSpam: String { return self._s[1392]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[1394]! } + public var PhoneLabel_Title: String { return self._s[1395]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[1396]! } + public var Notifications_ExceptionsTitle: String { return self._s[1397]! } public func CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1396]!, self._r[1396]!, [_1]) + return formatWithArgumentRanges(self._s[1398]!, self._r[1398]!, [_1]) } - public var Notifications_AlertTones: String { return self._s[1397]! } - public var Call_ReportIncludeLogDescription: String { return self._s[1398]! } + public var Notifications_AlertTones: String { return self._s[1399]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1400]! } public func CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1399]!, self._r[1399]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1401]!, self._r[1401]!, [_1, _2, _3]) } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1400]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[1402]! } - public var ReportPeer_ReasonOther: String { return self._s[1403]! } - public var KeyCommand_ScrollDown: String { return self._s[1405]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1402]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[1404]! } + public var ReportPeer_ReasonOther: String { return self._s[1405]! } + public var KeyCommand_ScrollDown: String { return self._s[1407]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1406]!, self._r[1406]!, [_0]) + return formatWithArgumentRanges(self._s[1408]!, self._r[1408]!, [_0]) } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1407]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1408]! } - public var AuthSessions_LogOut: String { return self._s[1409]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1409]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1410]! } + public var AuthSessions_LogOut: String { return self._s[1411]! } public func CHAT_PHOTO_EDITED_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1410]!, self._r[1410]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1412]!, self._r[1412]!, [_1, _2]) } - public var Passport_Identity_TypeInternalPassport: String { return self._s[1411]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1412]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[1413]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1414]! } public func CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1413]!, self._r[1413]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1415]!, self._r[1415]!, [_1, _2]) } - public var Passport_Phone_Title: String { return self._s[1414]! } - public var Settings_PhoneNumber: String { return self._s[1415]! } - public var NotificationsSound_Alert: String { return self._s[1416]! } - public var PhotoEditor_CurvesTool: String { return self._s[1418]! } - public var Checkout_PaymentMethod: String { return self._s[1420]! } - 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 var Passport_Phone_Title: String { return self._s[1416]! } + public var Settings_PhoneNumber: String { return self._s[1417]! } + public var NotificationsSound_Alert: String { return self._s[1418]! } + public var PhotoEditor_CurvesTool: String { return self._s[1420]! } + public var Checkout_PaymentMethod: String { return self._s[1422]! } + public var Contacts_AccessDeniedError: String { return self._s[1423]! } + public var Camera_PhotoMode: String { return self._s[1426]! } + public var Passport_Address_AddUtilityBill: String { return self._s[1427]! } + public var CallSettings_OnMobile: String { return self._s[1428]! } + public var Tour_Text2: String { return self._s[1429]! } public func MESSAGE_STICKER_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1429]!, self._r[1429]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1431]!, self._r[1431]!, [_1, _2]) } - 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 var DialogList_EncryptionProcessing: String { return self._s[1432]! } + public var Permissions_Skip: String { return self._s[1433]! } + public var SecretImage_Title: String { return self._s[1434]! } + public var Watch_MessageView_Title: String { return self._s[1435]! } + public var AttachmentMenu_Poll: String { return self._s[1436]! } public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1435]!, self._r[1435]!, [_0]) + return formatWithArgumentRanges(self._s[1437]!, self._r[1437]!, [_0]) } - public var Notification_CallCanceled: String { return self._s[1436]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1437]! } + public var Notification_CallCanceled: String { return self._s[1438]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1439]! } public func MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1438]!, self._r[1438]!, [_1]) + return formatWithArgumentRanges(self._s[1440]!, self._r[1440]!, [_1]) } public func CHAT_JOINED_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1439]!, self._r[1439]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1441]!, self._r[1441]!, [_1, _2]) } - public var Settings_ProxyConnecting: String { return self._s[1440]! } - public var Profile_MessageLifetime5s: String { return self._s[1442]! } - public var Username_InvalidCharacters: String { return self._s[1443]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[1444]! } + public var Settings_ProxyConnecting: String { return self._s[1442]! } + public var Profile_MessageLifetime5s: String { return self._s[1444]! } + public var Username_InvalidCharacters: String { return self._s[1445]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[1446]! } public func CHAT_MESSAGE_GAME_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1445]!, self._r[1445]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1447]!, self._r[1447]!, [_1, _2, _3]) } - public var Notification_CreatedChannel: String { return self._s[1447]! } - public var Passcode_AppLockedAlert: String { return self._s[1449]! } - public var Contacts_TopSection: String { return self._s[1450]! } + public var Notification_CreatedChannel: String { return self._s[1449]! } + public var Passcode_AppLockedAlert: String { return self._s[1451]! } + public var Contacts_TopSection: String { return self._s[1452]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1451]!, self._r[1451]!, [_0]) + return formatWithArgumentRanges(self._s[1453]!, self._r[1453]!, [_0]) } public func CHAT_MESSAGE_DOC_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1452]!, self._r[1452]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1454]!, self._r[1454]!, [_1, _2]) } - 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 var ReportPeer_ReasonSpam: String { return self._s[1455]! } + public var UserInfo_TapToCall: String { return self._s[1456]! } + public var Common_Search: String { return self._s[1458]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1459]! } + public var Message_InvoiceLabel: String { return self._s[1460]! } + public var Conversation_InputTextPlaceholder: String { return self._s[1461]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1462]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1461]!, self._r[1461]!, [_0]) + return formatWithArgumentRanges(self._s[1463]!, self._r[1463]!, [_0]) } public func MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1462]!, self._r[1462]!, [_1]) + return formatWithArgumentRanges(self._s[1464]!, self._r[1464]!, [_1]) } - public var Conversation_Info: String { return self._s[1463]! } - public var Login_InfoDeletePhoto: String { return self._s[1464]! } - public var Passport_Language_vi: String { return self._s[1466]! } - public var Conversation_Search: String { return self._s[1467]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1468]! } + public var Conversation_Info: String { return self._s[1465]! } + public var Login_InfoDeletePhoto: String { return self._s[1466]! } + public var Passport_Language_vi: String { return self._s[1468]! } + public var Conversation_Search: String { return self._s[1469]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1470]! } public func MESSAGE_AUDIO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1469]!, self._r[1469]!, [_1]) + return formatWithArgumentRanges(self._s[1471]!, self._r[1471]!, [_1]) } - public var ReportPeer_ReasonPornography: String { return self._s[1470]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1471]! } + public var ReportPeer_ReasonPornography: String { return self._s[1472]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1473]! } public func CHAT_MESSAGE_PHOTO_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1472]!, self._r[1472]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1474]!, self._r[1474]!, [_1, _2]) } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1473]! } - public var Map_LiveLocationGroupDescription: String { return self._s[1474]! } - public var Channel_Setup_TypeHeader: String { return self._s[1475]! } - public var AuthSessions_LoggedIn: String { return self._s[1476]! } - public var Login_SmsRequestState3: String { return self._s[1477]! } - public var Passport_Address_EditUtilityBill: String { return self._s[1478]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1479]! } - public var Channel_Edit_LinkItem: String { return self._s[1480]! } - public var Privacy_Calls_P2PNever: String { return self._s[1481]! } - public var Conversation_AddToReadingList: String { return self._s[1483]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1475]! } + public var Map_LiveLocationGroupDescription: String { return self._s[1476]! } + public var Channel_Setup_TypeHeader: String { return self._s[1477]! } + public var AuthSessions_LoggedIn: String { return self._s[1478]! } + public var Login_SmsRequestState3: String { return self._s[1479]! } + public var Passport_Address_EditUtilityBill: String { return self._s[1480]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1481]! } + public var Channel_Edit_LinkItem: String { return self._s[1482]! } + public var Privacy_Calls_P2PNever: String { return self._s[1483]! } + public var Conversation_AddToReadingList: String { return self._s[1485]! } public func MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1484]!, self._r[1484]!, [_1]) + return formatWithArgumentRanges(self._s[1486]!, self._r[1486]!, [_1]) } - public var Message_Animation: String { return self._s[1485]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1486]! } - public var Map_Unknown: String { return self._s[1487]! } - public var Call_StatusRequesting: String { return self._s[1488]! } + public var Message_Animation: String { return self._s[1487]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1488]! } + public var Map_Unknown: String { return self._s[1489]! } + public var Call_StatusRequesting: String { return self._s[1490]! } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1489]!, self._r[1489]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1491]!, self._r[1491]!, [_1, _2]) } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1490]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1491]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1492]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1493]! } public func MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1492]!, self._r[1492]!, [_1]) + return formatWithArgumentRanges(self._s[1494]!, self._r[1494]!, [_1]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1493]!, self._r[1493]!, [_0]) + return formatWithArgumentRanges(self._s[1495]!, self._r[1495]!, [_0]) } - public var Update_Skip: String { return self._s[1494]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1495]! } - public var Message_PinnedPollMessage: String { return self._s[1496]! } - public var BlockedUsers_Title: String { return self._s[1497]! } - public var Weekday_Monday: String { return self._s[1498]! } - public var Username_CheckingUsername: String { return self._s[1499]! } - public var NotificationsSound_Bell: String { return self._s[1500]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1501]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1502]! } - public var ChatSettings_Groups: String { return self._s[1503]! } - public var Your_card_was_declined: String { return self._s[1504]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1506]! } - public var ChatList_Unmute: String { return self._s[1507]! } + public var Update_Skip: String { return self._s[1496]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1497]! } + public var Message_PinnedPollMessage: String { return self._s[1498]! } + public var BlockedUsers_Title: String { return self._s[1499]! } + public var Weekday_Monday: String { return self._s[1500]! } + public var Username_CheckingUsername: String { return self._s[1501]! } + public var NotificationsSound_Bell: String { return self._s[1502]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1503]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1504]! } + public var ChatSettings_Groups: String { return self._s[1505]! } + public var Your_card_was_declined: String { return self._s[1506]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1508]! } + public var ChatList_Unmute: String { return self._s[1509]! } public func PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1508]!, self._r[1508]!, [_1]) + return formatWithArgumentRanges(self._s[1510]!, self._r[1510]!, [_1]) } - public var PhotoEditor_CurvesAll: String { return self._s[1509]! } - public var Weekday_ShortTuesday: String { return self._s[1510]! } - public var DialogList_Read: String { return self._s[1511]! } + public var PhotoEditor_CurvesAll: String { return self._s[1511]! } + public var Weekday_ShortTuesday: String { return self._s[1512]! } + public var DialogList_Read: String { return self._s[1513]! } public func PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1512]!, self._r[1512]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1514]!, self._r[1514]!, [_1, _2]) } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1513]! } - public var Passport_Identity_Gender: String { return self._s[1514]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1515]! } + public var Passport_Identity_Gender: String { return self._s[1516]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1515]!, self._r[1515]!, [_0]) + return formatWithArgumentRanges(self._s[1517]!, self._r[1517]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1516]! } + public var Target_SelectGroup: String { return self._s[1518]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1518]!, self._r[1518]!, [_0]) + return formatWithArgumentRanges(self._s[1520]!, self._r[1520]!, [_0]) } - public var Passport_Language_en: String { return self._s[1519]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1520]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1521]! } + public var Passport_Language_en: String { return self._s[1521]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1522]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1523]! } public func AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1522]!, self._r[1522]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1524]!, self._r[1524]!, [_1, _2]) } - public var Checkout_NewCard_PaymentCard: String { return self._s[1524]! } - public var Login_InfoHelp: String { return self._s[1525]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1526]! } - public var SocksProxySetup_AddProxy: String { return self._s[1529]! } - public var CreatePoll_Title: String { return self._s[1530]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1531]! } - public var UserInfo_GroupsInCommon: String { return self._s[1532]! } - public var Call_AudioRouteHide: String { return self._s[1533]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1535]! } - public var TextFormat_Bold: String { return self._s[1536]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1537]! } - public var Notifications_Title: String { return self._s[1538]! } - public var Group_Username_InvalidTooShort: String { return self._s[1539]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1540]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1526]! } + public var Login_InfoHelp: String { return self._s[1527]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1528]! } + public var SocksProxySetup_AddProxy: String { return self._s[1531]! } + public var CreatePoll_Title: String { return self._s[1532]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1533]! } + public var UserInfo_GroupsInCommon: String { return self._s[1534]! } + public var Call_AudioRouteHide: String { return self._s[1535]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1537]! } + public var TextFormat_Bold: String { return self._s[1538]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1539]! } + public var Notifications_Title: String { return self._s[1540]! } + public var Group_Username_InvalidTooShort: String { return self._s[1541]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1542]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1541]!, self._r[1541]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1543]!, self._r[1543]!, ["\(_0)"]) } - public var Stickers_SuggestAdded: String { return self._s[1543]! } - public var Login_CountryCode: String { return self._s[1544]! } - public var Map_GetDirections: String { return self._s[1545]! } - public var Login_PhoneFloodError: String { return self._s[1546]! } + public var Stickers_SuggestAdded: String { return self._s[1545]! } + public var Login_CountryCode: String { return self._s[1546]! } + public var Map_GetDirections: String { return self._s[1547]! } + public var Login_PhoneFloodError: String { return self._s[1548]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1547]!, self._r[1547]!, [_0]) + return formatWithArgumentRanges(self._s[1549]!, self._r[1549]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1549]! } + public var Settings_SetUsername: String { return self._s[1551]! } public func CHAT_MESSAGE_NOTEXT_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1550]!, self._r[1550]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1552]!, self._r[1552]!, [_1, _2]) } - public var Notification_GroupInviterSelf: String { return self._s[1551]! } - public var InstantPage_TapToOpenLink: String { return self._s[1552]! } + public var Notification_GroupInviterSelf: String { return self._s[1553]! } + public var InstantPage_TapToOpenLink: String { return self._s[1554]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1553]!, self._r[1553]!, [_0]) + return formatWithArgumentRanges(self._s[1555]!, self._r[1555]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1554]! } - public var SecretChat_Title: String { return self._s[1555]! } - public var Group_UpgradeNoticeText1: String { return self._s[1556]! } - public var AuthSessions_Title: String { return self._s[1557]! } - public var PhotoEditor_CropAuto: String { return self._s[1558]! } - public var Channel_About_Title: String { return self._s[1559]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1560]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1556]! } + public var SecretChat_Title: String { return self._s[1557]! } + public var Group_UpgradeNoticeText1: String { return self._s[1558]! } + public var AuthSessions_Title: String { return self._s[1559]! } + public var PhotoEditor_CropAuto: String { return self._s[1560]! } + public var Channel_About_Title: String { return self._s[1561]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1562]! } public func CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1561]!, self._r[1561]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1563]!, self._r[1563]!, [_1, _2]) } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1562]!, self._r[1562]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1564]!, self._r[1564]!, ["\(_0)"]) } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1565]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1566]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1567]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1568]! } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1568]!, self._r[1568]!, [_0]) + return formatWithArgumentRanges(self._s[1570]!, self._r[1570]!, [_0]) } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1569]!, self._r[1569]!, [_0]) + return formatWithArgumentRanges(self._s[1571]!, self._r[1571]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1570]! } - public var Presence_online: String { return self._s[1572]! } - public var PasscodeSettings_Title: String { return self._s[1573]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1574]! } - public var Web_OpenExternal: String { return self._s[1575]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1572]! } + public var Presence_online: String { return self._s[1574]! } + public var PasscodeSettings_Title: String { return self._s[1575]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1576]! } + public var Web_OpenExternal: String { return self._s[1577]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1577]!, self._r[1577]!, [_0]) + return formatWithArgumentRanges(self._s[1579]!, self._r[1579]!, [_0]) } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1578]! } - public var Map_YouAreHere: String { return self._s[1579]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1580]! } + public var Map_YouAreHere: String { return self._s[1581]! } public func MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1580]!, self._r[1580]!, [_1]) + return formatWithArgumentRanges(self._s[1582]!, self._r[1582]!, [_1]) } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1581]!, self._r[1581]!, [_0]) + return formatWithArgumentRanges(self._s[1583]!, self._r[1583]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1582]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1583]! } + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1584]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1585]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1584]!, self._r[1584]!, [_0]) + return formatWithArgumentRanges(self._s[1586]!, self._r[1586]!, [_0]) } public func CHANNEL_MESSAGE_GEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1585]!, self._r[1585]!, [_1]) + return formatWithArgumentRanges(self._s[1587]!, self._r[1587]!, [_1]) } - public var SocksProxySetup_Username: String { return self._s[1586]! } + public var SocksProxySetup_Username: String { return self._s[1588]! } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1587]!, self._r[1587]!, [_0]) - } - public var Bot_Start: String { return self._s[1588]! } - public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1589]!, self._r[1589]!, [_0]) } + public var Bot_Start: String { return self._s[1590]! } + public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1591]!, self._r[1591]!, [_0]) + } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1590]!, self._r[1590]!, [_0]) + return formatWithArgumentRanges(self._s[1592]!, self._r[1592]!, [_0]) } - public var Contacts_SortByPresence: String { return self._s[1591]! } + public var Contacts_SortByPresence: String { return self._s[1593]! } public func PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1593]!, self._r[1593]!, [_1]) + return formatWithArgumentRanges(self._s[1595]!, self._r[1595]!, [_1]) } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1594]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1596]! } public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1595]!, self._r[1595]!, [_0]) + return formatWithArgumentRanges(self._s[1597]!, self._r[1597]!, [_0]) } public func MESSAGE_DOC_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1596]!, self._r[1596]!, [_1]) + return formatWithArgumentRanges(self._s[1598]!, self._r[1598]!, [_1]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1597]! } - public var Login_InfoAvatarPhoto: String { return self._s[1598]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1599]! } - public var Tour_Title4: String { return self._s[1600]! } - public var Passport_Identity_Translation: String { return self._s[1601]! } - public var Login_TermsOfServiceLabel: String { return self._s[1603]! } - public var Passport_Language_it: String { return self._s[1604]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1605]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1606]! } - public var Conversation_ClearAll: String { return self._s[1608]! } + public var Passport_Email_EnterOtherEmail: String { return self._s[1599]! } + public var Login_InfoAvatarPhoto: String { return self._s[1600]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1601]! } + public var Tour_Title4: String { return self._s[1602]! } + public var Passport_Identity_Translation: String { return self._s[1603]! } + public var Login_TermsOfServiceLabel: String { return self._s[1605]! } + public var Passport_Language_it: String { return self._s[1606]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1607]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1608]! } + public var Conversation_ClearAll: String { return self._s[1610]! } public func MESSAGE_PHOTOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1610]!, self._r[1610]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1612]!, self._r[1612]!, [_1, _2]) } - public var TwoStepAuth_FloodError: String { return self._s[1611]! } - public var Paint_Delete: String { return self._s[1612]! } + public var TwoStepAuth_FloodError: String { return self._s[1613]! } + public var Paint_Delete: String { return self._s[1614]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1613]!, self._r[1613]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1615]!, self._r[1615]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1614]! } + public var Message_PinnedAudioMessage: String { return self._s[1616]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1615]!, self._r[1615]!, [_0]) + return formatWithArgumentRanges(self._s[1617]!, self._r[1617]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1616]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1617]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1618]! } - public var Conversation_MessageEditedLabel: String { return self._s[1619]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1620]! } + public var Notification_Mute1hMin: String { return self._s[1618]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1619]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1620]! } + public var Conversation_MessageEditedLabel: String { return self._s[1621]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1622]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1621]!, self._r[1621]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1623]!, self._r[1623]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1622]! } - public var AccessDenied_LocationTracking: String { return self._s[1623]! } - public var Month_GenOctober: String { return self._s[1624]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1625]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1624]! } + public var AccessDenied_LocationTracking: String { return self._s[1625]! } + public var Month_GenOctober: String { return self._s[1626]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1627]! } public func CHAT_MESSAGE_INVOICE_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1626]!, self._r[1626]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1628]!, self._r[1628]!, [_1, _2, _3]) } - public var EnterPasscode_EnterPasscode: String { return self._s[1628]! } - public var MediaPicker_TimerTooltip: String { return self._s[1629]! } - public var SharedMedia_TitleAll: String { return self._s[1630]! } - public var Conversation_RestrictedMedia: String { return self._s[1632]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1633]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1635]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1630]! } + public var MediaPicker_TimerTooltip: String { return self._s[1631]! } + public var SharedMedia_TitleAll: String { return self._s[1632]! } + public var Conversation_RestrictedMedia: String { return self._s[1634]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1635]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1637]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1636]!, self._r[1636]!, [_0]) + return formatWithArgumentRanges(self._s[1638]!, self._r[1638]!, [_0]) } - public var Conversation_SavedMessages: String { return self._s[1639]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1641]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1642]! } + public var Conversation_SavedMessages: String { return self._s[1641]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1643]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1644]! } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1644]!, self._r[1644]!, [_0]) + return formatWithArgumentRanges(self._s[1646]!, self._r[1646]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1645]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1646]! } + public var ReportPeer_AlertSuccess: String { return self._s[1647]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1648]! } public func MESSAGE_PHOTO_SECRET_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1647]!, self._r[1647]!, [_1]) + return formatWithArgumentRanges(self._s[1649]!, self._r[1649]!, [_1]) } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1648]!, self._r[1648]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1650]!, self._r[1650]!, [_1, _2]) } - public var Checkout_PasswordEntry_Title: String { return self._s[1649]! } - public var PhotoEditor_FadeTool: String { return self._s[1650]! } - public var Privacy_ContactsReset: String { return self._s[1651]! } + public var Checkout_PasswordEntry_Title: String { return self._s[1651]! } + public var PhotoEditor_FadeTool: String { return self._s[1652]! } + public var Privacy_ContactsReset: String { return self._s[1653]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1653]!, self._r[1653]!, [_0]) + return formatWithArgumentRanges(self._s[1655]!, self._r[1655]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1654]! } - public var ChatList_Mute: String { return self._s[1655]! } - public var Permissions_CellularDataText_v0: String { return self._s[1656]! } - public var ShareMenu_SelectChats: String { return self._s[1658]! } - public var MusicPlayer_VoiceNote: String { return self._s[1659]! } - public var Conversation_RestrictedText: String { return self._s[1660]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[1661]! } - public var Cache_Videos: String { return self._s[1662]! } - public var FeatureDisabled_Oops: String { return self._s[1664]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1665]! } + public var Message_PinnedVideoMessage: String { return self._s[1656]! } + public var ChatList_Mute: String { return self._s[1657]! } + public var Permissions_CellularDataText_v0: String { return self._s[1658]! } + public var ShareMenu_SelectChats: String { return self._s[1660]! } + public var MusicPlayer_VoiceNote: String { return self._s[1661]! } + public var Conversation_RestrictedText: String { return self._s[1662]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[1663]! } + public var Cache_Videos: String { return self._s[1664]! } + public var FeatureDisabled_Oops: String { return self._s[1666]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1667]! } public func CHAT_MESSAGE_VIDEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1666]!, self._r[1666]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1668]!, self._r[1668]!, [_1, _2]) } - public var Stickers_GroupStickersHelp: String { return self._s[1667]! } - public var GroupPermission_NoSendPolls: String { return self._s[1668]! } - public var Message_VideoExpired: String { return self._s[1670]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1671]! } - public var Notifications_Badge: String { return self._s[1672]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[1673]! } - public var Username_InvalidTooShort: String { return self._s[1674]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1675]! } + public var Stickers_GroupStickersHelp: String { return self._s[1669]! } + public var GroupPermission_NoSendPolls: String { return self._s[1670]! } + public var Message_VideoExpired: String { return self._s[1672]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1673]! } + public var Notifications_Badge: String { return self._s[1674]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[1675]! } + public var Username_InvalidTooShort: String { return self._s[1676]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1677]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1678]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_1]) + return formatWithArgumentRanges(self._s[1679]!, self._r[1679]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[1677]! } - public var Conversation_DefaultRestrictedText: String { return self._s[1678]! } - public var SharedMedia_CategoryDocs: String { return self._s[1681]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[1680]! } + public var Conversation_DefaultRestrictedText: String { return self._s[1681]! } + public var SharedMedia_CategoryDocs: String { return self._s[1684]! } public func CHAT_MESSAGE_STICKER_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1685]!, self._r[1685]!, [_1, _2, _3]) } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1684]!, self._r[1684]!, [_1]) + return formatWithArgumentRanges(self._s[1687]!, self._r[1687]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1685]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1688]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1686]!, self._r[1686]!, [_0]) + return formatWithArgumentRanges(self._s[1689]!, self._r[1689]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[1687]! } - public var Channel_UpdatePhotoItem: String { return self._s[1688]! } - public var GroupInfo_LeftStatus: String { return self._s[1689]! } - public var Watch_MessageView_Forward: String { return self._s[1691]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[1692]! } - public var Cache_ClearEmpty: String { return self._s[1694]! } + public var ChatSettings_PrivateChats: String { return self._s[1690]! } + public var Channel_UpdatePhotoItem: String { return self._s[1691]! } + public var GroupInfo_LeftStatus: String { return self._s[1692]! } + public var Watch_MessageView_Forward: String { return self._s[1694]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[1695]! } + public var Cache_ClearEmpty: String { return self._s[1697]! } public func MESSAGE_VIDEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1695]!, self._r[1695]!, [_1]) + return formatWithArgumentRanges(self._s[1698]!, self._r[1698]!, [_1]) } - public var Localization_LanguageName: String { return self._s[1696]! } - public var WebSearch_GIFs: String { return self._s[1697]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1698]! } - public var Username_InvalidStartsWithNumber: String { return self._s[1699]! } - public var Common_Back: String { return self._s[1700]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1701]! } + public var Localization_LanguageName: String { return self._s[1699]! } + public var WebSearch_GIFs: String { return self._s[1700]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1701]! } + public var Username_InvalidStartsWithNumber: String { return self._s[1702]! } + public var Common_Back: String { return self._s[1703]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1704]! } public func CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1702]!, self._r[1702]!, [_1]) + return formatWithArgumentRanges(self._s[1705]!, self._r[1705]!, [_1]) } public func CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1703]!, self._r[1703]!, [_1]) + return formatWithArgumentRanges(self._s[1706]!, self._r[1706]!, [_1]) } - public var Passport_Email_Help: String { return self._s[1704]! } - public var Watch_Conversation_Reply: String { return self._s[1705]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[1707]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1708]! } - public var Channel_BanUser_Unban: String { return self._s[1710]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1711]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[1712]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1714]! } - public var Passport_Identity_Name: String { return self._s[1715]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[1716]! } - public var Conversation_BlockUser: String { return self._s[1717]! } - public var Month_GenJanuary: String { return self._s[1718]! } - public var ChatSettings_TextSize: String { return self._s[1719]! } - public var Notification_PassportValuePhone: String { return self._s[1720]! } - public var Passport_Language_ne: String { return self._s[1721]! } - public var Notification_CallBack: String { return self._s[1722]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1723]! } + public var Passport_Email_Help: String { return self._s[1707]! } + public var Watch_Conversation_Reply: String { return self._s[1708]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[1710]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1711]! } + public var Channel_BanUser_Unban: String { return self._s[1713]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1714]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[1715]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1717]! } + public var Passport_Identity_Name: String { return self._s[1718]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[1719]! } + public var Conversation_BlockUser: String { return self._s[1720]! } + public var Month_GenJanuary: String { return self._s[1721]! } + public var ChatSettings_TextSize: String { return self._s[1722]! } + public var Notification_PassportValuePhone: String { return self._s[1723]! } + public var Passport_Language_ne: String { return self._s[1724]! } + public var Notification_CallBack: String { return self._s[1725]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1726]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1724]!, self._r[1724]!, [_0]) + return formatWithArgumentRanges(self._s[1727]!, self._r[1727]!, [_0]) } - public var Channel_Info_Management: String { return self._s[1725]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[1726]! } - public var Stickers_FrequentlyUsed: String { return self._s[1727]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[1728]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1730]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[1731]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[1732]! } - public var CreatePoll_TextHeader: String { return self._s[1733]! } + public var Channel_Info_Management: String { return self._s[1728]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[1729]! } + public var Stickers_FrequentlyUsed: String { return self._s[1730]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[1731]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1733]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[1734]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[1735]! } + public var CreatePoll_TextHeader: String { return self._s[1736]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1734]!, self._r[1734]!, [_0]) - } - public var PhotoEditor_QualityMedium: String { return self._s[1735]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1736]! } - public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1737]!, self._r[1737]!, [_0]) } - public var Conversation_StatusKickedFromChannel: String { return self._s[1738]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1739]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[1740]! } - public var Conversation_LinkDialogOpen: String { return self._s[1742]! } - public var Settings_Username: String { return self._s[1743]! } - public func PINNED_GEOLIVE_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1745]!, self._r[1745]!, [_1]) + public var PhotoEditor_QualityMedium: String { return self._s[1738]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1739]! } + public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1740]!, self._r[1740]!, [_0]) } - public var Wallpaper_Wallpaper: String { return self._s[1746]! } - public func PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { + public var Conversation_StatusKickedFromChannel: String { return self._s[1741]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1742]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[1743]! } + public var Conversation_LinkDialogOpen: String { return self._s[1745]! } + public var Settings_Username: String { return self._s[1746]! } + public func PINNED_GEOLIVE_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1748]!, self._r[1748]!, [_1]) } - public var SocksProxySetup_UseProxy: String { return self._s[1749]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[1750]! } - public var MessageTimer_Forever: String { return self._s[1751]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1752]! } - public var PhotoEditor_DiscardChanges: String { return self._s[1753]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1754]! } - public var Passport_Language_da: String { return self._s[1755]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[1756]! } - public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_0]) + public var Wallpaper_Wallpaper: String { return self._s[1749]! } + public func PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1751]!, self._r[1751]!, [_1]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[1758]! } - public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { + public var SocksProxySetup_UseProxy: String { return self._s[1752]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[1753]! } + public var MessageTimer_Forever: String { return self._s[1754]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1755]! } + public var PhotoEditor_DiscardChanges: String { return self._s[1756]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1757]! } + public var Passport_Language_da: String { return self._s[1758]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[1759]! } + public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1760]!, self._r[1760]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1762]! } - public var Conversation_SearchByName_Prefix: String { return self._s[1763]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[1761]! } + public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1763]!, self._r[1763]!, [_0]) + } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1765]! } + public var Conversation_SearchByName_Prefix: String { return self._s[1766]! } public func PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1764]!, self._r[1764]!, [_1]) + return formatWithArgumentRanges(self._s[1767]!, self._r[1767]!, [_1]) } - public var Conversation_PinnedPoll: String { return self._s[1765]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1766]! } - public var Cache_ByPeerHeader: String { return self._s[1767]! } + public var Conversation_PinnedPoll: String { return self._s[1768]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1769]! } + public var Cache_ByPeerHeader: String { return self._s[1770]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1768]!, self._r[1768]!, [_0]) + return formatWithArgumentRanges(self._s[1771]!, self._r[1771]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[1769]! } - public var Notification_PinnedMessage: String { return self._s[1772]! } - public var Contacts_SortBy: String { return self._s[1774]! } - public var Call_EncryptionKey_Title: String { return self._s[1776]! } - public var Watch_UserInfo_Service: String { return self._s[1777]! } - public var Conversation_Unpin: String { return self._s[1780]! } - public var CancelResetAccount_Title: String { return self._s[1781]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1782]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[1772]! } + public var Notification_PinnedMessage: String { return self._s[1775]! } + public var Contacts_SortBy: String { return self._s[1777]! } + public var Call_EncryptionKey_Title: String { return self._s[1779]! } + public var Watch_UserInfo_Service: String { return self._s[1780]! } + public var Conversation_Unpin: String { return self._s[1783]! } + public var CancelResetAccount_Title: String { return self._s[1784]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1785]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1784]!, self._r[1784]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1785]! } - public var CallSettings_Title: String { return self._s[1786]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[1788]! } - public var AutoDownloadSettings_Contacts: String { return self._s[1789]! } - public var Passport_Identity_DocumentDetails: String { return self._s[1790]! } - public var LoginPassword_PasswordHelp: String { return self._s[1791]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[1792]! } - public var Checkout_TotalPaidAmount: String { return self._s[1793]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1788]! } + public var CallSettings_Title: String { return self._s[1789]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[1791]! } + public var AutoDownloadSettings_Contacts: String { return self._s[1792]! } + public var Passport_Identity_DocumentDetails: String { return self._s[1793]! } + public var LoginPassword_PasswordHelp: String { return self._s[1794]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[1795]! } + public var Checkout_TotalPaidAmount: String { return self._s[1796]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1794]!, self._r[1794]!, [_0]) + return formatWithArgumentRanges(self._s[1797]!, self._r[1797]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[1795]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[1797]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[1798]! } - public var Contacts_InviteFriends: String { return self._s[1800]! } - public var Map_ChooseLocationTitle: String { return self._s[1801]! } - public var Conversation_StopPoll: String { return self._s[1803]! } - public var Calls_RatingFeedback: String { return self._s[1804]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[1805]! } - public var NotificationsSound_Pulse: String { return self._s[1806]! } - public var Watch_LastSeen_Lately: String { return self._s[1807]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[1798]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[1800]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[1801]! } + public var Contacts_InviteFriends: String { return self._s[1803]! } + public var Map_ChooseLocationTitle: String { return self._s[1804]! } + public var Conversation_StopPoll: String { return self._s[1806]! } + public var Calls_RatingFeedback: String { return self._s[1807]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[1808]! } + public var NotificationsSound_Pulse: String { return self._s[1809]! } + public var Watch_LastSeen_Lately: String { return self._s[1810]! } public func CHAT_MESSAGE_VIDEO_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1810]!, self._r[1810]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1813]!, self._r[1813]!, [_1, _2]) } - public var Widget_NoUsers: String { return self._s[1811]! } - public var Conversation_UnvotePoll: String { return self._s[1812]! } - public var NotificationsSound_Circles: String { return self._s[1814]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[1816]! } + public var Widget_NoUsers: String { return self._s[1814]! } + public var Conversation_UnvotePoll: String { return self._s[1815]! } + public var NotificationsSound_Circles: String { return self._s[1817]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[1819]! } public func CHANNEL_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1817]!, self._r[1817]!, [_1]) + return formatWithArgumentRanges(self._s[1820]!, self._r[1820]!, [_1]) } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[1818]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[1821]! } public func CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1819]!, self._r[1819]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1822]!, self._r[1822]!, [_1, _2]) } - public var Passport_Identity_CountryPlaceholder: String { return self._s[1821]! } - public var Conversation_FileDropbox: String { return self._s[1823]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[1824]! } - public var Tour_Text3: String { return self._s[1826]! } - public var Login_ResetAccountProtected_Title: String { return self._s[1828]! } - public var GroupPermission_NoSendMessages: String { return self._s[1829]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[1830]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[1824]! } + public var Conversation_FileDropbox: String { return self._s[1826]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[1827]! } + public var Tour_Text3: String { return self._s[1829]! } + public var Login_ResetAccountProtected_Title: String { return self._s[1831]! } + public var GroupPermission_NoSendMessages: String { return self._s[1832]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[1833]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1832]!, self._r[1832]!, [_0]) + return formatWithArgumentRanges(self._s[1835]!, self._r[1835]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[1833]! } - public var Checkout_ShippingOption_Title: String { return self._s[1834]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[1835]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[1836]! } + public var Checkout_ShippingOption_Title: String { return self._s[1837]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[1838]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1836]!, self._r[1836]!, [_0]) + return formatWithArgumentRanges(self._s[1839]!, self._r[1839]!, [_0]) } public func CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1837]!, self._r[1837]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1840]!, self._r[1840]!, [_1, _2]) } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1838]! } - public var Appearance_PreviewIncomingText: String { return self._s[1840]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[1841]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[1842]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[1843]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[1844]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[1845]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[1846]! } - public var Notification_SecretChatScreenshot: String { return self._s[1847]! } - public var Passport_Address_City: String { return self._s[1849]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1850]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[1851]! } - public var AccessDenied_LocationDisabled: String { return self._s[1852]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1854]! } - public var GroupInfo_Sound: String { return self._s[1855]! } - public var Stickers_RemoveFromFavorites: String { return self._s[1856]! } - public var Contacts_Title: String { return self._s[1857]! } - public var Passport_Language_fr: String { return self._s[1858]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1841]! } + public var Appearance_PreviewIncomingText: String { return self._s[1843]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[1844]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[1845]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[1846]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[1847]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[1848]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[1849]! } + public var Notification_SecretChatScreenshot: String { return self._s[1850]! } + public var Passport_Address_City: String { return self._s[1852]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1853]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[1854]! } + public var AccessDenied_LocationDisabled: String { return self._s[1855]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1857]! } + public var GroupInfo_Sound: String { return self._s[1858]! } + public var Stickers_RemoveFromFavorites: String { return self._s[1859]! } + public var Contacts_Title: String { return self._s[1860]! } + public var Passport_Language_fr: String { return self._s[1861]! } public func CHAT_TITLE_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1859]!, self._r[1859]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1862]!, self._r[1862]!, [_1, _2]) } - public var Notifications_ResetAllNotifications: String { return self._s[1860]! } - public var PrivacySettings_SecurityTitle: String { return self._s[1863]! } - public var Checkout_NewCard_Title: String { return self._s[1864]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[1865]! } - public var Conversation_ForwardChats: String { return self._s[1866]! } - public var Settings_FAQ: String { return self._s[1869]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[1870]! } - public var Conversation_ContextMenuForward: String { return self._s[1871]! } - public var PrivacyPolicy_Title: String { return self._s[1876]! } - public var Notifications_TextTone: String { return self._s[1877]! } - public var Profile_CreateNewContact: String { return self._s[1878]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[1880]! } - public var Channel_Username_InvalidCharacters: String { return self._s[1882]! } + public var Notifications_ResetAllNotifications: String { return self._s[1863]! } + public var PrivacySettings_SecurityTitle: String { return self._s[1866]! } + public var Checkout_NewCard_Title: String { return self._s[1867]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[1868]! } + public var Conversation_ForwardChats: String { return self._s[1869]! } + public var Settings_FAQ: String { return self._s[1872]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[1873]! } + public var Conversation_ContextMenuForward: String { return self._s[1874]! } + public var PrivacyPolicy_Title: String { return self._s[1879]! } + public var Notifications_TextTone: String { return self._s[1880]! } + public var Profile_CreateNewContact: String { return self._s[1881]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[1883]! } + public var Channel_Username_InvalidCharacters: String { return self._s[1885]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1883]!, self._r[1883]!, [_0]) + return formatWithArgumentRanges(self._s[1886]!, self._r[1886]!, [_0]) } - public var PrivacySettings_LastSeenTitle: String { return self._s[1884]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[1885]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[1886]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[1887]! } - public var Bot_Unblock: String { return self._s[1888]! } - public var TextFormat_Italic: String { return self._s[1889]! } - public var Settings_About_Help: String { return self._s[1890]! } - public var SearchImages_Title: String { return self._s[1891]! } - public var Weekday_Wednesday: String { return self._s[1892]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[1893]! } - public var ExplicitContent_AlertTitle: String { return self._s[1894]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[1887]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[1888]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[1889]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[1890]! } + public var Bot_Unblock: String { return self._s[1891]! } + public var TextFormat_Italic: String { return self._s[1892]! } + public var Settings_About_Help: String { return self._s[1893]! } + public var SearchImages_Title: String { return self._s[1894]! } + public var Weekday_Wednesday: String { return self._s[1895]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[1896]! } + public var ExplicitContent_AlertTitle: String { return self._s[1897]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1895]!, self._r[1895]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1898]!, self._r[1898]!, [_1, _2, _3]) } - public var Weekday_Thursday: String { return self._s[1896]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[1897]! } - public var Channel_Members_AddMembersHelp: String { return self._s[1898]! } + public var Weekday_Thursday: String { return self._s[1899]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[1900]! } + public var Channel_Members_AddMembersHelp: String { return self._s[1901]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1899]!, self._r[1899]!, [_0]) + return formatWithArgumentRanges(self._s[1902]!, self._r[1902]!, [_0]) } - public var Passport_RequestedInformation: String { return self._s[1900]! } - public var Login_PhoneAndCountryHelp: String { return self._s[1901]! } + public var Passport_RequestedInformation: String { return self._s[1903]! } + public var Login_PhoneAndCountryHelp: String { return self._s[1904]! } public func CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1902]!, self._r[1902]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1905]!, self._r[1905]!, [_1, _2]) } - public var Conversation_EncryptionProcessing: String { return self._s[1903]! } - public var PhotoEditor_EnhanceTool: String { return self._s[1906]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[1907]! } - public var Channel_Setup_Title: String { return self._s[1908]! } + public var Conversation_EncryptionProcessing: String { return self._s[1906]! } + public var PhotoEditor_EnhanceTool: String { return self._s[1909]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[1910]! } + public var Channel_Setup_Title: String { return self._s[1911]! } public func PINNED_GIF_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1909]!, self._r[1909]!, [_1]) + return formatWithArgumentRanges(self._s[1912]!, self._r[1912]!, [_1]) } - public var Conversation_SearchPlaceholder: String { return self._s[1910]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[1911]! } - public var Checkout_ErrorGeneric: String { return self._s[1912]! } - public var Passport_Language_hu: String { return self._s[1913]! } + public var Conversation_SearchPlaceholder: String { return self._s[1913]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[1914]! } + public var Checkout_ErrorGeneric: String { return self._s[1915]! } + public var Passport_Language_hu: String { return self._s[1916]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1915]!, self._r[1915]!, [_0]) + return formatWithArgumentRanges(self._s[1918]!, self._r[1918]!, [_0]) } - public var Conversation_CloudStorageInfo_Title: String { return self._s[1918]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[1919]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[1921]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[1922]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1920]!, self._r[1920]!, [_0]) + return formatWithArgumentRanges(self._s[1923]!, self._r[1923]!, [_0]) } - public var Conversation_ClearPrivateHistory: String { return self._s[1921]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[1922]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[1923]! } + public var Conversation_ClearPrivateHistory: String { return self._s[1924]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[1925]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[1926]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1924]!, self._r[1924]!, [_0]) + return formatWithArgumentRanges(self._s[1927]!, self._r[1927]!, [_0]) } - public var Passport_Language_cs: String { return self._s[1925]! } - public var Message_PinnedAnimationMessage: String { return self._s[1926]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[1928]! } - public var Embed_PlayingInPIP: String { return self._s[1930]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[1931]! } + public var Passport_Language_cs: String { return self._s[1928]! } + public var Message_PinnedAnimationMessage: String { return self._s[1929]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[1931]! } + public var Embed_PlayingInPIP: String { return self._s[1933]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[1934]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1932]!, self._r[1932]!, [_0]) + return formatWithArgumentRanges(self._s[1935]!, self._r[1935]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[1933]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[1936]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1934]!, self._r[1934]!, [_1]) + return formatWithArgumentRanges(self._s[1937]!, self._r[1937]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[1935]! } - public var PhotoEditor_CurvesGreen: String { return self._s[1936]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[1937]! } + public var Notification_PaymentSent: String { return self._s[1938]! } + public var PhotoEditor_CurvesGreen: String { return self._s[1939]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[1940]! } public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1938]!, self._r[1938]!, [_1]) + return formatWithArgumentRanges(self._s[1941]!, self._r[1941]!, [_1]) } public func CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1939]!, self._r[1939]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1942]!, self._r[1942]!, [_1, _2]) } - 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[1943]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[1944]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1945]! } - public var Call_Accept: String { return self._s[1947]! } - public var GroupRemoved_RemoveInfo: String { return self._s[1948]! } - public var Month_GenMarch: String { return self._s[1949]! } - public var PhotoEditor_ShadowsTool: String { return self._s[1950]! } - public var LoginPassword_Title: String { return self._s[1951]! } - public var Watch_Conversation_GroupInfo: String { return self._s[1952]! } - public var CallSettings_Always: 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 NetworkUsageSettings_CallDataSection: String { return self._s[1943]! } + public var PasscodeSettings_HelpTop: String { return self._s[1944]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[1946]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[1947]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1948]! } + public var Call_Accept: String { return self._s[1950]! } + public var GroupRemoved_RemoveInfo: String { return self._s[1951]! } + public var Month_GenMarch: String { return self._s[1952]! } + public var PhotoEditor_ShadowsTool: String { return self._s[1953]! } + public var LoginPassword_Title: String { return self._s[1954]! } + public var Watch_Conversation_GroupInfo: String { return self._s[1955]! } + public var CallSettings_Always: String { return self._s[1956]! } + public var TwoStepAuth_SetupHint: String { return self._s[1957]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[1958]! } public func MESSAGE_GEOLIVE_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1956]!, self._r[1956]!, [_1]) + return formatWithArgumentRanges(self._s[1959]!, self._r[1959]!, [_1]) } - public var Login_PhoneTitle: String { return self._s[1957]! } - public var Passport_FieldPhoneHelp: String { return self._s[1958]! } - public var Weekday_ShortSunday: String { return self._s[1959]! } - public var Passport_InfoFAQ_URL: String { return self._s[1960]! } - public var ContactInfo_Job: String { return self._s[1962]! } - public var UserInfo_InviteBotToGroup: String { return self._s[1963]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[1964]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[1966]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[1968]! } - public var MediaPicker_AddCaption: String { return self._s[1969]! } - public var CallSettings_TabIconDescription: String { return self._s[1970]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1971]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[1972]! } - public var DialogList_SearchSectionRecent: String { return self._s[1973]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[1974]! } - public var LastSeen_WithinAWeek: String { return self._s[1977]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[1978]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[1980]! } - public var Passport_Address_TypeResidentialAddress: String { return self._s[1981]! } - public var Conversation_StatusLeftGroup: String { return self._s[1982]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[1983]! } + public var Login_PhoneTitle: String { return self._s[1960]! } + public var Passport_FieldPhoneHelp: String { return self._s[1961]! } + public var Weekday_ShortSunday: String { return self._s[1962]! } + public var Passport_InfoFAQ_URL: String { return self._s[1963]! } + public var ContactInfo_Job: String { return self._s[1965]! } + public var UserInfo_InviteBotToGroup: String { return self._s[1966]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[1967]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[1969]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[1971]! } + public var MediaPicker_AddCaption: String { return self._s[1972]! } + public var CallSettings_TabIconDescription: String { return self._s[1973]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1974]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[1975]! } + public var DialogList_SearchSectionRecent: String { return self._s[1976]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[1977]! } + public var LastSeen_WithinAWeek: String { return self._s[1980]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[1981]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[1983]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[1984]! } + public var Conversation_StatusLeftGroup: String { return self._s[1985]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[1986]! } public func CHANNEL_MESSAGE_AUDIO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1985]!, self._r[1985]!, [_1]) + return formatWithArgumentRanges(self._s[1988]!, self._r[1988]!, [_1]) } - public var GroupPermission_AddSuccess: String { return self._s[1986]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[1988]! } - public var Conversation_ContextMenuCopy: String { return self._s[1989]! } - public var AccessDenied_CallMicrophone: String { return self._s[1990]! } + public var GroupPermission_AddSuccess: String { return self._s[1989]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[1991]! } + public var Conversation_ContextMenuCopy: String { return self._s[1992]! } + public var AccessDenied_CallMicrophone: String { return self._s[1993]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1991]!, self._r[1991]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1994]!, self._r[1994]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[1992]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[1993]! } - public var Checkout_PaymentMethod_New: String { return self._s[1994]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[1995]! } - public var PhotoEditor_QualityTool: String { return self._s[1996]! } - public var Login_SendCodeViaSms: String { return self._s[1997]! } + public var Login_InvalidFirstNameError: String { return self._s[1995]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[1996]! } + public var Checkout_PaymentMethod_New: String { return self._s[1997]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[1998]! } + public var PhotoEditor_QualityTool: String { return self._s[1999]! } + public var Login_SendCodeViaSms: String { return self._s[2000]! } public func CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1998]!, self._r[1998]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2001]!, self._r[2001]!, [_1, _2]) } - public var Login_EmailNotConfiguredError: String { return self._s[1999]! } - public var PrivacyPolicy_Accept: String { return self._s[2000]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2001]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2002]! } - public var AutoNightTheme_Automatic: String { return self._s[2003]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2004]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2005]! } - public var Cache_Help: String { return self._s[2006]! } - public var Passport_Language_fa: String { return self._s[2007]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2008]! } - public var PrivacySettings_LastSeen: String { return self._s[2009]! } + public var Login_EmailNotConfiguredError: String { return self._s[2002]! } + public var PrivacyPolicy_Accept: String { return self._s[2003]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2004]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2005]! } + public var AutoNightTheme_Automatic: String { return self._s[2006]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2007]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2008]! } + public var Cache_Help: String { return self._s[2009]! } + public var Passport_Language_fa: String { return self._s[2010]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2011]! } + public var PrivacySettings_LastSeen: String { return self._s[2012]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2010]!, self._r[2010]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2013]!, self._r[2013]!, [_0, _1]) } - public var Channel_EditAdmin_PermissionInviteUsers: String { return self._s[2012]! } - public var Preview_SaveGif: String { return self._s[2014]! } - public var Profile_About: String { return self._s[2015]! } - public var Channel_About_Placeholder: String { return self._s[2016]! } - public var Login_InfoTitle: String { return self._s[2017]! } + public var Channel_EditAdmin_PermissionInviteUsers: String { return self._s[2015]! } + public var Preview_SaveGif: String { return self._s[2017]! } + public var Profile_About: String { return self._s[2018]! } + public var Channel_About_Placeholder: String { return self._s[2019]! } + public var Login_InfoTitle: String { return self._s[2020]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2018]!, self._r[2018]!, [_0]) + return formatWithArgumentRanges(self._s[2021]!, self._r[2021]!, [_0]) } - public var Watch_Suggestion_CantTalk: String { return self._s[2020]! } - public var ContactInfo_Title: String { return self._s[2021]! } - public var Media_ShareThisVideo: String { return self._s[2022]! } - public var Weekday_ShortFriday: String { return self._s[2023]! } - public var AccessDenied_Contacts: String { return self._s[2024]! } - public var Notification_CallIncomingShort: String { return self._s[2025]! } - public var Group_Setup_TypePublic: String { return self._s[2026]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2027]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2028]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2031]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2032]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2033]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2034]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2035]! } - public var DialogList_Typing: String { return self._s[2036]! } - public var Checkout_Phone: String { return self._s[2039]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2042]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2023]! } + public var ContactInfo_Title: String { return self._s[2024]! } + public var Media_ShareThisVideo: String { return self._s[2025]! } + public var Weekday_ShortFriday: String { return self._s[2026]! } + public var AccessDenied_Contacts: String { return self._s[2027]! } + public var Notification_CallIncomingShort: String { return self._s[2028]! } + public var Group_Setup_TypePublic: String { return self._s[2029]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2030]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2031]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2034]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2035]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2036]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2037]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2038]! } + public var DialogList_Typing: String { return self._s[2039]! } + public var Checkout_Phone: String { return self._s[2042]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2045]! } public func PINNED_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2043]!, self._r[2043]!, [_1]) + return formatWithArgumentRanges(self._s[2046]!, self._r[2046]!, [_1]) } - public var Privacy_Calls_Integration: String { return self._s[2044]! } - public var Notifications_PermissionsAllow: String { return self._s[2046]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2049]! } - public var Settings_ChatSettings: String { return self._s[2050]! } + public var Privacy_Calls_Integration: String { return self._s[2047]! } + public var Notifications_PermissionsAllow: String { return self._s[2049]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2052]! } + public var Settings_ChatSettings: String { return self._s[2053]! } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2051]!, self._r[2051]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2054]!, self._r[2054]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2053]! } + public var GroupRemoved_DeleteUser: String { return self._s[2056]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2054]!, self._r[2054]!, [_0]) + return formatWithArgumentRanges(self._s[2057]!, self._r[2057]!, [_0]) } - public var Login_ContinueWithLocalization: String { return self._s[2055]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2056]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2058]! } - public var Conversation_Unblock: String { return self._s[2059]! } - public var PrivacySettings_DataSettings: String { return self._s[2060]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2061]! } + public var Login_ContinueWithLocalization: String { return self._s[2058]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2059]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2061]! } + public var Conversation_Unblock: String { return self._s[2062]! } + public var PrivacySettings_DataSettings: String { return self._s[2063]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2064]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2062]!, self._r[2062]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2065]!, self._r[2065]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2065]! } + public var PrivacySettings_Passcode: String { return self._s[2068]! } public func ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2066]!, self._r[2066]!, [_1]) + return formatWithArgumentRanges(self._s[2069]!, self._r[2069]!, [_1]) } - public var Passport_Language_dz: String { return self._s[2067]! } - public var Passport_Language_tk: String { return self._s[2068]! } + public var Passport_Language_dz: String { return self._s[2070]! } + public var Passport_Language_tk: String { return self._s[2071]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2069]!, self._r[2069]!, [_0]) + return formatWithArgumentRanges(self._s[2072]!, self._r[2072]!, [_0]) } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2070]! } - public var Conversation_ContextMenuReply: String { return self._s[2071]! } - public var Tour_Title1: String { return self._s[2072]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2073]! } + public var Conversation_ContextMenuReply: String { return self._s[2074]! } + public var Tour_Title1: String { return self._s[2075]! } public func MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2073]!, self._r[2073]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2076]!, self._r[2076]!, [_1, _2]) } - public var Conversation_ClearGroupHistory: String { return self._s[2075]! } + public var Conversation_ClearGroupHistory: String { return self._s[2078]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2076]!, self._r[2076]!, [_0]) + return formatWithArgumentRanges(self._s[2079]!, self._r[2079]!, [_0]) } - public var Call_RateCall: 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 var Call_RateCall: String { return self._s[2080]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2081]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2082]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2084]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2083]!, self._r[2083]!, [_0]) + return formatWithArgumentRanges(self._s[2086]!, self._r[2086]!, [_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 var Compose_Create: String { return self._s[2087]! } + public var Contacts_InviteToTelegram: String { return self._s[2088]! } + public var GroupInfo_Notifications: String { return self._s[2089]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2091]! } + public var Month_GenApril: String { return self._s[2092]! } + public var Appearance_AutoNightTheme: String { return self._s[2093]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2095]! } + public var Login_CodeSentSms: String { return self._s[2097]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2095]!, self._r[2095]!, [_0]) - } - 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[2098]!, self._r[2098]!, [_0]) } - 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 EmptyGroupInfo_Line3: String { return self._s[2099]! } + public var Passport_Language_hr: String { return self._s[2100]! } + public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2101]!, self._r[2101]!, [_0]) + } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2102]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2103]! } + public var Privacy_SecretChatsTitle: String { return self._s[2104]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2106]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2107]! } public func CHANNEL_MESSAGE_VIDEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2105]!, self._r[2105]!, [_1]) + return formatWithArgumentRanges(self._s[2108]!, self._r[2108]!, [_1]) } - public var Preview_DeleteGif: String { return self._s[2106]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2107]! } - public var Group_ErrorNotMutualContact: String { return self._s[2108]! } - public var Notification_MessageLifetime5s: String { return self._s[2109]! } + public var Preview_DeleteGif: String { return self._s[2109]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2110]! } + public var Group_ErrorNotMutualContact: String { return self._s[2111]! } + public var Notification_MessageLifetime5s: String { return self._s[2112]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2110]!, self._r[2110]!, [_0]) + return formatWithArgumentRanges(self._s[2113]!, self._r[2113]!, [_0]) } - public var Passport_Address_AddBankStatement: String { return self._s[2112]! } - public var Notification_CallIncoming: String { return self._s[2113]! } - public var Compose_NewGroupTitle: String { return self._s[2114]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2116]! } - public var Passport_Address_Postcode: String { return self._s[2118]! } + public var Passport_Address_AddBankStatement: String { return self._s[2115]! } + public var Notification_CallIncoming: String { return self._s[2116]! } + public var Compose_NewGroupTitle: String { return self._s[2117]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2119]! } + public var Passport_Address_Postcode: String { return self._s[2121]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2119]!, self._r[2119]!, [_0]) - } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2120]! } - public var GroupPermission_Duration: String { return self._s[2121]! } - public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2122]!, self._r[2122]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2123]! } - public var Username_Placeholder: String { return self._s[2124]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2125]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2126]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2123]! } + public var GroupPermission_Duration: String { return self._s[2124]! } + public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2125]!, self._r[2125]!, [_0]) + } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2126]! } + public var Username_Placeholder: String { return self._s[2127]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2128]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2129]! } public func CHAT_ADD_MEMBER_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2127]!, self._r[2127]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2130]!, self._r[2130]!, [_1, _2, _3]) } - public var Passport_PasswordDescription: String { return self._s[2129]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2130]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2131]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2132]! } - public var Conversation_ContextMenuMore: String { return self._s[2133]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2134]! } - public var CallSettings_TabIcon: String { return self._s[2135]! } - public var KeyCommand_Find: String { return self._s[2136]! } - public var Message_PinnedGame: String { return self._s[2137]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2138]! } - public var Login_CallRequestState2: String { return self._s[2140]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2142]! } + public var Passport_PasswordDescription: String { return self._s[2132]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2133]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2134]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2135]! } + public var Conversation_ContextMenuMore: String { return self._s[2136]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2137]! } + public var CallSettings_TabIcon: String { return self._s[2138]! } + public var KeyCommand_Find: String { return self._s[2139]! } + public var Message_PinnedGame: String { return self._s[2140]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2141]! } + public var Login_CallRequestState2: String { return self._s[2143]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2145]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2144]!, self._r[2144]!, [_0]) + return formatWithArgumentRanges(self._s[2147]!, self._r[2147]!, [_0]) } - public var Conversation_InstantPagePreview: String { return self._s[2145]! } + public var Conversation_InstantPagePreview: String { return self._s[2148]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2146]!, self._r[2146]!, [_0]) + return formatWithArgumentRanges(self._s[2149]!, self._r[2149]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2149]! } - public var GroupPermission_NoPinMessages: String { return self._s[2150]! } - public var Passport_Language_es: String { return self._s[2151]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2153]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2154]! } - public var WebPreview_GettingLinkInfo: String { return self._s[2155]! } - public var Watch_UserInfo_Unmute: String { return self._s[2156]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2157]! } - public var AccessDenied_CameraRestricted: String { return self._s[2159]! } + public var SecretTimer_VideoDescription: 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 var WebPreview_GettingLinkInfo: String { return self._s[2158]! } + public var Watch_UserInfo_Unmute: String { return self._s[2159]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2160]! } + public var AccessDenied_CameraRestricted: String { return self._s[2162]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2160]!, self._r[2160]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2163]!, self._r[2163]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2162]! } - public var Settings_CopyUsername: String { return self._s[2163]! } - public var Contacts_SearchLabel: String { return self._s[2164]! } + public var ChatList_ReadAll: String { return self._s[2165]! } + public var Settings_CopyUsername: String { return self._s[2166]! } + public var Contacts_SearchLabel: String { return self._s[2167]! } public func MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2166]!, self._r[2166]!, [_1]) + return formatWithArgumentRanges(self._s[2169]!, self._r[2169]!, [_1]) } - public var Map_OpenInYandexNavigator: String { return self._s[2167]! } - public var PasscodeSettings_EncryptData: String { return self._s[2168]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2170]! } - public var DialogList_AdNoticeAlert: String { return self._s[2171]! } + public var Map_OpenInYandexNavigator: String { return self._s[2170]! } + public var PasscodeSettings_EncryptData: String { return self._s[2171]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2173]! } + public var DialogList_AdNoticeAlert: String { return self._s[2174]! } public func CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2173]!, self._r[2173]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2176]!, self._r[2176]!, [_1, _2, _3]) } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2174]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2175]! } - public var Localization_LanguageCustom: String { return self._s[2176]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2177]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2177]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2178]! } + public var Localization_LanguageCustom: String { return self._s[2179]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2180]! } public func CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2179]!, self._r[2179]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2182]!, self._r[2182]!, [_1, _2]) } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2181]! } - public var Conversation_InfoGroup: String { return self._s[2182]! } - public var Compose_NewMessage: String { return self._s[2183]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2185]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2186]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2184]! } + public var Conversation_InfoGroup: String { return self._s[2185]! } + public var Compose_NewMessage: String { return self._s[2186]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2188]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2189]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2187]!, self._r[2187]!, [_0]) + return formatWithArgumentRanges(self._s[2190]!, self._r[2190]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2188]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2189]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2190]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2191]! } - public var Channel_BlackList_Title: String { return self._s[2192]! } - public var UserInfo_PhoneCall: String { return self._s[2193]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2195]! } - public var State_connecting: String { return self._s[2196]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2191]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2192]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2193]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2194]! } + public var Channel_BlackList_Title: String { return self._s[2195]! } + public var UserInfo_PhoneCall: String { return self._s[2196]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2198]! } + public var State_connecting: String { return self._s[2199]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2197]!, self._r[2197]!, [_0]) + return formatWithArgumentRanges(self._s[2200]!, self._r[2200]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2198]! } - public var Passport_Identity_EditPassport: String { return self._s[2199]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2201]! } - public var Localization_EnglishLanguageName: String { return self._s[2202]! } - public var Share_AuthDescription: String { return self._s[2203]! } - public var Passport_Identity_Surname: String { return self._s[2204]! } - public var Compose_TokenListPlaceholder: String { return self._s[2205]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2206]! } - public var Settings_AboutEmpty: String { return self._s[2207]! } - public var Conversation_Unmute: String { return self._s[2208]! } - public var Login_CodeSentCall: String { return self._s[2211]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2212]! } - public var ChatSettings_Appearance: String { return self._s[2213]! } - public var Appearance_PickAccentColor: String { return self._s[2214]! } - public var Notification_CallMissed: String { return self._s[2215]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2216]! } - public var ChatAdmins_AdminLabel: String { return self._s[2218]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2219]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2221]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2222]! } - public var Month_GenJune: String { return self._s[2223]! } - public var Watch_Location_Current: String { return self._s[2224]! } - public var Conversation_TitleMute: String { return self._s[2225]! } + public var Notifications_GroupNotifications: String { return self._s[2201]! } + public var Passport_Identity_EditPassport: String { return self._s[2202]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2204]! } + public var Localization_EnglishLanguageName: String { return self._s[2205]! } + public var Share_AuthDescription: String { return self._s[2206]! } + public var Passport_Identity_Surname: String { return self._s[2207]! } + public var Compose_TokenListPlaceholder: String { return self._s[2208]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2209]! } + public var Settings_AboutEmpty: String { return self._s[2210]! } + public var Conversation_Unmute: String { return self._s[2211]! } + public var Login_CodeSentCall: String { return self._s[2214]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2215]! } + public var ChatSettings_Appearance: String { return self._s[2216]! } + public var Appearance_PickAccentColor: String { return self._s[2217]! } + public var Notification_CallMissed: String { return self._s[2218]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2219]! } + public var ChatAdmins_AdminLabel: String { return self._s[2221]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2222]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2224]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2225]! } + public var Month_GenJune: String { return self._s[2226]! } + public var Watch_Location_Current: String { return self._s[2227]! } + public var Conversation_TitleMute: String { return self._s[2228]! } public func PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2226]!, self._r[2226]!, [_1]) + return formatWithArgumentRanges(self._s[2229]!, self._r[2229]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2227]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2230]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2228]!, self._r[2228]!, [_0]) - } - public var Call_ReportPlaceholder: String { return self._s[2229]! } - public var MaskStickerSettings_Info: String { return self._s[2230]! } - public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2231]!, self._r[2231]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2232]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2234]! } - public var Contacts_ShareTelegram: String { return self._s[2235]! } + public var Call_ReportPlaceholder: String { return self._s[2232]! } + public var MaskStickerSettings_Info: String { return self._s[2233]! } + public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2234]!, self._r[2234]!, [_0]) + } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2235]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2237]! } + public var Contacts_ShareTelegram: String { return self._s[2238]! } public func CHAT_MESSAGE_GIF_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2236]!, self._r[2236]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2239]!, self._r[2239]!, [_1, _2]) } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2237]! } - public var Channel_ErrorAccessDenied: String { return self._s[2238]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2240]! } - public var Call_ConnectionErrorTitle: String { return self._s[2241]! } - public var UserInfo_NotificationsEnable: String { return self._s[2242]! } - public var Tour_Text4: String { return self._s[2245]! } + 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 func CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2247]!, self._r[2247]!, [_1]) + return formatWithArgumentRanges(self._s[2250]!, self._r[2250]!, [_1]) } - public var Profile_MessageLifetime2s: String { return self._s[2248]! } - public var Notification_MessageLifetime2s: 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[2250]!, self._r[2250]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2253]!, self._r[2253]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[2251]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2252]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2253]! } + 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[2255]!, self._r[2255]!, [_0]) + return formatWithArgumentRanges(self._s[2258]!, self._r[2258]!, [_0]) } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2257]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2258]! } - public var AutoNightTheme_Title: String { return self._s[2259]! } - public var InstantPage_FeedbackButton: String { return self._s[2260]! } - public var Passport_FieldAddress: String { return self._s[2261]! } - public var Month_ShortMarch: String { return self._s[2262]! } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2263]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2264]! } - public var Passport_FloodError: String { return self._s[2265]! } - public var SecretGif_Title: String { return self._s[2266]! } - public var Passport_Language_th: String { return self._s[2268]! } - public var Passport_Address_Address: String { return self._s[2269]! } - public var Login_InvalidLastNameError: String { return self._s[2270]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2271]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2272]! } - public var ShareMenu_Send: String { return self._s[2273]! } - public var Month_GenNovember: String { return self._s[2276]! } - public var Checkout_Email: String { return self._s[2278]! } - public var NotificationsSound_Tritone: String { return self._s[2279]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2281]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[2284]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2260]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2261]! } + public var AutoNightTheme_Title: String { return self._s[2262]! } + public var InstantPage_FeedbackButton: String { return self._s[2263]! } + public var Passport_FieldAddress: String { return self._s[2264]! } + public var Month_ShortMarch: String { return self._s[2265]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2266]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2267]! } + public var Passport_FloodError: String { return self._s[2268]! } + public var SecretGif_Title: String { return self._s[2269]! } + public var Passport_Language_th: String { return self._s[2271]! } + public var Passport_Address_Address: String { return self._s[2272]! } + public var Login_InvalidLastNameError: String { return self._s[2273]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2274]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2275]! } + public var ShareMenu_Send: String { return self._s[2276]! } + public var Month_GenNovember: String { return self._s[2279]! } + public var Checkout_Email: String { return self._s[2281]! } + public var NotificationsSound_Tritone: String { return self._s[2282]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2284]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2287]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2285]!, self._r[2285]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2288]!, self._r[2288]!, [_1, _1, _1, _2]) } - public var DialogList_You: String { return self._s[2286]! } - public var MediaPicker_Send: String { return self._s[2289]! } - public var Call_AudioRouteSpeaker: String { return self._s[2290]! } - public var Watch_UserInfo_Title: String { return self._s[2291]! } - public var Appearance_AccentColor: String { return self._s[2292]! } + public var DialogList_You: String { return self._s[2289]! } + public var MediaPicker_Send: String { return self._s[2292]! } + public var Call_AudioRouteSpeaker: String { return self._s[2293]! } + public var Watch_UserInfo_Title: String { return self._s[2294]! } + public var Appearance_AccentColor: String { return self._s[2295]! } public func PINNED_STICKER_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2293]!, self._r[2293]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2296]!, self._r[2296]!, [_1, _2]) } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2294]!, self._r[2294]!, [_0]) + return formatWithArgumentRanges(self._s[2297]!, self._r[2297]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2295]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2296]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2297]! } - public var Notification_CallOutgoing: String { return self._s[2298]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2299]! } - public var Call_RecordingDisabledMessage: String { return self._s[2300]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2301]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2302]! } - public var Date_DialogDateFormat: String { return self._s[2303]! } - public var Notifications_InAppNotifications: String { return self._s[2304]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2298]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2299]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2300]! } + public var Notification_CallOutgoing: String { return self._s[2301]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2302]! } + public var Call_RecordingDisabledMessage: String { return self._s[2303]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2304]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2305]! } + public var Date_DialogDateFormat: String { return self._s[2306]! } + public var Notifications_InAppNotifications: String { return self._s[2307]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2305]!, self._r[2305]!, [_0]) + return formatWithArgumentRanges(self._s[2308]!, self._r[2308]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2306]!, self._r[2306]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2309]!, self._r[2309]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[2307]! } - public var Conversation_ViewContactDetails: String { return self._s[2308]! } - 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 NewContact_Title: String { return self._s[2310]! } + public var Conversation_ViewContactDetails: String { return self._s[2311]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2313]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2314]! } + public var PrivacySettings_Title: String { return self._s[2315]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2318]! } public func CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2316]!, self._r[2316]!, [_1]) + return formatWithArgumentRanges(self._s[2319]!, self._r[2319]!, [_1]) } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2317]! } - public var Contacts_PhoneNumber: String { return self._s[2318]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2320]! } + public var Contacts_PhoneNumber: String { return self._s[2321]! } public func CHANNEL_MESSAGE_CONTACT_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2320]!, self._r[2320]!, [_1]) + return formatWithArgumentRanges(self._s[2323]!, self._r[2323]!, [_1]) } - public var Map_ShowPlaces: String { return self._s[2321]! } - public var ChatAdmins_Title: String { return self._s[2322]! } - public var InstantPage_Reference: String { return self._s[2324]! } - public var Camera_FlashOff: String { return self._s[2325]! } - public var Watch_UserInfo_Block: String { return self._s[2326]! } - public var ChatSettings_Stickers: String { return self._s[2327]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2328]! } + public var Map_ShowPlaces: String { return self._s[2324]! } + public var ChatAdmins_Title: String { return self._s[2325]! } + public var InstantPage_Reference: String { return self._s[2327]! } + public var Camera_FlashOff: String { return self._s[2328]! } + public var Watch_UserInfo_Block: String { return self._s[2329]! } + public var ChatSettings_Stickers: String { return self._s[2330]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2331]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2329]!, self._r[2329]!, [_0]) + return formatWithArgumentRanges(self._s[2332]!, self._r[2332]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2330]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2331]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2332]! } + public var Settings_ViewPhoto: String { return self._s[2333]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2334]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2335]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2334]!, self._r[2334]!, [_0]) + return formatWithArgumentRanges(self._s[2337]!, self._r[2337]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[2335]! } + public var Privacy_DeleteDrafts: String { return self._s[2338]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_0]) + return formatWithArgumentRanges(self._s[2339]!, self._r[2339]!, [_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_SavedMessagesHelp: String { return self._s[2340]! } + public var DialogList_SavedMessages: String { return self._s[2341]! } + public var GroupInfo_UpgradeButton: String { return self._s[2342]! } public func CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2340]!, self._r[2340]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_1, _2, _3]) } - public var DialogList_Pin: String { return self._s[2341]! } + public var DialogList_Pin: String { return self._s[2344]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2342]!, self._r[2342]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2345]!, self._r[2345]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_0]) + return formatWithArgumentRanges(self._s[2346]!, self._r[2346]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2344]! } - public var UserInfo_NotificationsDisable: String { return self._s[2345]! } - public var Paint_Outlined: String { return self._s[2346]! } - public var Activity_PlayingGame: String { return self._s[2347]! } - public var SearchImages_NoImagesFound: String { return self._s[2348]! } - public var SocksProxySetup_ProxyType: String { return self._s[2349]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2351]! } - public var Settings_AppLanguage: String { return self._s[2352]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2353]! } - public var Common_ChoosePhoto: String { return self._s[2354]! } - 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 var Notifications_ExceptionsNone: String { return self._s[2362]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2347]! } + public var UserInfo_NotificationsDisable: String { return self._s[2348]! } + public var Paint_Outlined: String { return self._s[2349]! } + public var Activity_PlayingGame: String { return self._s[2350]! } + public var SearchImages_NoImagesFound: String { return self._s[2351]! } + public var SocksProxySetup_ProxyType: String { return self._s[2352]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2354]! } + public var Settings_AppLanguage: String { return self._s[2355]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2356]! } + public var Common_ChoosePhoto: String { return self._s[2357]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2358]! } + public var Activity_UploadingVideo: String { return self._s[2359]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2360]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2361]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2362]! } + public var Checkout_PayWithTouchId: String { return self._s[2363]! } + public var Notifications_ExceptionsNone: String { return self._s[2365]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2363]!, self._r[2363]!, [_0]) + return formatWithArgumentRanges(self._s[2366]!, self._r[2366]!, [_0]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2365]! } - public var Passport_Address_Region: String { return self._s[2368]! } - public var PhotoEditor_TiltShift: String { return self._s[2369]! } - public var Settings_FAQ_URL: String { return self._s[2370]! } - public var SharedMedia_TitleLink: String { return self._s[2372]! } - public var Settings_PrivacySettings: String { return self._s[2373]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2374]! } - public var Passport_Language_sl: String { return self._s[2375]! } - public var Settings_SetProfilePhoto: String { return self._s[2376]! } - public var Channel_About_Help: String { return self._s[2377]! } - public var Contacts_PermissionsEnable: String { return self._s[2378]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2379]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2381]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2382]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2384]! } - public var Map_OpenInYandexMaps: String { return self._s[2386]! } - public var PhotoEditor_SaturationTool: String { return self._s[2387]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2388]! } - public var Appearance_TextSize: String { return self._s[2390]! } - public var Channel_Username_InvalidTooShort: String { return self._s[2392]! } - public var Passport_PassportInformation: String { return self._s[2395]! } - public var WatchRemote_AlertTitle: String { return self._s[2396]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2397]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2399]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[2368]! } + public var Passport_Address_Region: 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 SharedMedia_TitleLink: String { return self._s[2375]! } + public var Settings_PrivacySettings: String { return self._s[2376]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2377]! } + public var Passport_Language_sl: 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 Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2391]! } + public var Appearance_TextSize: String { return self._s[2393]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2395]! } + public var Passport_PassportInformation: String { return self._s[2398]! } + public var WatchRemote_AlertTitle: String { return self._s[2399]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2400]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2402]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2400]!, self._r[2400]!, [_0]) + return formatWithArgumentRanges(self._s[2403]!, self._r[2403]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2401]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2403]! } - public var AccessDenied_CameraDisabled: String { return self._s[2404]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2404]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2406]! } + public var AccessDenied_CameraDisabled: String { return self._s[2407]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2405]!, self._r[2405]!, [_0]) + return formatWithArgumentRanges(self._s[2408]!, self._r[2408]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2408]! } - public var DialogList_Draft: String { return self._s[2409]! } - public var Privacy_TopPeersDelete: String { return self._s[2411]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2412]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2413]! } - public var WebSearch_RecentSectionClear: String { return self._s[2414]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2416]! } - public var Common_Done: String { return self._s[2417]! } - public var AuthSessions_EmptyText: String { return self._s[2418]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2419]! } - public var Tour_Title5: String { return self._s[2420]! } + public var PhotoEditor_ContrastTool: String { return self._s[2411]! } + public var DialogList_Draft: String { return self._s[2412]! } + public var Privacy_TopPeersDelete: String { return self._s[2414]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2415]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2416]! } + public var WebSearch_RecentSectionClear: String { return self._s[2417]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2419]! } + public var Common_Done: String { return self._s[2420]! } + public var AuthSessions_EmptyText: String { return self._s[2421]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2422]! } + public var Tour_Title5: String { return self._s[2423]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2421]!, self._r[2421]!, [_0]) + return formatWithArgumentRanges(self._s[2424]!, self._r[2424]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2422]! } - public var Conversation_LinkDialogSave: String { return self._s[2423]! } - public var GroupInfo_ActionRestrict: String { return self._s[2424]! } - public var Checkout_Title: String { return self._s[2425]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2428]! } - public var Notification_RenamedGroup: String { return self._s[2429]! } - public var Checkout_PayWithFaceId: String { return self._s[2430]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2431]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2425]! } + public var Conversation_LinkDialogSave: String { return self._s[2426]! } + public var GroupInfo_ActionRestrict: String { return self._s[2427]! } + public var Checkout_Title: String { return self._s[2428]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2431]! } + public var Notification_RenamedGroup: String { return self._s[2432]! } + public var Checkout_PayWithFaceId: String { return self._s[2433]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2434]! } public func PINNED_TEXT_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2433]!, self._r[2433]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2436]!, self._r[2436]!, [_1, _2]) } - public var Checkout_WebConfirmation_Title: String { return self._s[2434]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2435]! } - public var Profile_AddToExisting: String { return self._s[2437]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2437]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2438]! } + public var Profile_AddToExisting: String { return self._s[2440]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2438]!, self._r[2438]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2441]!, self._r[2441]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2441]! } - public var Permissions_PrivacyPolicy: String { return self._s[2442]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2443]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2444]! } + public var Cache_Files: String { return self._s[2444]! } + public var Permissions_PrivacyPolicy: String { return self._s[2445]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2446]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2447]! } public func MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2446]!, self._r[2446]!, [_1]) + return formatWithArgumentRanges(self._s[2449]!, self._r[2449]!, [_1]) } - public var Calls_NoCallsPlaceholder: String { return self._s[2448]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2449]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2451]! } - public var Passport_FieldAddressHelp: String { return self._s[2452]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2453]! } + public var Calls_NoCallsPlaceholder: String { return self._s[2451]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2452]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2454]! } + public var Passport_FieldAddressHelp: String { return self._s[2455]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2456]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2454]!, self._r[2454]!, [_0]) + return formatWithArgumentRanges(self._s[2457]!, self._r[2457]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[2455]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2457]! } - public var Login_UnknownError: String { return self._s[2458]! } - public var Group_UpgradeNoticeText2: String { return self._s[2460]! } - public var Watch_Compose_AddContact: String { return self._s[2461]! } - public var Web_Error: String { return self._s[2462]! } - public var Profile_MessageLifetime1h: String { return self._s[2463]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2464]! } - public var Channel_Username_CheckingUsername: String { return self._s[2465]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[2458]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2460]! } + public var Login_UnknownError: String { return self._s[2461]! } + public var Group_UpgradeNoticeText2: String { return self._s[2463]! } + public var Watch_Compose_AddContact: String { return self._s[2464]! } + public var Web_Error: String { return self._s[2465]! } + public var Profile_MessageLifetime1h: String { return self._s[2466]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2467]! } + public var Channel_Username_CheckingUsername: String { return self._s[2468]! } public func PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2466]!, self._r[2466]!, [_1]) + return formatWithArgumentRanges(self._s[2469]!, self._r[2469]!, [_1]) } - public var Channel_AboutItem: String { return self._s[2467]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2469]! } - public var GroupInfo_SharedMedia: String { return self._s[2470]! } + public var Channel_AboutItem: String { return self._s[2470]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2472]! } + public var GroupInfo_SharedMedia: String { return self._s[2473]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2471]!, self._r[2471]!, [_1]) + return formatWithArgumentRanges(self._s[2474]!, self._r[2474]!, [_1]) } - public var Call_PhoneCallInProgressMessage: String { return self._s[2472]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2473]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[2474]! } - public var CreatePoll_AddOption: String { return self._s[2475]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2476]! } - public var Group_UpgradeNoticeHeader: String { return self._s[2477]! } - public var Channel_Management_AddModerator: String { return self._s[2478]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[2479]! } - public var NotificationsSound_Hello: String { return self._s[2480]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[2475]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2476]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[2477]! } + public var CreatePoll_AddOption: String { return self._s[2478]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2479]! } + public var Group_UpgradeNoticeHeader: String { return self._s[2480]! } + public var Channel_Management_AddModerator: String { return self._s[2481]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[2482]! } + public var NotificationsSound_Hello: String { return self._s[2483]! } public func CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2481]!, self._r[2481]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2484]!, self._r[2484]!, [_1, _2]) } - public var SocksProxySetup_SavedProxies: String { return self._s[2482]! } - public var Channel_Stickers_Placeholder: String { return self._s[2484]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2485]! } + public var Channel_Stickers_Placeholder: String { return self._s[2487]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2485]!, self._r[2485]!, [_0]) + return formatWithArgumentRanges(self._s[2488]!, self._r[2488]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2486]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[2487]! } - public var ContactInfo_BirthdayLabel: String { return self._s[2488]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2489]! } - public var AutoDownloadSettings_Channels: String { return self._s[2490]! } - public var Passport_Language_mn: String { return self._s[2491]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[2494]! } - public var Passport_Language_ja: String { return self._s[2496]! } - public var Settings_About_Title: String { return self._s[2497]! } - public var Settings_NotificationsAndSounds: String { return self._s[2498]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2499]! } - public var Settings_BlockedUsers: String { return self._s[2500]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2489]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[2490]! } + public var ContactInfo_BirthdayLabel: String { return self._s[2491]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2492]! } + public var AutoDownloadSettings_Channels: String { return self._s[2493]! } + public var Passport_Language_mn: String { return self._s[2494]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[2497]! } + public var Settings_NotificationsAndSounds: String { return self._s[2499]! } + public var Settings_About_Title: String { return self._s[2500]! } + public var Settings_BlockedUsers: String { return self._s[2501]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2502]! } + public var Passport_Language_ja: String { return self._s[2503]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_0]) - } - public var Passport_Address_AddResidentialAddress: String { return self._s[2502]! } - public var Channel_Username_Title: String { return self._s[2503]! } - public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2504]!, self._r[2504]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[2506]! } - public var AppleWatch_Title: String { return self._s[2507]! } - public var Activity_RecordingVideoMessage: String { return self._s[2508]! } - public var Weekday_Saturday: String { return self._s[2509]! } - public var Profile_CreateEncryptedChatError: String { return self._s[2510]! } - public var Common_Next: String { return self._s[2512]! } - public var Channel_Stickers_YourStickers: String { return self._s[2514]! } - public var Call_AudioRouteHeadphones: String { return self._s[2515]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2517]! } - public var Watch_Contacts_NoResults: String { return self._s[2519]! } - public var PhotoEditor_TintTool: String { return self._s[2521]! } - public var LoginPassword_ResetAccount: String { return self._s[2523]! } - public var Settings_SavedMessages: String { return self._s[2524]! } - public func MESSAGE_GIF_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2525]!, self._r[2525]!, [_1]) + public var Passport_Address_AddResidentialAddress: String { return self._s[2505]! } + public var Channel_Username_Title: String { return self._s[2506]! } + public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2507]!, self._r[2507]!, [_0]) } - public var StickerPack_Add: String { return self._s[2526]! } - public var Your_cards_number_is_invalid: String { return self._s[2527]! } - public var Checkout_TotalAmount: String { return self._s[2528]! } + public var AttachmentMenu_File: String { return self._s[2509]! } + public var AppleWatch_Title: String { return self._s[2510]! } + public var Activity_RecordingVideoMessage: String { return self._s[2511]! } + public var Weekday_Saturday: String { return self._s[2512]! } + public var Profile_CreateEncryptedChatError: String { return self._s[2513]! } + public var Common_Next: String { return self._s[2515]! } + public var Channel_Stickers_YourStickers: String { return self._s[2517]! } + public var Call_AudioRouteHeadphones: String { return self._s[2518]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2520]! } + public var Watch_Contacts_NoResults: String { return self._s[2522]! } + public var PhotoEditor_TintTool: String { return self._s[2524]! } + public var LoginPassword_ResetAccount: String { return self._s[2526]! } + public var Settings_SavedMessages: String { return self._s[2527]! } + public func MESSAGE_GIF_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2528]!, self._r[2528]!, [_1]) + } + public var StickerPack_Add: String { return self._s[2529]! } + public var Your_cards_number_is_invalid: String { return self._s[2530]! } + public var Checkout_TotalAmount: String { return self._s[2531]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2529]!, self._r[2529]!, [_0]) + return formatWithArgumentRanges(self._s[2532]!, self._r[2532]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2530]!, self._r[2530]!, [_1, _2]) - } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2531]! } - public func CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2533]!, self._r[2533]!, [_1, _2]) } - public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2534]!, self._r[2534]!, [_0]) + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2534]! } + public func CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2536]!, self._r[2536]!, [_1, _2]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[2535]! } - public var StickerPack_Share: String { return self._s[2536]! } - public var Passport_DeleteAddress: String { return self._s[2537]! } - public var Settings_Passport: String { return self._s[2538]! } - public var SharedMedia_EmptyFilesText: String { return self._s[2539]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[2540]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2541]! } - public var Contacts_PermissionsText: String { return self._s[2542]! } - public var Group_Setup_HistoryVisible: String { return self._s[2543]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[2545]! } - public var SocksProxySetup_Title: String { return self._s[2546]! } - public var Notification_Mute1h: String { return self._s[2547]! } + public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2537]!, self._r[2537]!, [_0]) + } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[2538]! } + public var StickerPack_Share: String { return self._s[2539]! } + public var Passport_DeleteAddress: String { return self._s[2540]! } + public var Settings_Passport: String { return self._s[2541]! } + public var SharedMedia_EmptyFilesText: String { return self._s[2542]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[2543]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2544]! } + public var Contacts_PermissionsText: String { return self._s[2545]! } + public var Group_Setup_HistoryVisible: String { return self._s[2546]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[2548]! } + public var SocksProxySetup_Title: String { return self._s[2549]! } + public var Notification_Mute1h: String { return self._s[2550]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2548]!, self._r[2548]!, [_0]) + return formatWithArgumentRanges(self._s[2551]!, self._r[2551]!, [_0]) } public func PINNED_CONTACT_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2549]!, self._r[2549]!, [_1]) + return formatWithArgumentRanges(self._s[2552]!, self._r[2552]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[2550]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2553]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2555]! } - public var DialogList_NoMessagesText: String { return self._s[2556]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[2557]! } - public var Privacy_Calls_P2PHelp: String { return self._s[2558]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[2560]! } - public var Common_TakePhotoOrVideo: String { return self._s[2561]! } - public var Call_StatusBusy: String { return self._s[2562]! } - public var Conversation_PinnedMessage: String { return self._s[2563]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2564]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2565]! } - public var AppleWatch_ReplyPresets: String { return self._s[2566]! } - public var Passport_DiscardMessageDescription: String { return self._s[2568]! } - public var Login_NetworkError: String { return self._s[2569]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[2553]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2556]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2558]! } + public var DialogList_NoMessagesText: String { return self._s[2559]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[2560]! } + public var Privacy_Calls_P2PHelp: String { return self._s[2561]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[2563]! } + public var Common_TakePhotoOrVideo: String { return self._s[2564]! } + public var Call_StatusBusy: String { return self._s[2565]! } + public var Conversation_PinnedMessage: String { return self._s[2566]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2567]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2568]! } + public var AppleWatch_ReplyPresets: String { return self._s[2569]! } + public var Passport_DiscardMessageDescription: String { return self._s[2571]! } + public var Login_NetworkError: String { return self._s[2572]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2570]!, self._r[2570]!, [_0]) + return formatWithArgumentRanges(self._s[2573]!, self._r[2573]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2571]!, self._r[2571]!, [_0]) + return formatWithArgumentRanges(self._s[2574]!, self._r[2574]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2572]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2575]! } public func CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2574]!, self._r[2574]!, [_1]) + return formatWithArgumentRanges(self._s[2577]!, self._r[2577]!, [_1]) } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2575]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2578]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2577]!, self._r[2577]!, [_0]) + return formatWithArgumentRanges(self._s[2580]!, self._r[2580]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[2578]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2580]! } - public var ConversationMedia_Title: String { return self._s[2581]! } - public var EncryptionKey_Title: String { return self._s[2583]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2584]! } - public var Notification_Exceptions_AddException: String { return self._s[2585]! } - public var Profile_MessageLifetime1m: String { return self._s[2586]! } + public var Call_ConnectionErrorMessage: String { return self._s[2581]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2583]! } + public var ConversationMedia_Title: String { return self._s[2584]! } + public var EncryptionKey_Title: String { return self._s[2586]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2587]! } + public var Notification_Exceptions_AddException: String { return self._s[2588]! } + public var Profile_MessageLifetime1m: String { return self._s[2589]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2587]!, self._r[2587]!, [_1]) + return formatWithArgumentRanges(self._s[2590]!, self._r[2590]!, [_1]) } - public var Month_GenMay: String { return self._s[2588]! } + public var Month_GenMay: String { return self._s[2591]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2589]!, self._r[2589]!, [_0]) + return formatWithArgumentRanges(self._s[2592]!, self._r[2592]!, [_0]) } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2590]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2592]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[2593]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[2594]! } - public var Camera_TapAndHoldForVideo: String { return self._s[2595]! } - public var Channel_JoinChannel: String { return self._s[2597]! } - public var Appearance_Animations: String { return self._s[2600]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2593]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2595]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[2596]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[2597]! } + public var Camera_TapAndHoldForVideo: String { return self._s[2598]! } + public var Channel_JoinChannel: String { return self._s[2600]! } + public var Appearance_Animations: String { return self._s[2603]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2601]!, self._r[2601]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2604]!, self._r[2604]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[2603]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[2605]! } - public var Passport_Address_Street: String { return self._s[2606]! } - public var Conversation_AddContact: String { return self._s[2607]! } - public var Login_PhonePlaceholder: String { return self._s[2608]! } - public var Channel_Members_InviteLink: String { return self._s[2610]! } - public var Bot_Stop: String { return self._s[2611]! } - public var Notification_PassportValueAddress: String { return self._s[2613]! } - public var Month_ShortJuly: String { return self._s[2614]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2615]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[2616]! } - public var Passport_Identity_ReverseSide: String { return self._s[2617]! } - public var Watch_Stickers_Recents: String { return self._s[2620]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2622]! } - public var Map_SendThisLocation: String { return self._s[2623]! } + public var Stickers_GroupStickers: String { return self._s[2606]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[2608]! } + public var Passport_Address_Street: String { return self._s[2609]! } + public var Conversation_AddContact: String { return self._s[2610]! } + public var Login_PhonePlaceholder: String { return self._s[2611]! } + public var Channel_Members_InviteLink: String { return self._s[2613]! } + public var Bot_Stop: String { return self._s[2614]! } + public var Notification_PassportValueAddress: String { return self._s[2616]! } + public var Month_ShortJuly: String { return self._s[2617]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2618]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[2619]! } + public var Passport_Identity_ReverseSide: String { return self._s[2620]! } + public var Watch_Stickers_Recents: String { return self._s[2623]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2625]! } + public var Map_SendThisLocation: String { return self._s[2626]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2624]!, self._r[2624]!, [_0]) + return formatWithArgumentRanges(self._s[2627]!, self._r[2627]!, [_0]) } public func CHANNEL_MESSAGE_STICKER_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2625]!, self._r[2625]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2628]!, self._r[2628]!, [_1, _2]) } public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2626]!, self._r[2626]!, [_0]) + return formatWithArgumentRanges(self._s[2629]!, self._r[2629]!, [_0]) } - public var ConvertToSupergroup_Note: String { return self._s[2627]! } + public var ConvertToSupergroup_Note: String { return self._s[2630]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2628]!, self._r[2628]!, [_0]) + return formatWithArgumentRanges(self._s[2631]!, self._r[2631]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2629]! } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2632]! } public func PINNED_POLL_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2630]!, self._r[2630]!, [_1]) + return formatWithArgumentRanges(self._s[2633]!, self._r[2633]!, [_1]) } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2631]!, self._r[2631]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2634]!, self._r[2634]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[2632]! } + public var Login_CallRequestState3: String { return self._s[2635]! } public func CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2635]!, self._r[2635]!, [_1]) + return formatWithArgumentRanges(self._s[2638]!, self._r[2638]!, [_1]) } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2636]! } - public var Channel_AdminLogFilter_Title: String { return self._s[2637]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[2641]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2639]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2640]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[2644]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2642]!, self._r[2642]!, [_0]) + return formatWithArgumentRanges(self._s[2645]!, self._r[2645]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[2643]! } + public var Passport_CorrectErrors: String { return self._s[2646]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2644]!, self._r[2644]!, [_0]) + return formatWithArgumentRanges(self._s[2647]!, self._r[2647]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[2645]! } - public var SharedMedia_SearchNoResults: String { return self._s[2646]! } - public var Permissions_NotificationsText_v0: String { return self._s[2647]! } - public var LoginPassword_FloodError: String { return self._s[2648]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[2650]! } + public var Map_SendMyCurrentLocation: String { return self._s[2648]! } + 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[2651]!, self._r[2651]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[2652]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2653]!, self._r[2653]!, [_0]) - } - public func Notification_PinnedAudioMessage(_ _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)]) { + return formatWithArgumentRanges(self._s[2657]!, self._r[2657]!, [_0]) + } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2655]!, self._r[2655]!, [_0]) + return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[2658]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[2660]! } - public var Contacts_PermissionsAllow: String { return self._s[2661]! } - public var ReportPeer_ReasonCopyright: String { return self._s[2662]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2663]! } - public var Paint_Duplicate: String { return self._s[2664]! } - public var Notification_ChannelMigratedFrom: String { return self._s[2665]! } - public var Passport_Address_Country: String { return self._s[2666]! } - public var Notification_RenamedChannel: String { return self._s[2668]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[2669]! } - public var Group_MessagePhotoUpdated: String { return self._s[2670]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[2671]! } - public var Conversation_ContextMenuBan: String { return self._s[2672]! } - public var TwoStepAuth_EmailSent: String { return self._s[2673]! } - public var MessagePoll_NoVotes: String { return self._s[2674]! } - public var Passport_Language_is: String { return self._s[2675]! } - public var Tour_Text5: String { return self._s[2677]! } + 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 Notification_ChannelMigratedFrom: String { return self._s[2668]! } + public var Passport_Address_Country: String { return self._s[2669]! } + public var Notification_RenamedChannel: String { return self._s[2671]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[2672]! } + public var Group_MessagePhotoUpdated: String { return self._s[2673]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[2674]! } + public var Conversation_ContextMenuBan: String { return self._s[2675]! } + public var TwoStepAuth_EmailSent: String { return self._s[2676]! } + public var MessagePoll_NoVotes: String { return self._s[2677]! } + public var Passport_Language_is: String { return self._s[2678]! } + public var Tour_Text5: String { return self._s[2680]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_1, _2]) } - public var Paint_Edit: String { return self._s[2681]! } - public var LoginPassword_ForgotPassword: String { return self._s[2684]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2685]! } + public var Paint_Edit: String { return self._s[2684]! } + public var LoginPassword_ForgotPassword: String { return self._s[2687]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2688]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2686]!, self._r[2686]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2689]!, self._r[2689]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[2687]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[2688]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[2689]! } - public var Passport_Language_uz: String { return self._s[2690]! } - public var Map_StopLiveLocation: String { return self._s[2692]! } - public var PasscodeSettings_Help: String { return self._s[2694]! } - public var NotificationsSound_Input: String { return self._s[2695]! } - public var Share_Title: String { return self._s[2697]! } - public var Login_TermsOfServiceAgree: String { return self._s[2698]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[2699]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2700]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[2701]! } - public var EnterPasscode_EnterTitle: String { return self._s[2702]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[2690]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[2691]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[2692]! } + public var Passport_Language_uz: String { return self._s[2693]! } + public var Map_StopLiveLocation: String { return self._s[2695]! } + public var PasscodeSettings_Help: String { return self._s[2697]! } + public var NotificationsSound_Input: String { return self._s[2698]! } + public var Share_Title: String { return self._s[2700]! } + public var Login_TermsOfServiceAgree: String { return self._s[2701]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[2702]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2703]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[2704]! } + public var EnterPasscode_EnterTitle: String { return self._s[2705]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2703]!, self._r[2703]!, [_0]) - } - public var Settings_CopyPhoneNumber: String { return self._s[2704]! } - public var NotificationsSound_Keys: String { return self._s[2705]! } - public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2706]!, self._r[2706]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[2707]! } - public var Message_Video: String { return self._s[2708]! } + public var Settings_CopyPhoneNumber: String { return self._s[2707]! } + public var NotificationsSound_Keys: String { return self._s[2708]! } + public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2709]!, self._r[2709]!, [_0]) + } + public var Notification_MessageLifetime1w: String { return self._s[2710]! } + public var Message_Video: String { return self._s[2711]! } public func MESSAGE_GEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2711]!, self._r[2711]!, [_1]) + return formatWithArgumentRanges(self._s[2714]!, self._r[2714]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_0]) + return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2713]!, self._r[2713]!, [_0]) + return formatWithArgumentRanges(self._s[2716]!, self._r[2716]!, [_0]) } - public var Passport_Language_mk: String { return self._s[2714]! } - public var CreatePoll_CancelConfirmation: String { return self._s[2715]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[2717]! } - public var PrivacyPolicy_Decline: String { return self._s[2718]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[2719]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[2720]! } - public var Permissions_SiriAllow_v0: String { return self._s[2721]! } + public var Passport_Language_mk: String { return self._s[2717]! } + public var CreatePoll_CancelConfirmation: String { return self._s[2718]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[2720]! } + public var PrivacyPolicy_Decline: String { return self._s[2721]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[2722]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[2723]! } + public var Permissions_SiriAllow_v0: String { return self._s[2724]! } public func CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2722]!, self._r[2722]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_1, _2, _3]) } public func CHANNEL_MESSAGES(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2723]!, self._r[2723]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_1, _2]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2724]!, self._r[2724]!, [_0]) + return formatWithArgumentRanges(self._s[2727]!, self._r[2727]!, [_0]) } - public var Paint_Regular: String { return self._s[2725]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[2726]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[2727]! } - public var GroupInfo_InviteByLink: String { return self._s[2729]! } - public var MessageTimer_Custom: String { return self._s[2730]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2731]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[2733]! } - public var Channel_Username_InvalidTaken: String { return self._s[2734]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[2735]! } + public var Paint_Regular: String { return self._s[2728]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[2729]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[2730]! } + public var GroupInfo_InviteByLink: String { return self._s[2732]! } + public var MessageTimer_Custom: String { return self._s[2733]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2734]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[2736]! } + public var Channel_Username_InvalidTaken: String { return self._s[2737]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[2738]! } public func CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2736]!, self._r[2736]!, [_1]) + return formatWithArgumentRanges(self._s[2739]!, self._r[2739]!, [_1]) } - public var Settings_ChatBackground: String { return self._s[2737]! } - public var Channel_Subscribers_Title: String { return self._s[2738]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[2739]! } - public var Watch_ConnectionDescription: String { return self._s[2740]! } + public var Settings_ChatBackground: String { return self._s[2740]! } + public var Channel_Subscribers_Title: String { return self._s[2741]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[2742]! } + public var Watch_ConnectionDescription: String { return self._s[2743]! } public func PINNED_VIDEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2744]!, self._r[2744]!, [_1]) + return formatWithArgumentRanges(self._s[2747]!, self._r[2747]!, [_1]) } - public var EditProfile_Title: String { return self._s[2745]! } - public var NotificationsSound_Bamboo: String { return self._s[2747]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[2749]! } - public var Login_SmsRequestState2: String { return self._s[2750]! } - public var Passport_Language_ar: String { return self._s[2751]! } - public var Conversation_MessageDialogEdit: String { return self._s[2752]! } - public var Common_Close: String { return self._s[2753]! } + public var EditProfile_Title: String { return self._s[2748]! } + public var NotificationsSound_Bamboo: String { return self._s[2750]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[2752]! } + public var Login_SmsRequestState2: String { return self._s[2753]! } + public var Passport_Language_ar: String { return self._s[2754]! } + public var Conversation_MessageDialogEdit: String { return self._s[2755]! } + public var Common_Close: String { return self._s[2756]! } public func CHAT_MESSAGE_TEXT_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2760]!, self._r[2760]!, [_1, _2, _3]) } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2758]!, self._r[2758]!, [_0]) + return formatWithArgumentRanges(self._s[2761]!, self._r[2761]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[2759]! } + public var UserInfo_About_Placeholder: String { return self._s[2762]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2760]!, self._r[2760]!, [_0]) + return formatWithArgumentRanges(self._s[2763]!, self._r[2763]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[2761]! } - public var Channel_Info_Banned: String { return self._s[2763]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[2764]! } + public var Channel_Info_Banned: String { return self._s[2766]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2764]!, self._r[2764]!, [_0]) + return formatWithArgumentRanges(self._s[2767]!, self._r[2767]!, [_0]) } - public var Passport_Language_my: String { return self._s[2765]! } + public var Passport_Language_my: String { return self._s[2768]! } public func CHAT_MESSAGE_GEO_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2766]!, self._r[2766]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2769]!, self._r[2769]!, [_1, _2]) } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2767]!, self._r[2767]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2770]!, self._r[2770]!, [_1, _2, _3]) } - public var Preview_CopyAddress: String { return self._s[2768]! } + public var Preview_CopyAddress: String { return self._s[2771]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2769]!, self._r[2769]!, [_0]) + return formatWithArgumentRanges(self._s[2772]!, self._r[2772]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[2770]! } - public var UserInfo_BotSettings: String { return self._s[2771]! } - public var LiveLocation_MenuStopAll: String { return self._s[2773]! } - public var Passport_PasswordCreate: String { return self._s[2774]! } - public var StickerSettings_MaskContextInfo: String { return self._s[2775]! } - public var Message_PinnedLocationMessage: String { return self._s[2776]! } - public var Map_Satellite: String { return self._s[2777]! } - public var Watch_Message_Unsupported: String { return self._s[2778]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[2779]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[2780]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[2773]! } + public var UserInfo_BotSettings: String { return self._s[2774]! } + public var LiveLocation_MenuStopAll: String { return self._s[2776]! } + public var Passport_PasswordCreate: String { return self._s[2777]! } + public var StickerSettings_MaskContextInfo: String { return self._s[2778]! } + public var Message_PinnedLocationMessage: String { return self._s[2779]! } + public var Map_Satellite: String { return self._s[2780]! } + public var Watch_Message_Unsupported: String { return self._s[2781]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[2782]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[2783]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2781]!, self._r[2781]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2784]!, self._r[2784]!, [_0, _1]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2782]! } - public var Privacy_Calls_P2PContacts: String { return self._s[2783]! } - public var NotificationsSound_None: String { return self._s[2784]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[2786]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2785]! } + public var Privacy_Calls_P2PContacts: String { return self._s[2786]! } + public var NotificationsSound_None: String { return self._s[2787]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[2789]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2787]!, self._r[2787]!, [_1]) + return formatWithArgumentRanges(self._s[2790]!, self._r[2790]!, [_1]) } - public var Cache_Indexing: String { return self._s[2788]! } - public var DialogList_RecentTitlePeople: String { return self._s[2790]! } - public var DialogList_EncryptionRejected: String { return self._s[2791]! } - public var GroupInfo_Administrators: String { return self._s[2792]! } - public var Passport_ScanPassportHelp: String { return self._s[2793]! } - public var Application_Name: String { return self._s[2794]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[2795]! } - public var Passport_Identity_TranslationHelp: String { return self._s[2797]! } + public var Cache_Indexing: String { return self._s[2791]! } + public var DialogList_RecentTitlePeople: String { return self._s[2793]! } + public var DialogList_EncryptionRejected: String { return self._s[2794]! } + public var GroupInfo_Administrators: String { return self._s[2795]! } + public var Passport_ScanPassportHelp: String { return self._s[2796]! } + public var Application_Name: String { return self._s[2797]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[2798]! } + public var Passport_Identity_TranslationHelp: String { return self._s[2800]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2798]!, self._r[2798]!, [_0]) + return formatWithArgumentRanges(self._s[2801]!, self._r[2801]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2799]!, self._r[2799]!, [_0]) + return formatWithArgumentRanges(self._s[2802]!, self._r[2802]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[2800]! } - public var Privacy_ChatsTitle: String { return self._s[2801]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[2802]! } - public var Watch_Suggestion_HoldOn: String { return self._s[2803]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[2804]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2805]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2806]! } - public var Channel_Setup_TypePublic: String { return self._s[2809]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[2803]! } + public var Privacy_ChatsTitle: String { return self._s[2804]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[2805]! } + public var Watch_Suggestion_HoldOn: String { return self._s[2806]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[2807]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2808]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2809]! } + public var Channel_Setup_TypePublic: String { return self._s[2812]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2810]!, self._r[2810]!, [_0]) + return formatWithArgumentRanges(self._s[2813]!, self._r[2813]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[2812]! } - public var Map_OpenInMaps: String { return self._s[2814]! } - public var NotificationsSound_Tremolo: String { return self._s[2816]! } + public var Channel_TypeSetup_Title: String { return self._s[2815]! } + public var Map_OpenInMaps: String { return self._s[2817]! } + public var NotificationsSound_Tremolo: String { return self._s[2819]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2818]!, self._r[2818]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2821]!, self._r[2821]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[2819]! } - public var Passport_PasswordHelp: String { return self._s[2820]! } - public var Login_CodeExpiredError: String { return self._s[2821]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[2822]! } - public var Conversation_TitleUnmute: String { return self._s[2823]! } - public var Passport_Identity_ScansHelp: String { return self._s[2824]! } - public var Passport_Language_lo: String { return self._s[2825]! } - public var Camera_FlashAuto: String { return self._s[2826]! } - public var Common_Cancel: String { return self._s[2827]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2828]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2829]! } - public var Conversation_ReportSpamConfirmation: String { return self._s[2830]! } - public var ChatSettings_Title: String { return self._s[2832]! } - public var Passport_PasswordReset: String { return self._s[2833]! } - public var SocksProxySetup_TypeNone: String { return self._s[2834]! } - public var PhoneNumberHelp_Help: String { return self._s[2836]! } - public var Checkout_EnterPassword: String { return self._s[2837]! } - public var Activity_UploadingDocument: String { return self._s[2839]! } - public var Share_AuthTitle: String { return self._s[2840]! } - public var State_Connecting: String { return self._s[2841]! } - public var Profile_MessageLifetime1w: String { return self._s[2842]! } - public var Conversation_ContextMenuReport: String { return self._s[2843]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[2844]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[2845]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[2822]! } + public var Passport_PasswordHelp: String { return self._s[2823]! } + public var Login_CodeExpiredError: String { return self._s[2824]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[2825]! } + public var Conversation_TitleUnmute: String { return self._s[2826]! } + public var Passport_Identity_ScansHelp: String { return self._s[2827]! } + public var Passport_Language_lo: String { return self._s[2828]! } + public var Camera_FlashAuto: String { return self._s[2829]! } + public var Common_Cancel: String { return self._s[2830]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2831]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2832]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[2833]! } + public var ChatSettings_Title: String { return self._s[2835]! } + public var Passport_PasswordReset: String { return self._s[2836]! } + public var SocksProxySetup_TypeNone: String { return self._s[2837]! } + public var PhoneNumberHelp_Help: String { return self._s[2839]! } + public var Checkout_EnterPassword: String { return self._s[2840]! } + public var Activity_UploadingDocument: String { return self._s[2842]! } + public var Share_AuthTitle: String { return self._s[2843]! } + public var State_Connecting: String { return self._s[2844]! } + public var Profile_MessageLifetime1w: String { return self._s[2845]! } + public var Conversation_ContextMenuReport: String { return self._s[2846]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[2847]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[2848]! } public func CHAT_DELETE_MEMBER_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2846]!, self._r[2846]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2849]!, self._r[2849]!, [_1, _2, _3]) } - public var AuthSessions_Terminate: String { return self._s[2847]! } + public var AuthSessions_Terminate: String { return self._s[2850]! } public func MESSAGE_TEXT_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2848]!, self._r[2848]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2851]!, self._r[2851]!, [_1, _2]) } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[2849]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[2850]! } - public var PhotoEditor_Set: String { return self._s[2851]! } - public var EmptyGroupInfo_Title: String { return self._s[2852]! } - public var Login_PadPhoneHelp: String { return self._s[2853]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[2856]! } - public var NotificationsSound_Complete: String { return self._s[2857]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[2852]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[2853]! } + public var PhotoEditor_Set: String { return self._s[2854]! } + public var EmptyGroupInfo_Title: String { return self._s[2855]! } + public var Login_PadPhoneHelp: String { return self._s[2856]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[2859]! } + public var NotificationsSound_Complete: String { return self._s[2860]! } public func CHAT_MESSAGE_CONTACT_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2858]!, self._r[2858]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2861]!, self._r[2861]!, [_1, _2]) } - public var Group_Info_AdminLog: String { return self._s[2859]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[2860]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[2861]! } - public var Conversation_Admin: String { return self._s[2863]! } - public var Conversation_GifTooltip: String { return self._s[2864]! } - public var Passport_NotLoggedInMessage: String { return self._s[2865]! } - public var Profile_MessageLifetimeForever: String { return self._s[2866]! } + 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 func MESSAGE_POLL_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2868]!, self._r[2868]!, [_1]) + return formatWithArgumentRanges(self._s[2871]!, self._r[2871]!, [_1]) } - public var SharedMedia_EmptyTitle: String { return self._s[2869]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[2870]! } - public var Username_Help: String { return self._s[2871]! } - public var DialogList_LanguageTooltip: String { return self._s[2873]! } - public var Map_LoadError: String { return self._s[2874]! } - public var Notification_Exceptions_NewException: String { return self._s[2875]! } - public var TwoStepAuth_EmailTitle: String { return self._s[2876]! } - public var WatchRemote_AlertText: String { return self._s[2877]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[2879]! } + public var SharedMedia_EmptyTitle: String { return self._s[2872]! } + 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[2883]! } public func CHANNEL_MESSAGE_GEOLIVE_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2880]!, self._r[2880]!, [_1]) + return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_1]) } public func LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2881]!, self._r[2881]!, [_1]) + return formatWithArgumentRanges(self._s[2885]!, self._r[2885]!, [_1]) } - public var Passport_Address_CountryPlaceholder: String { return self._s[2882]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[2886]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_0]) + return formatWithArgumentRanges(self._s[2887]!, self._r[2887]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2888]!, self._r[2888]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[2885]! } - public var AccessDenied_VideoMicrophone: String { return self._s[2887]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2888]! } - public var Cache_ClearNone: String { return self._s[2889]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[2890]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2891]! } + public var Group_AdminLog_EmptyText: String { return self._s[2889]! } + public var AccessDenied_VideoMicrophone: String { return self._s[2891]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2892]! } + public var Cache_ClearNone: String { return self._s[2893]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[2894]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2895]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2892]!, self._r[2892]!, [_0]) + return formatWithArgumentRanges(self._s[2896]!, self._r[2896]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[2893]! } + public var Passport_Identity_Country: String { return self._s[2897]! } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2894]!, self._r[2894]!, [_0]) + return formatWithArgumentRanges(self._s[2898]!, self._r[2898]!, [_0]) } - public var AccessDenied_Settings: String { return self._s[2895]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2896]! } - public var Month_ShortMay: String { return self._s[2897]! } - public var Compose_NewGroup: String { return self._s[2898]! } - public var Group_Setup_TypePrivate: String { return self._s[2900]! } - public var Login_PadPhoneHelpTitle: String { return self._s[2901]! } - public var Appearance_ThemeDayClassic: String { return self._s[2902]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[2903]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[2904]! } - public var Conversation_typing: String { return self._s[2906]! } - public var Paint_Masks: String { return self._s[2907]! } + public var AccessDenied_Settings: String { return self._s[2899]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2900]! } + public var Month_ShortMay: String { return self._s[2901]! } + public var Compose_NewGroup: String { return self._s[2902]! } + public var Group_Setup_TypePrivate: String { return self._s[2904]! } + 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 func PINNED_DOC_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2908]!, self._r[2908]!, [_1]) + return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_1]) } - public var Username_InvalidTaken: String { return self._s[2909]! } + public var Username_InvalidTaken: String { return self._s[2913]! } public func CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2910]!, self._r[2910]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2914]!, self._r[2914]!, [_1, _2]) } - public var Call_StatusNoAnswer: String { return self._s[2911]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2912]! } - public var Passport_Identity_Selfie: String { return self._s[2913]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[2914]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2915]! } - public var Conversation_ClearSecretHistory: String { return self._s[2916]! } - public var NetworkUsageSettings_Title: String { return self._s[2918]! } - public var Your_cards_security_code_is_invalid: String { return self._s[2920]! } + public var Call_StatusNoAnswer: String { return self._s[2915]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2916]! } + public var Passport_Identity_Selfie: String { return self._s[2917]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[2918]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2919]! } + public var Conversation_ClearSecretHistory: String { return self._s[2920]! } + public var NetworkUsageSettings_Title: String { return self._s[2922]! } + public var Your_cards_security_code_is_invalid: String { return self._s[2924]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2922]!, self._r[2922]!, [_0]) + return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2923]!, self._r[2923]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2927]!, self._r[2927]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[2925]! } - public var Map_LiveLocationTitle: String { return self._s[2926]! } - public var Login_InfoAvatarAdd: String { return self._s[2927]! } - public var Passport_Identity_FilesView: String { return self._s[2928]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[2929]! } - public var Privacy_Calls_NeverAllow: String { return self._s[2930]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[2929]! } + public var Map_LiveLocationTitle: String { return self._s[2930]! } + public var Login_InfoAvatarAdd: String { return self._s[2931]! } + public var Passport_Identity_FilesView: String { return self._s[2932]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[2933]! } + public var Privacy_Calls_NeverAllow: String { return self._s[2934]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2931]!, self._r[2931]!, [_0]) + return formatWithArgumentRanges(self._s[2935]!, self._r[2935]!, [_0]) } - public var TwoStepAuth_ConfirmationText: String { return self._s[2932]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2933]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2934]! } - public var Tour_Title2: String { return self._s[2935]! } - public var Conversation_FileOpenIn: String { return self._s[2936]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2937]! } - public var Wallpaper_Set: String { return self._s[2938]! } - public var Passport_Identity_Translations: String { return self._s[2940]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2936]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2937]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2938]! } + public var Tour_Title2: String { return self._s[2939]! } + public var Conversation_FileOpenIn: String { return self._s[2940]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2941]! } + public var Wallpaper_Set: String { return self._s[2942]! } + public var Passport_Identity_Translations: String { return self._s[2944]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2941]!, self._r[2941]!, [_0]) + return formatWithArgumentRanges(self._s[2945]!, self._r[2945]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[2942]! } + public var Channel_LeaveChannel: String { return self._s[2946]! } public func MESSAGE_NOTEXT_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_1]) + return formatWithArgumentRanges(self._s[2947]!, self._r[2947]!, [_1]) } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2944]!, self._r[2944]!, [_1]) + return formatWithArgumentRanges(self._s[2948]!, self._r[2948]!, [_1]) } - public var PhotoEditor_HighlightsTint: String { return self._s[2945]! } - public var Passport_Email_Delete: String { return self._s[2946]! } - public var Conversation_Mute: String { return self._s[2948]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[2950]! } + public var PhotoEditor_HighlightsTint: String { return self._s[2949]! } + public var Passport_Email_Delete: String { return self._s[2950]! } + public var Conversation_Mute: String { return self._s[2952]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[2954]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2951]!, self._r[2951]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2955]!, self._r[2955]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[2952]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2953]! } - public var Common_No: String { return self._s[2954]! } - public var Weekday_Sunday: String { return self._s[2955]! } - public var Notification_Reply: String { return self._s[2956]! } - public var Conversation_ViewMessage: String { return self._s[2957]! } + public var Calls_CallTabDescription: String { return self._s[2956]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2957]! } + public var Common_No: String { return self._s[2958]! } + public var Weekday_Sunday: String { return self._s[2959]! } + public var Notification_Reply: String { return self._s[2960]! } + public var Conversation_ViewMessage: String { return self._s[2961]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_0]) + return formatWithArgumentRanges(self._s[2962]!, self._r[2962]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2959]!, self._r[2959]!, [_0]) + return formatWithArgumentRanges(self._s[2963]!, self._r[2963]!, [_0]) } - public var Message_PinnedDocumentMessage: String { return self._s[2960]! } - public var DialogList_TabTitle: String { return self._s[2962]! } - public var Passport_FieldEmail: String { return self._s[2963]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2964]! } - public var Passport_Address_TypeBankStatement: String { return self._s[2965]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2966]! } - public var Privacy_Calls_P2P: String { return self._s[2967]! } + public var Message_PinnedDocumentMessage: String { return self._s[2964]! } + public var DialogList_TabTitle: String { return self._s[2966]! } + public var Passport_FieldEmail: String { return self._s[2967]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2968]! } + public var Passport_Address_TypeBankStatement: String { return self._s[2969]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2970]! } + public var Privacy_Calls_P2P: String { return self._s[2971]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2969]!, self._r[2969]!, [_0]) + return formatWithArgumentRanges(self._s[2973]!, self._r[2973]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[2970]! } - public var EnterPasscode_ChangeTitle: String { return self._s[2971]! } - public var Passport_InfoText: String { return self._s[2972]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2973]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[2974]! } + public var EnterPasscode_ChangeTitle: String { return self._s[2975]! } + public var Passport_InfoText: String { return self._s[2976]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2977]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2974]!, self._r[2974]!, [_0]) + return formatWithArgumentRanges(self._s[2978]!, self._r[2978]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2975]!, self._r[2975]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_1, _2, _3]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2976]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2978]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[2980]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2982]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2983]!, self._r[2983]!, [_1, _2]) } public func MESSAGE_ROUND_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2980]!, self._r[2980]!, [_1]) + return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_1]) } public func PHONE_CALL_MISSED_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2982]!, self._r[2982]!, [_1]) + return formatWithArgumentRanges(self._s[2986]!, self._r[2986]!, [_1]) } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0]) + return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0]) } - public var DialogList_Unread: String { return self._s[2985]! } - public var User_DeletedAccount: String { return self._s[2986]! } + public var DialogList_Unread: String { return self._s[2989]! } + public var User_DeletedAccount: String { return self._s[2990]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) + return formatWithArgumentRanges(self._s[2991]!, self._r[2991]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[2988]! } - public var SharedMedia_CategoryMedia: String { return self._s[2989]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2990]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2991]! } - public var Watch_ChatList_Compose: String { return self._s[2992]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2993]! } - public var Watch_Microphone_Access: String { return self._s[2994]! } - public var Group_Setup_HistoryHeader: String { return self._s[2995]! } - public var Activity_UploadingPhoto: String { return self._s[2996]! } + public var UserInfo_NotificationsDefault: String { return self._s[2992]! } + public var SharedMedia_CategoryMedia: String { return self._s[2993]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2994]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2995]! } + public var Watch_ChatList_Compose: String { return self._s[2996]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2997]! } + public var Watch_Microphone_Access: String { return self._s[2998]! } + public var Group_Setup_HistoryHeader: String { return self._s[2999]! } + public var Activity_UploadingPhoto: String { return self._s[3000]! } public func MESSAGE_VIDEO_SECRET_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2998]!, self._r[2998]!, [_1]) + return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_1]) } - public var Conversation_Edit: String { return self._s[2999]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3000]! } - public var Login_TermsOfServiceDecline: String { return self._s[3001]! } - public var Message_PinnedContactMessage: String { return self._s[3002]! } + public var Conversation_Edit: String { return self._s[3003]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3004]! } + public var Login_TermsOfServiceDecline: String { return self._s[3005]! } + public var Message_PinnedContactMessage: String { return self._s[3006]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3003]!, self._r[3003]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3008]!, self._r[3008]!, [_1, _2, _3, _4, _5]) } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3006]! } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3007]! } - public var Message_PinnedPhotoMessage: String { return self._s[3008]! } - public var Passport_FieldPhone: String { return self._s[3009]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3010]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3012]! } - public var Conversation_Call: String { return self._s[3013]! } - public var Common_TakePhoto: String { return self._s[3015]! } - public var Channel_NotificationLoading: String { return self._s[3016]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3010]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3011]! } + public var Message_PinnedPhotoMessage: String { return self._s[3012]! } + public var Passport_FieldPhone: String { return self._s[3013]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3014]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3016]! } + public var Conversation_Call: String { return self._s[3017]! } + public var Common_TakePhoto: String { return self._s[3019]! } + public var Channel_NotificationLoading: String { return self._s[3020]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3017]!, self._r[3017]!, [_0]) + return formatWithArgumentRanges(self._s[3021]!, self._r[3021]!, [_0]) } - public var Permissions_SiriTitle_v0: String { return self._s[3018]! } + public var Permissions_SiriTitle_v0: String { return self._s[3022]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0]) + return formatWithArgumentRanges(self._s[3023]!, self._r[3023]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3020]! } - public var Common_edit: String { return self._s[3021]! } - public var PrivacySettings_AuthSessions: String { return self._s[3022]! } - public var Month_ShortJune: String { return self._s[3023]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3024]! } - public var Call_ReportSend: String { return self._s[3025]! } - public var Watch_LastSeen_JustNow: String { return self._s[3026]! } - public var Notifications_MessageNotifications: String { return self._s[3027]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3029]! } - public var Group_Status: String { return self._s[3030]! } + public var Channel_MessagePhotoRemoved: String { return self._s[3024]! } + public var Common_edit: String { return self._s[3025]! } + public var PrivacySettings_AuthSessions: String { return self._s[3026]! } + public var Month_ShortJune: String { return self._s[3027]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3028]! } + public var Call_ReportSend: String { return self._s[3029]! } + public var Watch_LastSeen_JustNow: String { return self._s[3030]! } + public var Notifications_MessageNotifications: String { return self._s[3031]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3033]! } + public var Group_Status: String { return self._s[3034]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3031]!, self._r[3031]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3035]!, self._r[3035]!, [_0, _1]) } - public var ShareMenu_ShareTo: String { return self._s[3032]! } - public var Conversation_Moderate_Ban: String { return self._s[3033]! } + public var ShareMenu_ShareTo: String { return self._s[3036]! } + public var Conversation_Moderate_Ban: String { return self._s[3037]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3034]!, self._r[3034]!, [_0]) - } - public var SharedMedia_ViewInChat: String { return self._s[3035]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3036]! } - public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_0]) } - public var Appearance_ReduceMotion: String { return self._s[3039]! } - public var Map_OpenInHereMaps: String { return self._s[3040]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[3041]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3042]! } - public var PhotoEditor_Skip: String { return self._s[3043]! } - public func CHANNEL_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public var SharedMedia_ViewInChat: String { return self._s[3039]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3040]! } + public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3042]!, self._r[3042]!, [_0]) + } + public var Appearance_ReduceMotion: String { return self._s[3043]! } + public var Map_OpenInHereMaps: String { return self._s[3044]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[3045]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3046]! } + public var PhotoEditor_Skip: String { return self._s[3047]! } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortSeconds(_ value: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Minutes(_ 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 StickerPack_RemoveMaskCount(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPhotos(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Years(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Map_ETAHours(_ value: Int32) -> String { + public func Contacts_ImportersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusOnline(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func MessageTimer_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPolls(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, "\(value)") } - public func UserCount(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Seconds(_ value: Int32) -> String { + public func CHANNEL_MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Days(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Hours(_ value: Int32) -> String { + public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGES_SEPARATED(_ value: Int32) -> String { + public func CHAT_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedAudios(_ value: Int32) -> String { + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)") } - public func InviteText_ContactsCountText(_ value: Int32) -> String { + public func ForwardedVideos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + public func MuteFor_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Video(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedVideoMessages(_ value: Int32) -> String { + public func ForwardedAuthorsOthers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func CHAT_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Passport_Scans(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGES_SEPARATED(_ value: Int32) -> String { + public func Call_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedGifs(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Link(_ value: Int32) -> String { + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedAuthorsOthers(_ value: Int32) -> String { + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_SharePhoto(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedStickers(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public func CHAT_MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, "\(value)") } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + public func SharedMedia_Link(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedLocations(_ value: Int32) -> String { + public func ForwardedVideoMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGES_SEPARATED(_ value: Int32) -> String { + public func MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + public func Map_ETAMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + public func LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)") } - public func QuickSend_Photos(_ value: Int32) -> String { + public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Days(_ value: Int32) -> String { + public func MuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedMessages(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public func Media_ShareItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Months(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Days(_ value: Int32) -> String { + public func CHANNEL_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareItem(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedVideos(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreExtended(_ value: Int32) -> String { + public func CHANNEL_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + public func ForwardedFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + public func StickerPack_StickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Generic(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedFiles(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Map_ETAMinutes(_ value: Int32) -> String { + public func MessageTimer_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Invitation_Members(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func MuteFor_Hours(_ 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 { + public func Media_SharePhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_StickerCount(_ value: Int32) -> String { + public func MessageTimer_Years(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedContacts(_ value: Int32) -> String { + public func MuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[84 * 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[85 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + public func StickerPack_AddStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func MessageTimer_Months(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_File(_ value: Int32) -> String { + public func ForwardedContacts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareVideo(_ value: Int32) -> String { + public func LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortDays(_ value: Int32) -> String { + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)") } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)") } diff --git a/TelegramUI/Resources/PresentationStrings.mapping b/TelegramUI/Resources/PresentationStrings.mapping index 39ad32e5a2f3c775989219c765f7af4bc346bc53..035409e63f9d08357c74dc9f90f6476721e00986 100644 GIT binary patch delta 20894 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 Date: Mon, 7 Jan 2019 20:52:30 +0100 Subject: [PATCH 4/5] UI Fixes --- TelegramUI.xcodeproj/project.pbxproj | 4 + TelegramUI/BotPaymentSwitchItemNode.swift | 2 + .../ChannelBannedMemberController.swift | 2 +- TelegramUI/ChannelInfoController.swift | 15 +- TelegramUI/ChatHistoryEntriesForView.swift | 4 +- TelegramUI/ChatHistoryListNode.swift | 51 +- TelegramUI/ChatListController.swift | 5 +- TelegramUI/ChatListItem.swift | 6 +- TelegramUI/ChatListNode.swift | 8 +- TelegramUI/ChatListSearchContainerNode.swift | 2 +- TelegramUI/ChatMessageActionItemNode.swift | 2 +- .../ContactMultiselectionController.swift | 2 +- .../DefaultDarkAccentPresentationTheme.swift | 4 +- TelegramUI/DefaultDarkPresentationTheme.swift | 4 +- TelegramUI/DefaultPresentationTheme.swift | 4 +- TelegramUI/GroupInfoController.swift | 107 ++- TelegramUI/HashtagSearchController.swift | 14 +- TelegramUI/IconSwitchNode.swift | 16 + TelegramUI/ItemListSwitchItem.swift | 19 +- TelegramUI/MergedItemListItem.swift | 3 + TelegramUI/PresentationResourceKey.swift | 1 - TelegramUI/PresentationResourcesChat.swift | 6 - TelegramUI/PresentationStrings.swift | 829 +++++++++--------- TelegramUI/PresentationTheme.swift | 6 +- .../Resources/PresentationStrings.mapping | Bin 99013 -> 98969 bytes TelegramUI/StoredMessageFromSearchPeer.swift | 8 +- TelegramUI/UserInfoController.swift | 2 + 27 files changed, 608 insertions(+), 518 deletions(-) create mode 100644 TelegramUI/MergedItemListItem.swift diff --git a/TelegramUI.xcodeproj/project.pbxproj b/TelegramUI.xcodeproj/project.pbxproj index 0635d5f732..64934ce34f 100644 --- a/TelegramUI.xcodeproj/project.pbxproj +++ b/TelegramUI.xcodeproj/project.pbxproj @@ -112,6 +112,7 @@ D005808B21CAB8F000CB7CD3 /* VoipDerivedState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D005808A21CAB8F000CB7CD3 /* VoipDerivedState.swift */; }; D00580A021DCF0A200CB7CD3 /* WallpaperListPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D005809F21DCF0A200CB7CD3 /* WallpaperListPreviewController.swift */; }; D00580A221DCF0B700CB7CD3 /* WallpaperListPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580A121DCF0B700CB7CD3 /* WallpaperListPreviewControllerNode.swift */; }; + D00580B121E3DEF200CB7CD3 /* MergedItemListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580B021E3DEF200CB7CD3 /* MergedItemListItem.swift */; }; D0068FA821760FA300D1B315 /* StoreDownloadedMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */; }; D007019C2029E8F2006B9E34 /* LegqacyICloudFileController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019B2029E8F2006B9E34 /* LegqacyICloudFileController.swift */; }; D007019E2029EFDD006B9E34 /* ICloudResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019D2029EFDD006B9E34 /* ICloudResources.swift */; }; @@ -1232,6 +1233,7 @@ D005808A21CAB8F000CB7CD3 /* VoipDerivedState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoipDerivedState.swift; sourceTree = ""; }; D005809F21DCF0A200CB7CD3 /* WallpaperListPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperListPreviewController.swift; sourceTree = ""; }; D00580A121DCF0B700CB7CD3 /* WallpaperListPreviewControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperListPreviewControllerNode.swift; sourceTree = ""; }; + D00580B021E3DEF200CB7CD3 /* MergedItemListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MergedItemListItem.swift; sourceTree = ""; }; D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreDownloadedMedia.swift; sourceTree = ""; }; D007019B2029E8F2006B9E34 /* LegqacyICloudFileController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegqacyICloudFileController.swift; sourceTree = ""; }; D007019D2029EFDD006B9E34 /* ICloudResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICloudResources.swift; sourceTree = ""; }; @@ -3924,6 +3926,7 @@ D0E305AE1E5BA8E000D7A3A2 /* ItemListLoadingIndicatorEmptyStateItem.swift */, D09AEFD31E5BAF67005C1A8B /* ItemListTextEmptyStateItem.swift */, D0BFAE5A20AB35D200793CF2 /* IconSwitchNode.swift */, + D00580B021E3DEF200CB7CD3 /* MergedItemListItem.swift */, ); name = Items; sourceTree = ""; @@ -5484,6 +5487,7 @@ 9F06830B21A404C4001D8EDB /* NotificationExcetionSettingsController.swift in Sources */, D0EC6D891EB9F58800EBF1C3 /* ChatSecretAutoremoveTimerActionSheet.swift in Sources */, D05D8B782195E0050064586F /* SetupTwoStepVerificationContentNode.swift in Sources */, + D00580B121E3DEF200CB7CD3 /* MergedItemListItem.swift in Sources */, D0EC6D8A1EB9F58800EBF1C3 /* ChatInfo.swift in Sources */, D0EC6D8B1EB9F58800EBF1C3 /* ChatHistoryNavigationStack.swift in Sources */, D0EC6D8C1EB9F58800EBF1C3 /* NavigateToChatController.swift in Sources */, diff --git a/TelegramUI/BotPaymentSwitchItemNode.swift b/TelegramUI/BotPaymentSwitchItemNode.swift index d24982ae01..2a9975a7c3 100644 --- a/TelegramUI/BotPaymentSwitchItemNode.swift +++ b/TelegramUI/BotPaymentSwitchItemNode.swift @@ -66,6 +66,8 @@ final class BotPaymentSwitchItemNode: BotPaymentItemNode { self.switchNode.frameColor = theme.list.itemSwitchColors.frameColor self.switchNode.contentColor = theme.list.itemSwitchColors.contentColor self.switchNode.handleColor = theme.list.itemSwitchColors.handleColor + self.switchNode.positiveContentColor = theme.list.itemSwitchColors.positiveColor + self.switchNode.negativeContentColor = theme.list.itemSwitchColors.negativeColor } let leftInset: CGFloat = 16.0 diff --git a/TelegramUI/ChannelBannedMemberController.swift b/TelegramUI/ChannelBannedMemberController.swift index 7ccd38fe29..754d967bb5 100644 --- a/TelegramUI/ChannelBannedMemberController.swift +++ b/TelegramUI/ChannelBannedMemberController.swift @@ -510,7 +510,7 @@ public func channelBannedMemberController(account: Account, peerId: PeerId, memb if state.updating { rightNavigationButton = ItemListNavigationButton(content: .none, style: .activity, enabled: true, action: {}) } else { - rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Done), style: .bold, enabled: true, action: { + rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.GroupPermission_ApplyAlertAction), style: .bold, enabled: true, action: { let _ = (peerView.get() |> take(1) |> deliverOnMainQueue).start(next: { view in diff --git a/TelegramUI/ChannelInfoController.swift b/TelegramUI/ChannelInfoController.swift index 891c1c5138..6b6f0def8c 100644 --- a/TelegramUI/ChannelInfoController.swift +++ b/TelegramUI/ChannelInfoController.swift @@ -301,15 +301,15 @@ private enum ChannelInfoEntry: ItemListNodeEntry { }) case let .admins(theme, text, value): - return ItemListDisclosureItem(theme: theme, icon: PresentationResourcesChat.groupInfoAdminsIcon(theme), title: text, label: value, sectionId: self.section, style: .plain, action: { + return ItemListDisclosureItem(theme: theme, title: text, label: value, sectionId: self.section, style: .plain, action: { arguments.openAdmins() }) case let .members(theme, text, value): - return ItemListDisclosureItem(theme: theme, icon: PresentationResourcesChat.groupInfoMembersIcon(theme), title: text, label: value, sectionId: self.section, style: .plain, action: { + return ItemListDisclosureItem(theme: theme, title: text, label: value, sectionId: self.section, style: .plain, action: { arguments.openMembers() }) case let .banned(theme, text, value): - return ItemListDisclosureItem(theme: theme, icon: PresentationResourcesChat.groupInfoBannedIcon(theme), title: text, label: value, sectionId: self.section, style: .plain, action: { + return ItemListDisclosureItem(theme: theme, title: text, label: value, sectionId: self.section, style: .plain, action: { arguments.openBanned() }) case let .signMessages(theme, text, value): @@ -473,6 +473,8 @@ private func channelInfoEntries(account: Account, presentationData: Presentation } else { notificationsText = presentationData.strings.UserInfo_NotificationsDisabled } + } else if case .default = notificationSettings.messageSound { + notificationsText = presentationData.strings.UserInfo_NotificationsEnabled } else { notificationsText = localizedPeerNotificationSoundString(strings: presentationData.strings, sound: notificationSettings.messageSound, default: globalNotificationSettings.effective.channels.sound) } @@ -794,6 +796,11 @@ public func channelInfoController(account: Account, peerId: PeerId) -> ViewContr } } + var canEditChannel = false + if let peer = view.peers[view.peerId] as? TelegramChannel { + canEditChannel = peer.hasPermission(.changeInfo) + } + var leftNavigationButton: ItemListNavigationButton? var rightNavigationButton: ItemListNavigationButton? if let editingState = state.editingState { @@ -856,7 +863,7 @@ public func channelInfoController(account: Account, peerId: PeerId) -> ViewContr })) }) } - } else { + } else if canEditChannel { rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Edit), style: .regular, enabled: true, action: { if let channel = peer as? TelegramChannel, case .broadcast = channel.info { var text = "" diff --git a/TelegramUI/ChatHistoryEntriesForView.swift b/TelegramUI/ChatHistoryEntriesForView.swift index 2563ffd7b6..c29789fe1d 100644 --- a/TelegramUI/ChatHistoryEntriesForView.swift +++ b/TelegramUI/ChatHistoryEntriesForView.swift @@ -113,7 +113,7 @@ func chatHistoryEntriesForView(location: ChatLocation, view: MessageHistoryView, entries.insert(.ChatInfoEntry(botInfo.description, presentationData), at: 0) } var isEmpty = true - if entries.count <= 2 { + if entries.count <= 3 { loop: for entry in view.entries { switch entry { case let .MessageEntry(entry): @@ -121,7 +121,7 @@ func chatHistoryEntriesForView(location: ChatLocation, view: MessageHistoryView, for media in entry.0.media { if let action = media as? TelegramMediaAction { switch action.action { - case .groupCreated, .photoUpdated: + case .groupCreated, .photoUpdated, .channelMigratedFromGroup, .groupMigratedToChannel: isEmptyMedia = true default: break diff --git a/TelegramUI/ChatHistoryListNode.swift b/TelegramUI/ChatHistoryListNode.swift index a3b415b0da..aadca16f7c 100644 --- a/TelegramUI/ChatHistoryListNode.swift +++ b/TelegramUI/ChatHistoryListNode.swift @@ -121,27 +121,48 @@ struct ChatHistoryListViewTransition { let animateIn: Bool } -private func maxMessageIndexForEntries(_ entries: [ChatHistoryEntry], indexRange: (Int, Int)) -> (incoming: MessageIndex?, overall: MessageIndex?) { +private func maxMessageIndexForEntries(_ view: ChatHistoryView, indexRange: (Int, Int)) -> (incoming: MessageIndex?, overall: MessageIndex?) { + var incoming: MessageIndex? var overall: MessageIndex? - for i in (indexRange.0 ... indexRange.1).reversed() { - if case let .MessageEntry(message, _, _, _, _, _) = entries[i] { - if overall == nil { - overall = MessageIndex(message) + var nextLowestIndex: MessageIndex? + if indexRange.0 >= 0 && indexRange.0 < view.filteredEntries.count { + if indexRange.0 > 0 { + nextLowestIndex = view.filteredEntries[indexRange.0 - 1].index + } + } + var nextHighestIndex: MessageIndex? + if indexRange.1 >= 0 && indexRange.1 < view.filteredEntries.count { + if indexRange.1 < view.filteredEntries.count - 1 { + nextHighestIndex = view.filteredEntries[indexRange.1 + 1].index + } + } + for i in (0 ..< view.originalView.entries.count).reversed() { + let index = view.originalView.entries[i].index + if let nextLowestIndex = nextLowestIndex { + if index <= nextLowestIndex { + continue } - if message.flags.contains(.Incoming) { - return (MessageIndex(message), overall) + } + if let nextHighestIndex = nextHighestIndex { + if index >= nextHighestIndex { + continue } - } else if case let .MessageGroupEntry(_, messages, _) = entries[i] { - let index = MessageIndex(messages[messages.count - 1].0) - if overall == nil { + } + if case let .MessageEntry(messageEntry) = view.originalView.entries[i] { + if overall == nil || overall! < index { overall = index } - if messages[messages.count - 1].0.flags.contains(.Incoming) { - return (index, overall) + if messageEntry.0.flags.contains(.Incoming) { + if incoming == nil || incoming! < index { + incoming = index + } + } + if incoming != nil { + return (incoming, overall) } } } - return (nil, overall) + return (incoming, overall) } private func mappedInsertEntries(account: Account, chatLocation: ChatLocation, associatedData: ChatMessageItemAssociatedData, controllerInteraction: ChatControllerInteraction, mode: ChatHistoryListMode, entries: [ChatHistoryViewTransitionInsertEntry]) -> [ListViewInsertItem] { @@ -654,7 +675,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } if readIndexRange.0 <= readIndexRange.1 { - let (maxIncomingIndex, maxOverallIndex) = maxMessageIndexForEntries(historyView.filteredEntries, indexRange: readIndexRange) + let (maxIncomingIndex, maxOverallIndex) = maxMessageIndexForEntries(historyView, indexRange: readIndexRange) if let maxIncomingIndex = maxIncomingIndex { strongSelf.updateMaxVisibleReadIncomingMessageIndex(maxIncomingIndex) @@ -980,7 +1001,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { visibleFirstIndex += 1 }*/ if visibleFirstIndex <= visible.lastIndex { - let (messageIndex, _) = maxMessageIndexForEntries(transition.historyView.filteredEntries, indexRange: (transition.historyView.filteredEntries.count - 1 - visible.lastIndex, transition.historyView.filteredEntries.count - 1 - visibleFirstIndex)) + let (messageIndex, _) = maxMessageIndexForEntries(transition.historyView, indexRange: (transition.historyView.filteredEntries.count - 1 - visible.lastIndex, transition.historyView.filteredEntries.count - 1 - visibleFirstIndex)) if let messageIndex = messageIndex { strongSelf.updateMaxVisibleReadIncomingMessageIndex(messageIndex) } diff --git a/TelegramUI/ChatListController.swift b/TelegramUI/ChatListController.swift index 377e963c7d..2707d2da53 100644 --- a/TelegramUI/ChatListController.swift +++ b/TelegramUI/ChatListController.swift @@ -436,10 +436,11 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie self.chatListDisplayNode.requestOpenMessageFromSearch = { [weak self] peer, messageId in if let strongSelf = self { - strongSelf.openMessageFromSearchDisposable.set((storedMessageFromSearchPeer(account: strongSelf.account, peer: peer) |> deliverOnMainQueue).start(completed: { [weak strongSelf] in + strongSelf.openMessageFromSearchDisposable.set((storedMessageFromSearchPeer(account: strongSelf.account, peer: peer) + |> deliverOnMainQueue).start(next: { [weak strongSelf] actualPeerId in if let strongSelf = strongSelf { if let navigationController = strongSelf.navigationController as? NavigationController { - navigateToChatController(navigationController: navigationController, account: strongSelf.account, chatLocation: .peer(messageId.peerId), messageId: messageId, purposefulAction: { + navigateToChatController(navigationController: navigationController, account: strongSelf.account, chatLocation: .peer(actualPeerId), messageId: messageId, purposefulAction: { self?.deactivateSearch(animated: false) }) strongSelf.chatListDisplayNode.chatListNode.clearHighlightAnimated(true) diff --git a/TelegramUI/ChatListItem.swift b/TelegramUI/ChatListItem.swift index c5e19d1ca1..761fe86321 100644 --- a/TelegramUI/ChatListItem.swift +++ b/TelegramUI/ChatListItem.swift @@ -100,8 +100,10 @@ class ChatListItem: ListViewItem { func selected(listView: ListView) { switch self.content { case let .peer(message, peer, _, _, _, _, _, isAd, _): - if let message = message { - self.interaction.messageSelected(message, isAd) + if let message = message, let peer = peer.peer { + self.interaction.messageSelected(peer, message, isAd) + } else if let peer = peer.peer { + self.interaction.peerSelected(peer) } else if let peer = peer.peers[peer.peerId] { self.interaction.peerSelected(peer) } diff --git a/TelegramUI/ChatListNode.swift b/TelegramUI/ChatListNode.swift index 19a956c98c..55367fc02a 100644 --- a/TelegramUI/ChatListNode.swift +++ b/TelegramUI/ChatListNode.swift @@ -60,7 +60,7 @@ final class ChatListNodeInteraction { let activateSearch: () -> Void let peerSelected: (Peer) -> Void let togglePeerSelected: (PeerId) -> Void - let messageSelected: (Message, Bool) -> Void + let messageSelected: (Peer, Message, Bool) -> Void let groupSelected: (PeerGroupId) -> Void let addContact: (String) -> Void let setPeerIdWithRevealedOptions: (PeerId?, PeerId?) -> Void @@ -72,7 +72,7 @@ final class ChatListNodeInteraction { var highlightedChatLocation: ChatListHighlightedLocation? - init(activateSearch: @escaping () -> Void, peerSelected: @escaping (Peer) -> Void, togglePeerSelected: @escaping (PeerId) -> Void, messageSelected: @escaping (Message, Bool) -> Void, groupSelected: @escaping (PeerGroupId) -> Void, addContact: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, setItemPinned: @escaping (PinnedItemId, Bool) -> Void, setPeerMuted: @escaping (PeerId, Bool) -> Void, deletePeer: @escaping (PeerId) -> Void, updatePeerGrouping: @escaping (PeerId, Bool) -> Void, togglePeerMarkedUnread: @escaping (PeerId, Bool) -> Void) { + init(activateSearch: @escaping () -> Void, peerSelected: @escaping (Peer) -> Void, togglePeerSelected: @escaping (PeerId) -> Void, messageSelected: @escaping (Peer, Message, Bool) -> Void, groupSelected: @escaping (PeerGroupId) -> Void, addContact: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, setItemPinned: @escaping (PinnedItemId, Bool) -> Void, setPeerMuted: @escaping (PeerId, Bool) -> Void, deletePeer: @escaping (PeerId) -> Void, updatePeerGrouping: @escaping (PeerId, Bool) -> Void, togglePeerMarkedUnread: @escaping (PeerId, Bool) -> Void) { self.activateSearch = activateSearch self.peerSelected = peerSelected self.togglePeerSelected = togglePeerSelected @@ -386,9 +386,9 @@ final class ChatListNode: ListView { } return state } - }, messageSelected: { [weak self] message, isAd in + }, messageSelected: { [weak self] peer, message, isAd in if let strongSelf = self, let peerSelected = strongSelf.peerSelected { - peerSelected(message.id.peerId, true, isAd) + peerSelected(peer.id, true, isAd) } }, groupSelected: { [weak self] groupId in if let strongSelf = self, let groupSelected = strongSelf.groupSelected { diff --git a/TelegramUI/ChatListSearchContainerNode.swift b/TelegramUI/ChatListSearchContainerNode.swift index e9af505fc2..ac5a9bb3a2 100644 --- a/TelegramUI/ChatListSearchContainerNode.swift +++ b/TelegramUI/ChatListSearchContainerNode.swift @@ -842,7 +842,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode { let _ = addRecentlySearchedPeer(postbox: account.postbox, peerId: peer.id).start() self?.listNode.clearHighlightAnimated(true) }, togglePeerSelected: { _ in - }, messageSelected: { [weak self] message, _ in + }, messageSelected: { [weak self] peer, message, _ in if let peer = message.peers[message.id.peerId] { openMessage(peer, message.id) } diff --git a/TelegramUI/ChatMessageActionItemNode.swift b/TelegramUI/ChatMessageActionItemNode.swift index 4aef798898..eb3e3b1088 100644 --- a/TelegramUI/ChatMessageActionItemNode.swift +++ b/TelegramUI/ChatMessageActionItemNode.swift @@ -232,7 +232,7 @@ private func universalServiceMessageString(theme: ChatPresentationThemeData?, st case .joinedByLink: attributedString = addAttributesToStringWithRanges(strings.Notification_JoinedGroupByLink(authorName), body: bodyAttributes, argumentAttributes: peerMentionsAttributes(primaryTextColor: primaryTextColor, peerIds: [(0, message.author?.id)])) case .channelMigratedFromGroup, .groupMigratedToChannel: - attributedString = NSAttributedString(string: strings.Notification_ChannelMigratedFrom, font: titleFont, textColor: primaryTextColor) + attributedString = NSAttributedString(string: "", font: titleFont, textColor: primaryTextColor) case let .messageAutoremoveTimeoutUpdated(timeout): if timeout > 0 { let timeValue = timeIntervalString(strings: strings, value: timeout) diff --git a/TelegramUI/ContactMultiselectionController.swift b/TelegramUI/ContactMultiselectionController.swift index 80319e1cf0..d6bf917117 100644 --- a/TelegramUI/ContactMultiselectionController.swift +++ b/TelegramUI/ContactMultiselectionController.swift @@ -136,7 +136,7 @@ class ContactMultiselectionController: ViewController { let rightNavigationButton = UIBarButtonItem(title: self.presentationData.strings.Common_Next, style: .done, target: self, action: #selector(self.rightNavigationButtonPressed)) self.rightNavigationButton = rightNavigationButton self.navigationItem.rightBarButtonItem = self.rightNavigationButton - rightNavigationButton.isEnabled = false + rightNavigationButton.isEnabled = count != 0 case .channelCreation: self.titleView.title = CounterContollerTitle(title: self.presentationData.strings.GroupInfo_AddParticipantTitle, counter: "") let rightNavigationButton = UIBarButtonItem(title: self.presentationData.strings.Common_Next, style: .done, target: self, action: #selector(self.rightNavigationButtonPressed)) diff --git a/TelegramUI/DefaultDarkAccentPresentationTheme.swift b/TelegramUI/DefaultDarkAccentPresentationTheme.swift index b5f4c96852..282ebc067c 100644 --- a/TelegramUI/DefaultDarkAccentPresentationTheme.swift +++ b/TelegramUI/DefaultDarkAccentPresentationTheme.swift @@ -57,7 +57,9 @@ private let rootController = PresentationThemeRootController( private let switchColors = PresentationThemeSwitch( frameColor: UIColor(rgb: 0xDBF5FF, alpha: 0.5), handleColor: UIColor(rgb: 0x121212), - contentColor: accentColor + contentColor: accentColor, + positiveColor: accentColor, + negativeColor: destructiveColor ) private let list = PresentationThemeList( diff --git a/TelegramUI/DefaultDarkPresentationTheme.swift b/TelegramUI/DefaultDarkPresentationTheme.swift index 65d30f6cdd..4a06a0d340 100644 --- a/TelegramUI/DefaultDarkPresentationTheme.swift +++ b/TelegramUI/DefaultDarkPresentationTheme.swift @@ -57,7 +57,9 @@ private let rootController = PresentationThemeRootController( private let switchColors = PresentationThemeSwitch( frameColor: UIColor(rgb: 0x545454), handleColor: UIColor(rgb: 0x121212), - contentColor: UIColor(rgb: 0xb2b2b2) + contentColor: UIColor(rgb: 0xb2b2b2), + positiveColor: UIColor(rgb: 0x000000), + negativeColor: destructiveColor ) private let list = PresentationThemeList( diff --git a/TelegramUI/DefaultPresentationTheme.swift b/TelegramUI/DefaultPresentationTheme.swift index e3e5040831..c9375b9a4b 100644 --- a/TelegramUI/DefaultPresentationTheme.swift +++ b/TelegramUI/DefaultPresentationTheme.swift @@ -57,7 +57,9 @@ private func makeDefaultPresentationTheme(accentColor: UIColor, serviceBackgroun let switchColors = PresentationThemeSwitch( frameColor: UIColor(rgb: 0xe0e0e0), handleColor: UIColor(rgb: 0xffffff), - contentColor: UIColor(rgb: 0x42d451) + contentColor: UIColor(rgb: 0x42d451), + positiveColor: UIColor(rgb: 0x00B12C), + negativeColor: destructiveColor ) let list = PresentationThemeList( diff --git a/TelegramUI/GroupInfoController.swift b/TelegramUI/GroupInfoController.swift index 5590588bcd..5982a87c74 100644 --- a/TelegramUI/GroupInfoController.swift +++ b/TelegramUI/GroupInfoController.swift @@ -28,7 +28,6 @@ private final class GroupInfoArguments { let promotePeer: (RenderedChannelParticipant) -> Void let restrictPeer: (RenderedChannelParticipant) -> Void let removePeer: (PeerId) -> Void - let convertToSupergroup: () -> Void let leave: () -> Void let displayUsernameShareMenu: (String) -> Void let displayUsernameContextMenu: (String) -> Void @@ -37,7 +36,7 @@ private final class GroupInfoArguments { let openStickerPackSetup: () -> Void let openGroupTypeSetup: () -> Void - init(account: Account, peerId: PeerId, avatarAndNameInfoContext: ItemListAvatarAndNameInfoItemContext, tapAvatarAction: @escaping () -> Void, changeProfilePhoto: @escaping () -> Void, pushController: @escaping (ViewController) -> Void, presentController: @escaping (ViewController, ViewControllerPresentationArguments) -> Void, changeNotificationMuteSettings: @escaping () -> Void, openPreHistory: @escaping () -> Void, openSharedMedia: @escaping () -> Void, openAdministrators: @escaping () -> Void, openPermissions: @escaping () -> Void, updateEditingName: @escaping (ItemListAvatarAndNameInfoItemName) -> Void, updateEditingDescriptionText: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, addMember: @escaping () -> Void, promotePeer: @escaping (RenderedChannelParticipant) -> Void, restrictPeer: @escaping (RenderedChannelParticipant) -> Void, removePeer: @escaping (PeerId) -> Void, convertToSupergroup: @escaping () -> Void, leave: @escaping () -> Void, displayUsernameShareMenu: @escaping (String) -> Void, displayUsernameContextMenu: @escaping (String) -> Void, displayAboutContextMenu: @escaping (String) -> Void, aboutLinkAction: @escaping (TextLinkItemActionType, TextLinkItem) -> Void, openStickerPackSetup: @escaping () -> Void, openGroupTypeSetup: @escaping () -> Void) { + init(account: Account, peerId: PeerId, avatarAndNameInfoContext: ItemListAvatarAndNameInfoItemContext, tapAvatarAction: @escaping () -> Void, changeProfilePhoto: @escaping () -> Void, pushController: @escaping (ViewController) -> Void, presentController: @escaping (ViewController, ViewControllerPresentationArguments) -> Void, changeNotificationMuteSettings: @escaping () -> Void, openPreHistory: @escaping () -> Void, openSharedMedia: @escaping () -> Void, openAdministrators: @escaping () -> Void, openPermissions: @escaping () -> Void, updateEditingName: @escaping (ItemListAvatarAndNameInfoItemName) -> Void, updateEditingDescriptionText: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, addMember: @escaping () -> Void, promotePeer: @escaping (RenderedChannelParticipant) -> Void, restrictPeer: @escaping (RenderedChannelParticipant) -> Void, removePeer: @escaping (PeerId) -> Void, leave: @escaping () -> Void, displayUsernameShareMenu: @escaping (String) -> Void, displayUsernameContextMenu: @escaping (String) -> Void, displayAboutContextMenu: @escaping (String) -> Void, aboutLinkAction: @escaping (TextLinkItemActionType, TextLinkItem) -> Void, openStickerPackSetup: @escaping () -> Void, openGroupTypeSetup: @escaping () -> Void) { self.account = account self.peerId = peerId self.avatarAndNameInfoContext = avatarAndNameInfoContext @@ -57,7 +56,6 @@ private final class GroupInfoArguments { self.promotePeer = promotePeer self.restrictPeer = restrictPeer self.removePeer = removePeer - self.convertToSupergroup = convertToSupergroup self.leave = leave self.displayUsernameShareMenu = displayUsernameShareMenu self.displayUsernameContextMenu = displayUsernameContextMenu @@ -147,7 +145,6 @@ private enum GroupInfoEntry: ItemListNodeEntry { case permissions(PresentationTheme, String, String) case addMember(PresentationTheme, String, editing: Bool) case member(PresentationTheme, PresentationStrings, PresentationDateTimeFormat, PresentationPersonNameOrder, index: Int, peerId: PeerId, peer: Peer, participant: RenderedChannelParticipant?, presence: PeerPresence?, memberStatus: GroupInfoMemberStatus, editing: ItemListPeerItemEditing, revealActions: [ParticipantRevealAction], enabled: Bool) - case convertToSupergroup(PresentationTheme, String) case leave(PresentationTheme, String) var section: ItemListSectionId { @@ -164,7 +161,7 @@ private enum GroupInfoEntry: ItemListNodeEntry { return GroupInfoSection.memberManagement.rawValue case .addMember, .member: return GroupInfoSection.members.rawValue - case .convertToSupergroup, .leave: + case .leave: return GroupInfoSection.leave.rawValue } } @@ -230,12 +227,6 @@ private enum GroupInfoEntry: ItemListNodeEntry { } else { return false } - case let .convertToSupergroup(lhsTheme, lhsText): - if case let .convertToSupergroup(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { - return true - } else { - return false - } case let .aboutHeader(lhsTheme, lhsText): if case let .aboutHeader(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { return true @@ -407,8 +398,6 @@ private enum GroupInfoEntry: ItemListNodeEntry { return 17 case let .member(_, _, _, _, index, _, _, _, _, _, _, _, _): return 20 + index - case .convertToSupergroup: - return 100000 case .leave: return 100000 + 1 } @@ -516,10 +505,6 @@ private enum GroupInfoEntry: ItemListNodeEntry { }, removePeer: { peerId in arguments.removePeer(peerId) }) - case let .convertToSupergroup(theme, title): - return ItemListActionItem(theme: theme, title: title, kind: .generic, alignment: .center, sectionId: self.section, style: .blocks, action: { - arguments.convertToSupergroup() - }) case let .leave(theme, title): return ItemListActionItem(theme: theme, title: title, kind: .destructive, alignment: .center, sectionId: self.section, style: .blocks, action: { arguments.leave() @@ -746,6 +731,8 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa } else { notificationsText = presentationData.strings.UserInfo_NotificationsDisabled } + } else if case .default = peerNotificationSettings.messageSound { + notificationsText = presentationData.strings.UserInfo_NotificationsEnabled } else { notificationsText = localizedPeerNotificationSoundString(strings: presentationData.strings, sound: peerNotificationSettings.messageSound, default: globalNotificationSettings.effective.channels.sound) } @@ -1023,35 +1010,40 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa var canPromote: Bool var canRestrict: Bool - switch participant.participant { - case .creator: - canPromote = false - canRestrict = false - case let .member(_, _, adminRights, bannedRights): - if channel.hasPermission(.addAdmins) { - canPromote = true - } else { + if participant.peer.id == account.peerId { + canPromote = false + canRestrict = false + } else { + switch participant.participant { + case .creator: canPromote = false - } - if channel.hasPermission(.banMembers) { - canRestrict = true - } else { canRestrict = false - } - if canPromote { - if let bannedRights = bannedRights { - if bannedRights.restrictedBy != account.peerId && !channel.flags.contains(.isCreator) { - canPromote = false + case let .member(_, _, adminRights, bannedRights): + if channel.hasPermission(.addAdmins) { + canPromote = true + } else { + canPromote = false + } + if channel.hasPermission(.banMembers) { + canRestrict = true + } else { + canRestrict = false + } + if canPromote { + if let bannedRights = bannedRights { + if bannedRights.restrictedBy != account.peerId && !channel.flags.contains(.isCreator) { + canPromote = false + } } } - } - if canRestrict { - if let adminRights = adminRights { - if adminRights.promotedBy != account.peerId && !channel.flags.contains(.isCreator) { - canRestrict = false + if canRestrict { + if let adminRights = adminRights { + if adminRights.promotedBy != account.peerId && !channel.flags.contains(.isCreator) { + canRestrict = false + } } } - } + } } var peerActions: [ParticipantRevealAction] = [] @@ -1069,9 +1061,6 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa if let group = view.peers[view.peerId] as? TelegramGroup { if case .Member = group.membership { - if case .creator = group.role, state.editingState != nil { - entries.append(.convertToSupergroup(presentationData.theme, presentationData.strings.GroupInfo_ConvertToSupergroup)) - } entries.append(.leave(presentationData.theme, presentationData.strings.Group_LeaveGroup)) } } else if let channel = view.peers[view.peerId] as? TelegramChannel { @@ -1659,8 +1648,6 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl } } removeMemberDisposable.set(signal.start()) - }, convertToSupergroup: { - pushControllerImpl?(convertToSupergroupController(account: account, peerId: peerId)) }, leave: { let _ = (peerView.get() |> take(1) @@ -1761,7 +1748,24 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl } } - let rightNavigationButton: ItemListNavigationButton + var canEditGroupInfo = false + if let group = view.peers[view.peerId] as? TelegramGroup { + switch group.role { + case .admin, .creator: + canEditGroupInfo = true + case .member: + break + } + if !group.hasBannedPermission(.banChangeInfo) { + canEditGroupInfo = true + } + } else if let channel = view.peers[view.peerId] as? TelegramChannel { + if channel.hasPermission(.changeInfo) { + canEditGroupInfo = true + } + } + + var rightNavigationButton: ItemListNavigationButton? var secondaryRightNavigationButton: ItemListNavigationButton? if let editingState = state.editingState { var doneEnabled = true @@ -1820,7 +1824,7 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl })) }) } - } else { + } else if canEditGroupInfo { rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Edit), style: .regular, enabled: true, action: { if let peer = peer as? TelegramGroup { var text = "" @@ -1847,7 +1851,14 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl } }) } - + } else { + if peer is TelegramChannel { + rightNavigationButton = ItemListNavigationButton(content: .icon(.search), style: .regular, enabled: true, action: { + updateState { state in + return state.withUpdatedSearchingMembers(true) + } + }) + } } var searchItem: ItemListControllerSearch? diff --git a/TelegramUI/HashtagSearchController.swift b/TelegramUI/HashtagSearchController.swift index f9bb2c88c4..e2c9507366 100644 --- a/TelegramUI/HashtagSearchController.swift +++ b/TelegramUI/HashtagSearchController.swift @@ -44,15 +44,13 @@ final class HashtagSearchController: TelegramController { let interaction = ChatListNodeInteraction(activateSearch: { }, peerSelected: { peer in }, togglePeerSelected: { _ in - }, messageSelected: { [weak self] message, _ in + }, messageSelected: { [weak self] peer, message, _ in if let strongSelf = self { - if let peer = message.peers[message.id.peerId] { - strongSelf.openMessageFromSearchDisposable.set((storedMessageFromSearchPeer(account: strongSelf.account, peer: peer) |> deliverOnMainQueue).start(completed: { - if let strongSelf = self { - (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatController(account: strongSelf.account, chatLocation: .peer(message.id.peerId), messageId: message.id)) - } - })) - } + strongSelf.openMessageFromSearchDisposable.set((storedMessageFromSearchPeer(account: strongSelf.account, peer: peer) |> deliverOnMainQueue).start(next: { actualPeerId in + if let strongSelf = self { + (strongSelf.navigationController as? NavigationController)?.pushViewController(ChatController(account: strongSelf.account, chatLocation: .peer(actualPeerId), messageId: message.id.peerId == actualPeerId ? message.id : nil)) + } + })) strongSelf.controllerNode.listNode.clearHighlightAnimated(true) } }, groupSelected: { _ in diff --git a/TelegramUI/IconSwitchNode.swift b/TelegramUI/IconSwitchNode.swift index f37982b6eb..9658550e9b 100644 --- a/TelegramUI/IconSwitchNode.swift +++ b/TelegramUI/IconSwitchNode.swift @@ -38,6 +38,20 @@ class IconSwitchNode: ASDisplayNode { } } } + public var positiveContentColor = UIColor(rgb: 0x00ff00) { + didSet { + if self.isNodeLoaded { + (self.view as! IconSwitchNodeView).setPositiveContentColor(self.positiveContentColor) + } + } + } + public var negativeContentColor = UIColor(rgb: 0xff0000) { + didSet { + if self.isNodeLoaded { + (self.view as! IconSwitchNodeView).setNegativeContentColor(self.negativeContentColor) + } + } + } private var _isOn: Bool = false public var isOn: Bool { @@ -68,6 +82,8 @@ class IconSwitchNode: ASDisplayNode { (self.view as! UISwitch).tintColor = self.frameColor //(self.view as! UISwitch).thumbTintColor = self.handleColor (self.view as! UISwitch).onTintColor = self.contentColor + (self.view as! IconSwitchNodeView).setNegativeContentColor(self.negativeContentColor) + (self.view as! IconSwitchNodeView).setPositiveContentColor(self.positiveContentColor) (self.view as! UISwitch).setOn(self._isOn, animated: false) diff --git a/TelegramUI/ItemListSwitchItem.swift b/TelegramUI/ItemListSwitchItem.swift index 8ff7d9a13c..8ad810cbaf 100644 --- a/TelegramUI/ItemListSwitchItem.swift +++ b/TelegramUI/ItemListSwitchItem.swift @@ -75,10 +75,25 @@ private protocol ItemListSwitchNodeImpl { var frameColor: UIColor { get set } var contentColor: UIColor { get set } var handleColor: UIColor { get set } + var positiveContentColor: UIColor { get set } + var negativeContentColor: UIColor { get set } } extension SwitchNode: ItemListSwitchNodeImpl { - + var positiveContentColor: UIColor { + get { + return .white + } set(value) { + + } + } + var negativeContentColor: UIColor { + get { + return .white + } set(value) { + + } + } } extension IconSwitchNode: ItemListSwitchNodeImpl { @@ -214,6 +229,8 @@ class ItemListSwitchItemNode: ListViewItemNode { strongSelf.switchNode.frameColor = item.theme.list.itemSwitchColors.frameColor strongSelf.switchNode.contentColor = item.theme.list.itemSwitchColors.contentColor strongSelf.switchNode.handleColor = item.theme.list.itemSwitchColors.handleColor + strongSelf.switchNode.positiveContentColor = item.theme.list.itemSwitchColors.positiveColor + strongSelf.switchNode.negativeContentColor = item.theme.list.itemSwitchColors.negativeColor } let _ = titleApply() diff --git a/TelegramUI/MergedItemListItem.swift b/TelegramUI/MergedItemListItem.swift new file mode 100644 index 0000000000..9a30829567 --- /dev/null +++ b/TelegramUI/MergedItemListItem.swift @@ -0,0 +1,3 @@ +import Foundation + + diff --git a/TelegramUI/PresentationResourceKey.swift b/TelegramUI/PresentationResourceKey.swift index 313f2b9d4f..149cd1edc8 100644 --- a/TelegramUI/PresentationResourceKey.swift +++ b/TelegramUI/PresentationResourceKey.swift @@ -219,7 +219,6 @@ enum PresentationResourceKey: Int32 { case groupInfoAdminsIcon case groupInfoPermissionsIcon case groupInfoMembersIcon - case groupInfoBannedIcon case emptyChatListCheckIcon } diff --git a/TelegramUI/PresentationResourcesChat.swift b/TelegramUI/PresentationResourcesChat.swift index 6ae2162f4d..65ff5725fb 100644 --- a/TelegramUI/PresentationResourcesChat.swift +++ b/TelegramUI/PresentationResourcesChat.swift @@ -953,12 +953,6 @@ struct PresentationResourcesChat { }) } - static func groupInfoBannedIcon(_ theme: PresentationTheme) -> UIImage? { - return theme.image(PresentationResourceKey.groupInfoBannedIcon.rawValue, { _ in - return UIImage(bundleImageName: "Chat/Info/GroupBannedIcon")?.precomposed() - }) - } - static func emptyChatListCheckIcon(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.emptyChatListCheckIcon.rawValue, { _ in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Empty Chat/ListCheckIcon"), color: theme.chat.serviceMessage.components.withDefaultWallpaper.primaryText) diff --git a/TelegramUI/PresentationStrings.swift b/TelegramUI/PresentationStrings.swift index fcbffdd734..5f93f8e965 100644 --- a/TelegramUI/PresentationStrings.swift +++ b/TelegramUI/PresentationStrings.swift @@ -3112,460 +3112,459 @@ public final class PresentationStrings { 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 Notification_ChannelMigratedFrom: String { return self._s[2668]! } - public var Passport_Address_Country: String { return self._s[2669]! } - public var Notification_RenamedChannel: String { return self._s[2671]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[2672]! } - public var Group_MessagePhotoUpdated: String { return self._s[2673]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[2674]! } - public var Conversation_ContextMenuBan: String { return self._s[2675]! } - public var TwoStepAuth_EmailSent: String { return self._s[2676]! } - public var MessagePoll_NoVotes: String { return self._s[2677]! } - public var Passport_Language_is: String { return self._s[2678]! } - public var Tour_Text5: String { return self._s[2680]! } + 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 func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2681]!, self._r[2681]!, [_1, _2]) } - public var Paint_Edit: String { return self._s[2684]! } - public var LoginPassword_ForgotPassword: String { return self._s[2687]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2688]! } + public var Paint_Edit: String { return self._s[2683]! } + public var LoginPassword_ForgotPassword: String { return self._s[2686]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2687]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2689]!, self._r[2689]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2688]!, self._r[2688]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[2690]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[2691]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[2692]! } - public var Passport_Language_uz: String { return self._s[2693]! } - public var Map_StopLiveLocation: String { return self._s[2695]! } - public var PasscodeSettings_Help: String { return self._s[2697]! } - public var NotificationsSound_Input: String { return self._s[2698]! } - public var Share_Title: String { return self._s[2700]! } - public var Login_TermsOfServiceAgree: String { return self._s[2701]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[2702]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2703]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[2704]! } - public var EnterPasscode_EnterTitle: String { return self._s[2705]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[2689]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[2690]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[2691]! } + public var Passport_Language_uz: String { return self._s[2692]! } + public var Map_StopLiveLocation: String { return self._s[2694]! } + public var PasscodeSettings_Help: String { return self._s[2696]! } + public var NotificationsSound_Input: String { return self._s[2697]! } + public var Share_Title: String { return self._s[2699]! } + public var Login_TermsOfServiceAgree: String { return self._s[2700]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[2701]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2702]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[2703]! } + public var EnterPasscode_EnterTitle: String { return self._s[2704]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2706]!, self._r[2706]!, [_0]) + return formatWithArgumentRanges(self._s[2705]!, self._r[2705]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[2707]! } - public var NotificationsSound_Keys: String { return self._s[2708]! } + public var Settings_CopyPhoneNumber: String { return self._s[2706]! } + public var NotificationsSound_Keys: String { return self._s[2707]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2709]!, self._r[2709]!, [_0]) + return formatWithArgumentRanges(self._s[2708]!, self._r[2708]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[2710]! } - public var Message_Video: String { return self._s[2711]! } + public var Notification_MessageLifetime1w: String { return self._s[2709]! } + public var Message_Video: String { return self._s[2710]! } public func MESSAGE_GEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2714]!, self._r[2714]!, [_1]) + return formatWithArgumentRanges(self._s[2713]!, self._r[2713]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_0]) + return formatWithArgumentRanges(self._s[2714]!, self._r[2714]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2716]!, self._r[2716]!, [_0]) + return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_0]) } - public var Passport_Language_mk: String { return self._s[2717]! } - public var CreatePoll_CancelConfirmation: String { return self._s[2718]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[2720]! } - public var PrivacyPolicy_Decline: String { return self._s[2721]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[2722]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[2723]! } - public var Permissions_SiriAllow_v0: String { return self._s[2724]! } + public var Passport_Language_mk: String { return self._s[2716]! } + public var CreatePoll_CancelConfirmation: String { return self._s[2717]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[2719]! } + public var PrivacyPolicy_Decline: String { return self._s[2720]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[2721]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[2722]! } + public var Permissions_SiriAllow_v0: String { return self._s[2723]! } public func CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2724]!, self._r[2724]!, [_1, _2, _3]) } public func CHANNEL_MESSAGES(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_1, _2]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2727]!, self._r[2727]!, [_0]) + return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_0]) } - public var Paint_Regular: String { return self._s[2728]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[2729]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[2730]! } - public var GroupInfo_InviteByLink: String { return self._s[2732]! } - public var MessageTimer_Custom: String { return self._s[2733]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2734]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[2736]! } - public var Channel_Username_InvalidTaken: String { return self._s[2737]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[2738]! } + public var Paint_Regular: String { return self._s[2727]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[2728]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[2729]! } + public var GroupInfo_InviteByLink: String { return self._s[2731]! } + public var MessageTimer_Custom: String { return self._s[2732]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2733]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[2735]! } + public var Channel_Username_InvalidTaken: String { return self._s[2736]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[2737]! } public func CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2739]!, self._r[2739]!, [_1]) + return formatWithArgumentRanges(self._s[2738]!, self._r[2738]!, [_1]) } - public var Settings_ChatBackground: String { return self._s[2740]! } - public var Channel_Subscribers_Title: String { return self._s[2741]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[2742]! } - public var Watch_ConnectionDescription: String { return self._s[2743]! } + public var Settings_ChatBackground: String { return self._s[2739]! } + public var Channel_Subscribers_Title: String { return self._s[2740]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[2741]! } + public var Watch_ConnectionDescription: String { return self._s[2742]! } public func PINNED_VIDEO_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2747]!, self._r[2747]!, [_1]) + return formatWithArgumentRanges(self._s[2746]!, self._r[2746]!, [_1]) } - public var EditProfile_Title: String { return self._s[2748]! } - public var NotificationsSound_Bamboo: String { return self._s[2750]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[2752]! } - public var Login_SmsRequestState2: String { return self._s[2753]! } - public var Passport_Language_ar: String { return self._s[2754]! } - public var Conversation_MessageDialogEdit: String { return self._s[2755]! } - public var Common_Close: String { return self._s[2756]! } + public var EditProfile_Title: String { return self._s[2747]! } + public var NotificationsSound_Bamboo: String { return self._s[2749]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[2751]! } + public var Login_SmsRequestState2: String { return self._s[2752]! } + public var Passport_Language_ar: String { return self._s[2753]! } + public var Conversation_MessageDialogEdit: String { return self._s[2754]! } + public var Common_Close: String { return self._s[2755]! } public func CHAT_MESSAGE_TEXT_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2760]!, self._r[2760]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2759]!, self._r[2759]!, [_1, _2, _3]) } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2761]!, self._r[2761]!, [_0]) + return formatWithArgumentRanges(self._s[2760]!, self._r[2760]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[2762]! } + public var UserInfo_About_Placeholder: String { return self._s[2761]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2763]!, self._r[2763]!, [_0]) + return formatWithArgumentRanges(self._s[2762]!, self._r[2762]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[2764]! } - public var Channel_Info_Banned: String { return self._s[2766]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[2763]! } + public var Channel_Info_Banned: String { return self._s[2765]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2767]!, self._r[2767]!, [_0]) + return formatWithArgumentRanges(self._s[2766]!, self._r[2766]!, [_0]) } - public var Passport_Language_my: String { return self._s[2768]! } + public var Passport_Language_my: String { return self._s[2767]! } public func CHAT_MESSAGE_GEO_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2769]!, self._r[2769]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2768]!, self._r[2768]!, [_1, _2]) } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2770]!, self._r[2770]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2769]!, self._r[2769]!, [_1, _2, _3]) } - public var Preview_CopyAddress: String { return self._s[2771]! } + public var Preview_CopyAddress: String { return self._s[2770]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2772]!, self._r[2772]!, [_0]) + return formatWithArgumentRanges(self._s[2771]!, self._r[2771]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[2773]! } - public var UserInfo_BotSettings: String { return self._s[2774]! } - public var LiveLocation_MenuStopAll: String { return self._s[2776]! } - public var Passport_PasswordCreate: String { return self._s[2777]! } - public var StickerSettings_MaskContextInfo: String { return self._s[2778]! } - public var Message_PinnedLocationMessage: String { return self._s[2779]! } - public var Map_Satellite: String { return self._s[2780]! } - public var Watch_Message_Unsupported: String { return self._s[2781]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[2782]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[2783]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[2772]! } + public var UserInfo_BotSettings: String { return self._s[2773]! } + public var LiveLocation_MenuStopAll: String { return self._s[2775]! } + public var Passport_PasswordCreate: String { return self._s[2776]! } + public var StickerSettings_MaskContextInfo: String { return self._s[2777]! } + public var Message_PinnedLocationMessage: String { return self._s[2778]! } + public var Map_Satellite: String { return self._s[2779]! } + public var Watch_Message_Unsupported: String { return self._s[2780]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[2781]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[2782]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2784]!, self._r[2784]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2783]!, self._r[2783]!, [_0, _1]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2785]! } - public var Privacy_Calls_P2PContacts: String { return self._s[2786]! } - public var NotificationsSound_None: String { return self._s[2787]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[2789]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2784]! } + public var Privacy_Calls_P2PContacts: String { return self._s[2785]! } + public var NotificationsSound_None: String { return self._s[2786]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[2788]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2790]!, self._r[2790]!, [_1]) + return formatWithArgumentRanges(self._s[2789]!, self._r[2789]!, [_1]) } - public var Cache_Indexing: String { return self._s[2791]! } - public var DialogList_RecentTitlePeople: String { return self._s[2793]! } - public var DialogList_EncryptionRejected: String { return self._s[2794]! } - public var GroupInfo_Administrators: String { return self._s[2795]! } - public var Passport_ScanPassportHelp: String { return self._s[2796]! } - public var Application_Name: String { return self._s[2797]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[2798]! } - public var Passport_Identity_TranslationHelp: String { return self._s[2800]! } + public var Cache_Indexing: String { return self._s[2790]! } + public var DialogList_RecentTitlePeople: String { return self._s[2792]! } + public var DialogList_EncryptionRejected: String { return self._s[2793]! } + public var GroupInfo_Administrators: String { return self._s[2794]! } + public var Passport_ScanPassportHelp: String { return self._s[2795]! } + public var Application_Name: String { return self._s[2796]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[2797]! } + public var Passport_Identity_TranslationHelp: String { return self._s[2799]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2801]!, self._r[2801]!, [_0]) + return formatWithArgumentRanges(self._s[2800]!, self._r[2800]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2802]!, self._r[2802]!, [_0]) + return formatWithArgumentRanges(self._s[2801]!, self._r[2801]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[2803]! } - public var Privacy_ChatsTitle: String { return self._s[2804]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[2805]! } - public var Watch_Suggestion_HoldOn: String { return self._s[2806]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[2807]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2808]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2809]! } - public var Channel_Setup_TypePublic: String { return self._s[2812]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[2802]! } + public var Privacy_ChatsTitle: String { return self._s[2803]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[2804]! } + public var Watch_Suggestion_HoldOn: String { return self._s[2805]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[2806]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2807]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2808]! } + public var Channel_Setup_TypePublic: String { return self._s[2811]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2813]!, self._r[2813]!, [_0]) + return formatWithArgumentRanges(self._s[2812]!, self._r[2812]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[2815]! } - public var Map_OpenInMaps: String { return self._s[2817]! } - public var NotificationsSound_Tremolo: String { return self._s[2819]! } + public var Channel_TypeSetup_Title: String { return self._s[2814]! } + public var Map_OpenInMaps: String { return self._s[2816]! } + public var NotificationsSound_Tremolo: String { return self._s[2818]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2821]!, self._r[2821]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2820]!, self._r[2820]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[2822]! } - public var Passport_PasswordHelp: String { return self._s[2823]! } - public var Login_CodeExpiredError: String { return self._s[2824]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[2825]! } - public var Conversation_TitleUnmute: String { return self._s[2826]! } - public var Passport_Identity_ScansHelp: String { return self._s[2827]! } - public var Passport_Language_lo: String { return self._s[2828]! } - public var Camera_FlashAuto: String { return self._s[2829]! } - public var Common_Cancel: String { return self._s[2830]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2831]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2832]! } - public var Conversation_ReportSpamConfirmation: String { return self._s[2833]! } - public var ChatSettings_Title: String { return self._s[2835]! } - public var Passport_PasswordReset: String { return self._s[2836]! } - public var SocksProxySetup_TypeNone: String { return self._s[2837]! } - public var PhoneNumberHelp_Help: String { return self._s[2839]! } - public var Checkout_EnterPassword: String { return self._s[2840]! } - public var Activity_UploadingDocument: String { return self._s[2842]! } - public var Share_AuthTitle: String { return self._s[2843]! } - public var State_Connecting: String { return self._s[2844]! } - public var Profile_MessageLifetime1w: String { return self._s[2845]! } - public var Conversation_ContextMenuReport: String { return self._s[2846]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[2847]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[2848]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[2821]! } + public var Passport_PasswordHelp: String { return self._s[2822]! } + public var Login_CodeExpiredError: String { return self._s[2823]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[2824]! } + public var Conversation_TitleUnmute: String { return self._s[2825]! } + public var Passport_Identity_ScansHelp: String { return self._s[2826]! } + public var Passport_Language_lo: String { return self._s[2827]! } + public var Camera_FlashAuto: String { return self._s[2828]! } + public var Common_Cancel: String { return self._s[2829]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2830]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2831]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[2832]! } + public var ChatSettings_Title: String { return self._s[2834]! } + public var Passport_PasswordReset: String { return self._s[2835]! } + public var SocksProxySetup_TypeNone: String { return self._s[2836]! } + public var PhoneNumberHelp_Help: String { return self._s[2838]! } + public var Checkout_EnterPassword: String { return self._s[2839]! } + public var Activity_UploadingDocument: String { return self._s[2841]! } + public var Share_AuthTitle: String { return self._s[2842]! } + public var State_Connecting: String { return self._s[2843]! } + public var Profile_MessageLifetime1w: String { return self._s[2844]! } + public var Conversation_ContextMenuReport: String { return self._s[2845]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[2846]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[2847]! } public func CHAT_DELETE_MEMBER_SEPARATED(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2849]!, self._r[2849]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2848]!, self._r[2848]!, [_1, _2, _3]) } - public var AuthSessions_Terminate: String { return self._s[2850]! } + public var AuthSessions_Terminate: String { return self._s[2849]! } public func MESSAGE_TEXT_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2851]!, self._r[2851]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2850]!, self._r[2850]!, [_1, _2]) } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[2852]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[2853]! } - public var PhotoEditor_Set: String { return self._s[2854]! } - public var EmptyGroupInfo_Title: String { return self._s[2855]! } - public var Login_PadPhoneHelp: String { return self._s[2856]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[2859]! } - public var NotificationsSound_Complete: String { return self._s[2860]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[2851]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[2852]! } + public var PhotoEditor_Set: String { return self._s[2853]! } + public var EmptyGroupInfo_Title: String { return self._s[2854]! } + public var Login_PadPhoneHelp: String { return self._s[2855]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[2858]! } + public var NotificationsSound_Complete: String { return self._s[2859]! } public func CHAT_MESSAGE_CONTACT_SEPARATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2861]!, self._r[2861]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2860]!, self._r[2860]!, [_1, _2]) } - 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 Group_Info_AdminLog: String { return self._s[2861]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[2862]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[2863]! } + public var Conversation_Admin: String { return self._s[2865]! } + public var Conversation_GifTooltip: String { return self._s[2866]! } + public var Passport_NotLoggedInMessage: String { return self._s[2867]! } + public var Profile_MessageLifetimeForever: String { return self._s[2868]! } public func MESSAGE_POLL_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2871]!, self._r[2871]!, [_1]) + return formatWithArgumentRanges(self._s[2870]!, self._r[2870]!, [_1]) } - public var SharedMedia_EmptyTitle: String { return self._s[2872]! } - 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[2883]! } + public var SharedMedia_EmptyTitle: String { return self._s[2871]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[2872]! } + public var Username_Help: String { return self._s[2873]! } + public var DialogList_LanguageTooltip: String { return self._s[2875]! } + public var Map_LoadError: String { return self._s[2876]! } + public var Channel_AdminLog_AddMembers: String { return self._s[2877]! } + public var Notification_Exceptions_NewException: String { return self._s[2878]! } + public var TwoStepAuth_EmailTitle: String { return self._s[2879]! } + public var WatchRemote_AlertText: String { return self._s[2880]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[2882]! } public func CHANNEL_MESSAGE_GEOLIVE_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_1]) + return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_1]) } public func LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2885]!, self._r[2885]!, [_1]) + return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_1]) } - public var Passport_Address_CountryPlaceholder: String { return self._s[2886]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[2885]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2887]!, self._r[2887]!, [_0]) + return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2888]!, self._r[2888]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2887]!, self._r[2887]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[2889]! } - public var AccessDenied_VideoMicrophone: String { return self._s[2891]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2892]! } - public var Cache_ClearNone: String { return self._s[2893]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[2894]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2895]! } + 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 func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2896]!, self._r[2896]!, [_0]) + return formatWithArgumentRanges(self._s[2895]!, self._r[2895]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[2897]! } + public var Passport_Identity_Country: String { return self._s[2896]! } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2898]!, self._r[2898]!, [_0]) + return formatWithArgumentRanges(self._s[2897]!, self._r[2897]!, [_0]) } - public var AccessDenied_Settings: String { return self._s[2899]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2900]! } - public var Month_ShortMay: String { return self._s[2901]! } - public var Compose_NewGroup: String { return self._s[2902]! } - public var Group_Setup_TypePrivate: String { return self._s[2904]! } - 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 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[2904]! } + public var Appearance_ThemeDayClassic: String { return self._s[2905]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[2906]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[2907]! } + public var Conversation_typing: String { return self._s[2909]! } + public var Paint_Masks: String { return self._s[2910]! } public func PINNED_DOC_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_1]) + return formatWithArgumentRanges(self._s[2911]!, self._r[2911]!, [_1]) } - public var Username_InvalidTaken: String { return self._s[2913]! } + public var Username_InvalidTaken: String { return self._s[2912]! } public func CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2914]!, self._r[2914]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2913]!, self._r[2913]!, [_1, _2]) } - public var Call_StatusNoAnswer: String { return self._s[2915]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2916]! } - public var Passport_Identity_Selfie: String { return self._s[2917]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[2918]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2919]! } - public var Conversation_ClearSecretHistory: String { return self._s[2920]! } - public var NetworkUsageSettings_Title: String { return self._s[2922]! } - public var Your_cards_security_code_is_invalid: String { return self._s[2924]! } + public var Call_StatusNoAnswer: String { return self._s[2914]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2915]! } + public var Passport_Identity_Selfie: String { return self._s[2916]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[2917]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2918]! } + public var Conversation_ClearSecretHistory: String { return self._s[2919]! } + public var NetworkUsageSettings_Title: String { return self._s[2921]! } + public var Your_cards_security_code_is_invalid: String { return self._s[2923]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_0]) + return formatWithArgumentRanges(self._s[2925]!, self._r[2925]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2927]!, self._r[2927]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[2929]! } - public var Map_LiveLocationTitle: String { return self._s[2930]! } - public var Login_InfoAvatarAdd: String { return self._s[2931]! } - public var Passport_Identity_FilesView: String { return self._s[2932]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[2933]! } - public var Privacy_Calls_NeverAllow: String { return self._s[2934]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[2928]! } + public var Map_LiveLocationTitle: String { return self._s[2929]! } + public var Login_InfoAvatarAdd: String { return self._s[2930]! } + public var Passport_Identity_FilesView: String { return self._s[2931]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[2932]! } + public var Privacy_Calls_NeverAllow: String { return self._s[2933]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2935]!, self._r[2935]!, [_0]) + return formatWithArgumentRanges(self._s[2934]!, self._r[2934]!, [_0]) } - public var TwoStepAuth_ConfirmationText: String { return self._s[2936]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2937]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2938]! } - public var Tour_Title2: String { return self._s[2939]! } - public var Conversation_FileOpenIn: String { return self._s[2940]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2941]! } - public var Wallpaper_Set: String { return self._s[2942]! } - public var Passport_Identity_Translations: String { return self._s[2944]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2935]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2936]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2937]! } + public var Tour_Title2: String { return self._s[2938]! } + public var Conversation_FileOpenIn: String { return self._s[2939]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2940]! } + public var Wallpaper_Set: String { return self._s[2941]! } + public var Passport_Identity_Translations: String { return self._s[2943]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2945]!, self._r[2945]!, [_0]) + return formatWithArgumentRanges(self._s[2944]!, self._r[2944]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[2946]! } + public var Channel_LeaveChannel: String { return self._s[2945]! } public func MESSAGE_NOTEXT_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2947]!, self._r[2947]!, [_1]) + return formatWithArgumentRanges(self._s[2946]!, self._r[2946]!, [_1]) } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2948]!, self._r[2948]!, [_1]) + return formatWithArgumentRanges(self._s[2947]!, self._r[2947]!, [_1]) } - public var PhotoEditor_HighlightsTint: String { return self._s[2949]! } - public var Passport_Email_Delete: String { return self._s[2950]! } - public var Conversation_Mute: String { return self._s[2952]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[2954]! } + public var PhotoEditor_HighlightsTint: String { return self._s[2948]! } + public var Passport_Email_Delete: String { return self._s[2949]! } + public var Conversation_Mute: String { return self._s[2951]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[2953]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2955]!, self._r[2955]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[2956]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2957]! } - public var Common_No: String { return self._s[2958]! } - public var Weekday_Sunday: String { return self._s[2959]! } - public var Notification_Reply: String { return self._s[2960]! } - public var Conversation_ViewMessage: String { return self._s[2961]! } + public var Calls_CallTabDescription: String { return self._s[2955]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2956]! } + public var Common_No: String { return self._s[2957]! } + public var Weekday_Sunday: String { return self._s[2958]! } + public var Notification_Reply: String { return self._s[2959]! } + public var Conversation_ViewMessage: String { return self._s[2960]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2962]!, self._r[2962]!, [_0]) + return formatWithArgumentRanges(self._s[2961]!, self._r[2961]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2963]!, self._r[2963]!, [_0]) + return formatWithArgumentRanges(self._s[2962]!, self._r[2962]!, [_0]) } - public var Message_PinnedDocumentMessage: String { return self._s[2964]! } - public var DialogList_TabTitle: String { return self._s[2966]! } - public var Passport_FieldEmail: String { return self._s[2967]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2968]! } - public var Passport_Address_TypeBankStatement: String { return self._s[2969]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2970]! } - public var Privacy_Calls_P2P: String { return self._s[2971]! } + public var Message_PinnedDocumentMessage: String { return self._s[2963]! } + public var DialogList_TabTitle: String { return self._s[2965]! } + public var Passport_FieldEmail: String { return self._s[2966]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2967]! } + public var Passport_Address_TypeBankStatement: String { return self._s[2968]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2969]! } + public var Privacy_Calls_P2P: String { return self._s[2970]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2973]!, self._r[2973]!, [_0]) + return formatWithArgumentRanges(self._s[2972]!, self._r[2972]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[2974]! } - public var EnterPasscode_ChangeTitle: String { return self._s[2975]! } - public var Passport_InfoText: String { return self._s[2976]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2977]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[2973]! } + public var EnterPasscode_ChangeTitle: String { return self._s[2974]! } + public var Passport_InfoText: String { return self._s[2975]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2976]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2978]!, self._r[2978]!, [_0]) + return formatWithArgumentRanges(self._s[2977]!, self._r[2977]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2978]!, self._r[2978]!, [_1, _2, _3]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2980]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2982]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[2979]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2981]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2983]!, self._r[2983]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2982]!, self._r[2982]!, [_1, _2]) } public func MESSAGE_ROUND_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_1]) + return formatWithArgumentRanges(self._s[2983]!, self._r[2983]!, [_1]) } public func PHONE_CALL_MISSED_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2986]!, self._r[2986]!, [_1]) + return formatWithArgumentRanges(self._s[2985]!, self._r[2985]!, [_1]) } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0]) + return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) } - public var DialogList_Unread: String { return self._s[2989]! } - public var User_DeletedAccount: String { return self._s[2990]! } + public var DialogList_Unread: String { return self._s[2988]! } + public var User_DeletedAccount: String { return self._s[2989]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2991]!, self._r[2991]!, [_0]) + return formatWithArgumentRanges(self._s[2990]!, self._r[2990]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[2992]! } - public var SharedMedia_CategoryMedia: String { return self._s[2993]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2994]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2995]! } - public var Watch_ChatList_Compose: String { return self._s[2996]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2997]! } - public var Watch_Microphone_Access: String { return self._s[2998]! } - public var Group_Setup_HistoryHeader: String { return self._s[2999]! } - public var Activity_UploadingPhoto: String { return self._s[3000]! } + public var UserInfo_NotificationsDefault: String { return self._s[2991]! } + public var SharedMedia_CategoryMedia: String { return self._s[2992]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2993]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2994]! } + public var Watch_ChatList_Compose: String { return self._s[2995]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2996]! } + public var Watch_Microphone_Access: String { return self._s[2997]! } + public var Group_Setup_HistoryHeader: String { return self._s[2998]! } + public var Activity_UploadingPhoto: String { return self._s[2999]! } public func MESSAGE_VIDEO_SECRET_SEPARATED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_1]) + return formatWithArgumentRanges(self._s[3001]!, self._r[3001]!, [_1]) } - public var Conversation_Edit: String { return self._s[3003]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3004]! } - public var Login_TermsOfServiceDecline: String { return self._s[3005]! } - public var Message_PinnedContactMessage: String { return self._s[3006]! } + public var Conversation_Edit: String { return self._s[3002]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3003]! } + public var Login_TermsOfServiceDecline: String { return self._s[3004]! } + public var Message_PinnedContactMessage: String { return self._s[3005]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3006]!, self._r[3006]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3008]!, self._r[3008]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1, _2, _3, _4, _5]) } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3010]! } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3011]! } - public var Message_PinnedPhotoMessage: String { return self._s[3012]! } - public var Passport_FieldPhone: String { return self._s[3013]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3014]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3016]! } - public var Conversation_Call: String { return self._s[3017]! } - public var Common_TakePhoto: String { return self._s[3019]! } - public var Channel_NotificationLoading: String { return self._s[3020]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3009]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3010]! } + public var Message_PinnedPhotoMessage: String { return self._s[3011]! } + public var Passport_FieldPhone: String { return self._s[3012]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3013]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3015]! } + public var Conversation_Call: String { return self._s[3016]! } + public var Common_TakePhoto: String { return self._s[3018]! } + public var Channel_NotificationLoading: String { return self._s[3019]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3021]!, self._r[3021]!, [_0]) + return formatWithArgumentRanges(self._s[3020]!, self._r[3020]!, [_0]) } - public var Permissions_SiriTitle_v0: String { return self._s[3022]! } + public var Permissions_SiriTitle_v0: String { return self._s[3021]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3023]!, self._r[3023]!, [_0]) + return formatWithArgumentRanges(self._s[3022]!, self._r[3022]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3024]! } - public var Common_edit: String { return self._s[3025]! } - public var PrivacySettings_AuthSessions: String { return self._s[3026]! } - public var Month_ShortJune: String { return self._s[3027]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3028]! } - public var Call_ReportSend: String { return self._s[3029]! } - public var Watch_LastSeen_JustNow: String { return self._s[3030]! } - public var Notifications_MessageNotifications: 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[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 BroadcastListInfo_AddRecipient: String { return self._s[3032]! } + public var Group_Status: String { return self._s[3033]! } 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[3034]!, self._r[3034]!, [_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[3035]! } + public var Conversation_Moderate_Ban: String { return self._s[3036]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_0]) + return formatWithArgumentRanges(self._s[3037]!, self._r[3037]!, [_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[3038]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3039]! } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3042]!, self._r[3042]!, [_0]) + return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_0]) } - public var Appearance_ReduceMotion: String { return self._s[3043]! } - public var Map_OpenInHereMaps: String { return self._s[3044]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[3045]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3046]! } - public var PhotoEditor_Skip: String { return self._s[3047]! } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + public var Appearance_ReduceMotion: String { return self._s[3042]! } + public var Map_OpenInHereMaps: String { return self._s[3043]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[3044]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3045]! } + public var PhotoEditor_Skip: String { return self._s[3046]! } + public func MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreExtended(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, "\(value)") } @@ -3573,379 +3572,379 @@ public final class PresentationStrings { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + public func MuteFor_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + public func Media_SharePhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func CHAT_MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedMessages(_ value: Int32) -> String { + public func StickerPack_StickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPolls(_ 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 PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGES_SEPARATED(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func Call_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, "\(value)") } - public func InviteText_ContactsCountText(_ value: Int32) -> String { + public func CHANNEL_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func ForwardedFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func StickerPack_AddStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedVideos(_ value: Int32) -> String { + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Days(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, "\(value)") } - public func UserCount(_ value: Int32) -> String { + public func MessageTimer_Months(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedAuthorsOthers(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedGifs(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_File(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Generic(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Seconds(_ value: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedAudios(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Video(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortSeconds(_ value: Int32) -> String { + public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHAT_MESSAGES_SEPARATED(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Link(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedVideoMessages(_ value: Int32) -> String { + public func CHAT_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Map_ETAMinutes(_ value: Int32) -> String { + public func Contacts_ImportersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Days(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func CHANNEL_MESSAGES_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPhotos(_ value: Int32) -> String { + public func ForwardedVideos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func MessageTimer_Years(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)") } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareItem(_ value: Int32) -> String { + public func MessageTimer_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Passport_Scans(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedLocations(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortDays(_ value: Int32) -> String { + public func MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGE_FWDS_SEPARATED(_ value: Int32) -> String { + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + public func Media_ShareItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)") } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + public func ForwardedAuthorsOthers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Map_ETAHours(_ value: Int32) -> String { + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CHANNEL_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedFiles(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_StickerCount(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusOnline(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)") } - public func QuickSend_Photos(_ value: Int32) -> String { + public func ForwardedContacts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Invitation_Members(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Days(_ value: Int32) -> String { + public func MuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedStickers(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Hours(_ value: Int32) -> String { + public func MuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_SharePhoto(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Years(_ value: Int32) -> String { + public func MuteFor_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Minutes(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func MessageTimer_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Months(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedContacts(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareVideo(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public func CHANNEL_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func Map_ETAMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MESSAGES_SEPARATED(_ value: Int32) -> String { + public func SharedMedia_Link(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + public func CHAT_MESSAGE_PHOTOS_SEPARATED(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)") } diff --git a/TelegramUI/PresentationTheme.swift b/TelegramUI/PresentationTheme.swift index 2bbe699a22..1c3644c64f 100644 --- a/TelegramUI/PresentationTheme.swift +++ b/TelegramUI/PresentationTheme.swift @@ -210,11 +210,15 @@ public final class PresentationThemeSwitch { public let frameColor: UIColor public let handleColor: UIColor public let contentColor: UIColor + public let positiveColor: UIColor + public let negativeColor: UIColor - public init(frameColor: UIColor, handleColor: UIColor, contentColor: UIColor) { + public init(frameColor: UIColor, handleColor: UIColor, contentColor: UIColor, positiveColor: UIColor, negativeColor: UIColor) { self.frameColor = frameColor self.handleColor = handleColor self.contentColor = contentColor + self.positiveColor = positiveColor + self.negativeColor = negativeColor } } diff --git a/TelegramUI/Resources/PresentationStrings.mapping b/TelegramUI/Resources/PresentationStrings.mapping index 035409e63f9d08357c74dc9f90f6476721e00986..36842330ea62b58ddd0f078d954946c3bc2ee2ef 100644 GIT binary patch delta 5412 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 VSyB}ctoYA|Mp5gXymy3V{SO!=xAXu2 delta 5422 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 AMF0Q* diff --git a/TelegramUI/StoredMessageFromSearchPeer.swift b/TelegramUI/StoredMessageFromSearchPeer.swift index f66049a2f2..a243458229 100644 --- a/TelegramUI/StoredMessageFromSearchPeer.swift +++ b/TelegramUI/StoredMessageFromSearchPeer.swift @@ -3,13 +3,17 @@ import Postbox import TelegramCore import SwiftSignalKit -func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal { - return account.postbox.transaction { transaction -> Void in +func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal { + return account.postbox.transaction { transaction -> PeerId in if transaction.getPeer(peer.id) == nil { updatePeers(transaction: transaction, peers: [peer], update: { previousPeer, updatedPeer in return updatedPeer }) } + if let group = transaction.getPeer(peer.id) as? TelegramGroup, let migrationReference = group.migrationReference { + return migrationReference.peerId + } + return peer.id } } diff --git a/TelegramUI/UserInfoController.swift b/TelegramUI/UserInfoController.swift index 066050d259..8e7ecd2861 100644 --- a/TelegramUI/UserInfoController.swift +++ b/TelegramUI/UserInfoController.swift @@ -665,6 +665,8 @@ private func userInfoEntries(account: Account, presentationData: PresentationDat } else { notificationsLabel = presentationData.strings.UserInfo_NotificationsDisabled } + } else if case .default = notificationSettings.messageSound { + notificationsLabel = presentationData.strings.UserInfo_NotificationsEnabled } else { notificationsLabel = localizedPeerNotificationSoundString(strings: presentationData.strings, sound: notificationSettings.messageSound, default: globalNotificationSettings.effective.channels.sound) } From eb191a8e8e19752e914e29b5054a0b631f8b1d46 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Mon, 7 Jan 2019 23:41:54 +0100 Subject: [PATCH 5/5] API updates --- .../AddItemIcon.imageset/Contents.json | 12 +----- .../Item List/AddItemIcon.imageset/add.pdf | Bin 0 -> 4083 bytes .../AddItemIcon.imageset/ic_addoption@2x.png | Bin 1202 -> 0 bytes .../AddItemIcon.imageset/ic_addoption@3x.png | Bin 1408 -> 0 bytes .../RemoveItemIcon.imageset/Contents.json | 12 +----- .../RemoveItemIcon.imageset/delete.pdf | Bin 0 -> 4009 bytes .../ic_deleteotion@2x.png | Bin 1117 -> 0 bytes .../ic_deleteotion@3x.png | Bin 1432 -> 0 bytes TelegramUI/CallRatingController.swift | 2 +- .../ChannelMemberCategoryListContext.swift | 23 +++++++--- .../ChannelMembersSearchContainerNode.swift | 35 ++++++++++++++- .../ChatContextResultPeekContentNode.swift | 2 +- TelegramUI/ChatController.swift | 21 +++++---- .../ChatMessageInteractiveFileNode.swift | 4 +- TelegramUI/DebugController.swift | 4 +- TelegramUI/GroupInfoController.swift | 2 +- ...ListContextResultsChatInputPanelItem.swift | 2 +- TelegramUI/LegacyComponentsStickers.swift | 4 +- TelegramUI/LegacyInstantVideoController.swift | 2 +- TelegramUI/LegacyMediaPickers.swift | 10 ++--- TelegramUI/PhotoResources.swift | 40 ++++++++++++++---- TelegramUI/WebSearchGalleryController.swift | 2 +- 22 files changed, 113 insertions(+), 64 deletions(-) create mode 100644 Images.xcassets/Item List/AddItemIcon.imageset/add.pdf delete mode 100644 Images.xcassets/Item List/AddItemIcon.imageset/ic_addoption@2x.png delete mode 100644 Images.xcassets/Item List/AddItemIcon.imageset/ic_addoption@3x.png create mode 100644 Images.xcassets/Item List/RemoveItemIcon.imageset/delete.pdf delete mode 100644 Images.xcassets/Item List/RemoveItemIcon.imageset/ic_deleteotion@2x.png delete mode 100644 Images.xcassets/Item List/RemoveItemIcon.imageset/ic_deleteotion@3x.png diff --git a/Images.xcassets/Item List/AddItemIcon.imageset/Contents.json b/Images.xcassets/Item List/AddItemIcon.imageset/Contents.json index ffe65a7ec0..2e2e9b52c0 100644 --- a/Images.xcassets/Item List/AddItemIcon.imageset/Contents.json +++ b/Images.xcassets/Item List/AddItemIcon.imageset/Contents.json @@ -2,17 +2,7 @@ "images" : [ { "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "ic_addoption@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "ic_addoption@3x.png", - "scale" : "3x" + "filename" : "add.pdf" } ], "info" : { diff --git a/Images.xcassets/Item List/AddItemIcon.imageset/add.pdf b/Images.xcassets/Item List/AddItemIcon.imageset/add.pdf new file mode 100644 index 0000000000000000000000000000000000000000..931be96420bd96e81f62fba40acc0d1faaee03e6 GIT binary patch literal 4083 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 W5{MLPd~XO$N=gbWD5$2Z4*m~PBK5-n literal 0 HcmV?d00001 diff --git a/Images.xcassets/Item List/AddItemIcon.imageset/ic_addoption@2x.png b/Images.xcassets/Item List/AddItemIcon.imageset/ic_addoption@2x.png deleted file mode 100644 index 4a17bc48eb828a8df2453eda201c409507b21625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmV;j1Wo&iP)Px(Y)M2xR9FesSxtx>MHK#C?aUgoMhO^_o&_(GfF1-*41^%Lc<``9L{JnJ@e)+L zcra>U(is9`z(hS56+}-W9`XapVNaSI^yX^U z;Ro#Vd9)eB`gNOQ2>#j-u*Z9&YeRPKm!6KUDU)SrJP;hP!IOq2&{^&#qgSj^0P{LPRlUzIa>2y#^EFZ>x%NTj`EC)P2!p)x97c? z_Ix{Fm3YWI%C_@TT6h!ZzhcYX&)|r3(mt~RKP#(_pEYtet+4TP?(CLr2k_oKe`fhg zW{E5bKX{$p*2g@OFKCwRxc4+>H4HL#HZnaLuu8UqLykpMVs1kQQx}*GQZHDRt9*b} zQz=hn5tW!zuB(cn6%06yt@Ts!)HTd>e!!6xWf2`Q=eVwY+?nDwz(z)U11+~}6)ZA8 z>RiHE%p|!krH{Dl{7-^}40!{d=VB6M5%_nO{(TGl&SMcZxu9KFLZ-mvf3NaM9px?7 Q1^@s607*qoM6N<$f}4y>U;qFB diff --git a/Images.xcassets/Item List/AddItemIcon.imageset/ic_addoption@3x.png b/Images.xcassets/Item List/AddItemIcon.imageset/ic_addoption@3x.png deleted file mode 100644 index 0c2b3becdf625bf052eeec90839fe087cfc75a5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmV-`1%LX9P)Px)I!Q!9RCodHT)%G=M-+auxw9K+Y$eDxsS-p;Ns%IgA~c8&3aUuq4KMQGC`MchIe2N^1`tvJFBH1-`geBaDDx3{;ux4(UN!;=uZb2Ibi z`}WO`H}l3y>Jb0cago*;(Qi+Ql9Qs<38rmFUi8>F9INLEuGXLp=3|DDPL%$Nm&wb&6CLRkmCretPw> zwD+%qfUogIVFeY4l9wRlp){uM%a5}!%F<8{5&q7nqTAO1{)&ihmesiAdQ=PD>K9Rs zRq;Q1mYjF^uf>S)caDg(eGu?H`g>!zx(aeA)dnGVL>fK_d6QQ|ej@y>i|GINpm-s# z@{-GKVjTHa{P{dj8XT|F(kTeqbnSMw;Wyo@LJWoCX+zEgWybY&xggJEm$5xT+Y zEJ|w6tJD)|PG8J2n5HMf-~Jr4!S9vL24%BlXP5Kh&;6aIYA;PD@wdMK34e_Z2?WLI zn{8&>Q^;_Ou$Dj)W>VBQdRY`#s@~aQmXT}`920DJ7*7)TS@;2ofmjkGo(RqkW?-yn zg_zK&(tlz%Ar@kak$56FMUMLH5CbYQnOKM^Mxw_EyIA@yrp$OJd+JiuqHB-{E}J{8 ze}HyWR*Yp6j}>V1v+!~}qHDl+sDlJ0`_Qu_(^K>2AD?Yn*}%i~;R73ted+xcVZF%p znjEMlSy@=^Yt8cJHN4;IORM6=IBJbkL9aDr5$&a#NDx@Tg8__DX#<%`NHCr4Sp;{MYTHz)4qp12v4LbT+Y*)t z?lE$E%{3urVux5F%tq@3tRS;~NUk`E{eL33+w7`zv0IC5&EYK4bpZ#k2y-CoHWlE2r&GnY;pj1HSvJ1I^$)iT zGa9$_j;i?Pe{-_8{|&5q1#Os$%91i|rU56*9?PdJF_4WUguTdtOcf#=?P$eU#=| z#$cJHA^n48mXiH>5wfJ@#@6FQ*|v|H9ctT{32=c!V+@uE+;UyO0mq1^uJb?+U=a-A zb6mgyrccB%Ixo#N>_?bjPM61t4RT-?R1D^HRl3+M5sYYcRl3+M5e(~P%#mwC%)}0{ zL@>6QVZE*iF?Zv-EfFMuvCV>GFlPi<4Q30tM+5`BJ$X&2WZ(iaPE@v#(1D8A*E zPQRyaBYfzGVCD!S-iHoZf*9)0DECPf6Tv@togp+vbkQ@^pHc3UCd3qTjUk!{62MS@ zM!8Rl5DPKINIVg|@4!(1Nmy|b1FAz89b^3ABew|BX&?_B4a-*4{UbMEt;=YIaUA6Zjs;JTzp&s6dN)Jlnsdo;<>U^Q(qsWK_>OKE_*199)xg05=Wi~|FI6D=& zdkj~QJ2ipEg6s>vjtzsiL`DV!PU5z3vZjxzBwcuak_Vp z4wh0q(j&jHg84Fok>PJ*vZn2V&gp!8j*acvzXnbpa-x6N(s%<=!E0A>eFAeLrp@(c`UcDaio3u}32J^YeXRvE z)Ia{Xuis@RsIP|0^xIWXgO3$=2r|n`^z&rB?e-n*O-nqxM7V{mxStL?JA=^6`aIp= z=o;*1I^JBd_*p5$iS|~Z&J^O^yB?e%t*R%pnG0;tqjKyDM4ZW!Y*Fz{0=^D~IbRlx3SL``#tzG9Q6{ z#weYOxpc6rYx$Nj7gRLO;l(&4%OeVIAS&@WYL17CKe!mZ4w;yG13RgF+GU96`X>jQs;Fa;x3giizv=M=UTWg=VmL!yU z$H4=?kFV|%w2k%}HrA207+VyIb0W)TD@f!Fg?ZHTY>(&jxdTRqDnWS^9Jfe?AkOm+ z0$gDs$3=K=@G2eWA!>sj=xDy?0_(tDbNgL$JI~b}8u$`)`l`zL&96vOQ9Pp8>;kUcCdWY{NfZV*s9Tc`Lm8T24yQ|WVpBOcTbScMpTniIGSQWf*rB+lxB^?McO_o;4O9Q*jnSgsxn@i|e_cXC-$}%TGXM z+s#*YL_kC3snkwytR))3z=-(G7Omwcyee^ zbmr>Tdhai|%lm7=!BW9{hvN1%*U7~TScBZJZry(aknxZ?BO=K^&c7D6tpRBkT43TM z9U*eD$rdMn|N3j4Cq`0`(@CO65i;WDGV*Dap=XTTr0pOY5c>Y4wj)kx@-B?Fy-BG| zCg32uHBrkn`5;8plWwRR#0~4#@5bs;Dvo93GyHEeG8~ZWqu(Mw zmDfZCR;{{yZTzJ1DM>P2vQ|<;(o&L&Y(`0>d!@IfGt0D*ur1e zs1aiolOZ-B=AbaGV4*mvun!}T*<|He`Kf%h@l8{@yB$8LCBkh4U(t~_F!r#dP;tnw zZaU~_x?TBz80|ETu_(MK&4RFCd>WAfk#ymu*FJs+X<3|$=&ZV z${)(WbjWvX>Btcj68|FJt+LzG6e1apq8CWI9K*KaS1o$Hj}S;L^Db=R&z(KUu|)a z@-lXfXU%VQV7~9m_-Y@^1f&MKC-4!R3o-(AuBTnyr~Jx6#~Cov6Eu{hHdC) z20iFg2A2$|1}CXj3YdyfLy9#8$kPzpw|nO$89#F2(yM`!kt0(dz$2fP5VkierrwYr zG7H-orST5+m) z!aDV-O?FXuqf(=tMk72XIuGCbK5&=|9W6|bPtK7?6m}N=hZt75T-l{7i;XTnY=_X0 zqboNebD(-P&xt*sEq7#VcP1Dg^u{>TQm=nE{(77ub5r&jMzF%|!JrG8konx~#kR49 z(ezQT_C0O$ZLBLOXOzFMOReAch;Q|%&+ft{;k~7{Z>vxH+tt?$f32O2^8`GP_kU?O zY>y@E9`cGF>^8e&R$lAqS}`-$tXr*XHcVISuo3on=CRXbdce7&#O*Cr+P?EEuKh#w z2NT(MiIYQ^pmQq&FBZe5>30|Jvi#rs@%z6Un5dbzO2c97`(Kv6w<}@3n9H7fOglGK zdlqYR!Eq}w&MB@EUhsf^qRb85lm99AQ>bKI`WXGwrN`45Z(82=)eU(DcX7w^KI7Be zD=PIQxOK_Yy+p_J8TQ@qy++1l_NSUUmtcor{psVg2@G^N`ff`@oNv$3?mpE5)nt{1 z*u>`hBNtjoYwy46UD{DRVT#D9UIwY{SD*dRvb=BRw$QQui_t+v6LM>ri;rGfM_Xt0 zzUz&8l&eC#WPE98BBU#0Psbibt()tY7buHq=@rjiPBIcYcHX+Fp6P#OPPaLHHYQ3u z^2j+K&6>*5R~e<{rGxFE)H3_oYI5OQI_sMywb-Rp-R@{mMi6~EVlB3JFYWdXhp8*X ziH9?u^ojEoYd1zpuGek~8eg?zDGx5z1Tn9#XYA&U*}VE$srJ&k{X30`pux3HzQV2c zS}y|C)?C-{QzO}OV3R|)i?mACdY1c~3+W3}clsO|6@R$IMO5i2ucxe(nKW)<6fzDQ zRvLanm!KJx70N*1{e@>=+9}kok?=bC?~j&JI*T)}__OFPxVEM*?wylqS|o>9M^5PFB373a z0N6m;A#gbR-Z06&Z08LFlur_!yxHa%{)6o|gAC(@|CLb>>x19(yA5 zVP~Mv@$nm+Z15Dx>G%JCrXN5iID?@83;~Az?*dd%C{27Y1)6pXC}=K{QbVNe8$ zJ)ry*L%>zp<@+lJg|dtPcMQR1|2u|6{0rZ|#G#=7;6uP+|KMZ4f-THnb3q`X|AMLh z_N)&XOY|U+H|AdpVj#PI?5W6{L}E7$r!m-tH1cvLu{-F;UZ34V$6)Ge1Qk^T9*0%M w5s*+k60QnozX%2=z*X_;2xm?3{|{kLa2vxkyEQfhL7>#(U|CrM6GQNS0n@C~&;S4c literal 0 HcmV?d00001 diff --git a/Images.xcassets/Item List/RemoveItemIcon.imageset/ic_deleteotion@2x.png b/Images.xcassets/Item List/RemoveItemIcon.imageset/ic_deleteotion@2x.png deleted file mode 100644 index a52d7ebf3c646df84fdfaf3ce87129854bee0887..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcmV-j1fu(iP)Px(7fD1xR9FesSxaaWVGy3#q)`kgp0q9XVw2i~kE+1Ak3x|)$vE?;8WVdh;VTSsMB#*Ou?xW6fPI7g>6E1fOq*8)AQEa}uP#fc zEH^q%ahROMzM)5{^rZ9_1^h=L5`LC{umX`h{IWizn(}KD4BFzd^)S`=gFul>sh&1( zG{kmTSi09Ln^-=H^6XrJRnDe5`19qKl|%mXa5QEm3}}IsK!NX_!B@k#<83AYR@opN z?k`Nt#>24rju_&ivkiNPyG)M6kdV}s_iSLA*4T;MTq*BReZ9-%jsaFhA)04RnlpBy zO8ETdxCtf(SXHom6a~{#PCEr@*M>!+LIGC2!EBY=oPgN~OEdL#;#3T9w2`r4cFJue zZnn7RlRsQtM)_sStm_iN!Y<_GQ@tfG-MAJj!FsCk z9n<2?fQftWP3(*#x*{ABzHS!SqAS4JP`ojr&7X>qz{BL_saO(eIOSGDj!dGGU@0q+ zPvIBRIL9zgWai5v95vMVXubeO>@;N7H4~T4hwXB=8PTIO&$^txxDH^?ySFpdg<71B zm)qZF!59U+<4`My#ejoBPlCtYB=};-eA?{W31Mn?BxuA&p1EBVY%?Lj$YtcIric!M zjQEWkuB#@h7~tp)cLPJ8GKr4ZkuG4*hgfAz0IcS-Jo0n|Pz3_-@zm!*Je~x=LQwNr zgzNE4bMjrnbM4}@$+rIktQg9w&T%}?-3y2?1YXxZy#IPy3ot%;5|;TagT9k2koRlx ztk)gDr|-X8*@~q#E27-v6Uk`?ev^+ea-7QZ!g~@1R-QEtrv)sGJiFK`Q$z+`X$sEj zE~!hhLDCCmWy3m#lQ`9Uwrt&MK;r~^dn}2Z%jG2NYveq;QU|OU((-UTA~i*n!JN#x zh&E=UgF%j{-hj(3z8KUyqRoKF7;pmkfWK76NBrFKuUkKd4bM2p8_%N(5uX&8_KDro j39h16>ADhm^soK`cxx_6r6A8)00000NkvXXu0mjf+gKZl diff --git a/Images.xcassets/Item List/RemoveItemIcon.imageset/ic_deleteotion@3x.png b/Images.xcassets/Item List/RemoveItemIcon.imageset/ic_deleteotion@3x.png deleted file mode 100644 index a4c5861aae1296c4564eeb32a62621bcf20d9c90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1432 zcmV;J1!ww+P)Px)Qb|NXRCodHT)&UpL==9{%I;pIq~NF!mx{f>5-JKvA}&fGQj{(fG$6qr5F`qU zq(UpIyCOv-?hhamG!&$ZA_Wq0h(wW+Dq$hFR9r*@*93{|F7oib8T;`1yk~ptU9ast zX|=X@etn;3-u(JznPy<>WP6GJao$2!9b)%od@mF6A}KnEYx#&hA;yQ)Hm)~GIltn& zNBi9$`Br~R0!-6*8i}iJ*P-iQpCVViN37lkU;xixEX45lW9EmvMa*AOv$@VcJor6xa$W+t5TTA8X_FdUz+3wW1T^w0 z+}`Q%2(|4?;?^49e%RkTZ2Yg8h)^ew9H6IzF53Gis0I7tvztN)=6^x{Wm;%;`PRd~ zZF8_DLLEDN4&cAQ=SADhbB)LR7)|D5zWwN`O}eRxP-ojM+NMj$?7U5eGl;WJi}Wd9 z>krc8m5K=C44+;_FYtPrOlBUI={_|V&ZTjtiHT4v?N@2Y*QeJT+y8~vY? zq@0Kd_=7j#3$Ed_m?Y7;3B$Y%zi}3R<8EA;Vu{c-VZ5WHi)DT+ML&@KN8! zC!jf$ttJG)NZHY(HJ0G>(Dg(jbnh^PW1QLuF;tSN-eQysEE>~s>pCD;8nGDg`SI?lUMgRWgfm|^qq7x;zw7%}Eeyo^8>ny-Y10;MSA66+bQ)=U0;rgqIxo;@^dYtyKL>_p`V{;ayvXX!4IxY#K|`*i06>(xEmTPrX)Yl(FET z;FB8Biw#))06j-^jMc{(gAg1zTFfar#=07?3kPOEC1TFHnupyGA&SFXz36zhHMuRT3ZB_dnjCWZbiW#ahzcn5rWuLouL=0oUKPG>I7vZ5gIg8>JK+sqKO&GD#sHNoYfGhiHMMZnpL#3QaDg?jN%g# z)C9pMmY4_$tewqsbR3uS+_kO~%D9(f6f9wjb(Y}>{(aSsJEp1;J_+)z2PROtqp4gf zbfTswP$+{a?k&%JYCJ)3w%10?u65kl2c4CK8S4qMY=9YacmidE!@6liWoFKR)%cKn mn3UT8Z9 = Set(self.listStateValue.list.map { $0.peer.id }) let previousIds: Set = Set(oldValue.list.map { $0.peer.id }) if ids != previousIds { @@ -288,8 +288,8 @@ private final class ChannelMemberSingleCategoryListContext: ChannelMemberCategor } } switch self.category { - case .admins: - if let updated = updated, let _ = updated.participant.adminInfo { + case let .admins(query): + if let updated = updated, let _ = updated.participant.adminInfo, (query == nil || updated.peer.indexName.matchesByTokens(query!)) { var found = false loop: for i in 0 ..< list.count { if list[i].peer.id == updated.peer.id { @@ -512,14 +512,16 @@ struct PeerChannelMemberCategoryControl { private final class PeerChannelMemberContextWithSubscribers { let context: ChannelMemberCategoryListContext + private let emptyTimeout: Double private let subscribers = Bag<(ChannelMemberListState) -> Void>() private let disposable = MetaDisposable() private let becameEmpty: () -> Void private var emptyTimer: SwiftSignalKit.Timer? - init(context: ChannelMemberCategoryListContext, becameEmpty: @escaping () -> Void) { + init(context: ChannelMemberCategoryListContext, emptyTimeout: Double, becameEmpty: @escaping () -> Void) { self.context = context + self.emptyTimeout = emptyTimeout self.becameEmpty = becameEmpty self.disposable.set((context.listState |> deliverOnMainQueue).start(next: { [weak self] value in @@ -539,7 +541,7 @@ private final class PeerChannelMemberContextWithSubscribers { private func resetAndBeginEmptyTimer() { self.context.reset(false) self.emptyTimer?.invalidate() - let emptyTimer = SwiftSignalKit.Timer(timeout: emptyTimeout, repeat: false, completion: { [weak self] in + let emptyTimer = SwiftSignalKit.Timer(timeout: self.emptyTimeout, repeat: false, completion: { [weak self] in if let strongSelf = self { if strongSelf.subscribers.isEmpty { strongSelf.becameEmpty() @@ -605,6 +607,13 @@ final class PeerChannelMemberCategoriesContext { return (current.subscribe(requestUpdate: requestUpdate, updated: updated), PeerChannelMemberCategoryControl(key: key)) } let context: ChannelMemberCategoryListContext + let emptyTimeout: Double + switch key { + case .admins(nil), .banned(nil), .recentSearch(nil), .restricted(nil), .restrictedAndBanned(nil): + emptyTimeout = defaultEmptyTimeout + default: + emptyTimeout = 0.0 + } switch key { case .recent, .recentSearch, .admins: let mappedCategory: ChannelMemberListCategory @@ -626,7 +635,7 @@ final class PeerChannelMemberCategoriesContext { case let .banned(query): context = ChannelMemberSingleCategoryListContext(postbox: self.postbox, network: self.network, accountPeerId: self.accountPeerId, peerId: self.peerId, category: .banned(query)) } - let contextWithSubscribers = PeerChannelMemberContextWithSubscribers(context: context, becameEmpty: { [weak self] in + let contextWithSubscribers = PeerChannelMemberContextWithSubscribers(context: context, emptyTimeout: emptyTimeout, becameEmpty: { [weak self] in assert(Queue.mainQueue().isCurrent()) if let strongSelf = self { strongSelf.contexts.removeValue(forKey: key) diff --git a/TelegramUI/ChannelMembersSearchContainerNode.swift b/TelegramUI/ChannelMembersSearchContainerNode.swift index de0da68883..5c40857d05 100644 --- a/TelegramUI/ChannelMembersSearchContainerNode.swift +++ b/TelegramUI/ChannelMembersSearchContainerNode.swift @@ -260,6 +260,19 @@ final class ChannelMembersSearchContainerNode: SearchDisplayControllerContentNod } if peerId.namespace == Namespaces.Peer.CloudChannel { + if case .searchAdmins = mode { + return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.updateMemberAdminRights(account: account, peerId: peerId, memberId: memberId, adminRights: TelegramChatAdminRights(flags: [])) + |> afterDisposed { + Queue.mainQueue().async { + updateState { state in + var state = state + state.removingParticipantIds.remove(memberId) + return state + } + } + } + } + return account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.updateMemberBannedRights(account: account, peerId: peerId, memberId: memberId, bannedRights: TelegramChatBannedRights(flags: [.banReadMessages], untilDate: Int32.max)) |> afterDisposed { Queue.mainQueue().async { @@ -272,6 +285,21 @@ final class ChannelMembersSearchContainerNode: SearchDisplayControllerContentNod } } + if case .searchAdmins = mode { + return removeGroupAdmin(account: account, peerId: peerId, adminId: memberId) + |> `catch` { _ -> Signal in + return .complete() + } + |> deliverOnMainQueue + |> afterDisposed { + updateState { state in + var state = state + state.removingParticipantIds.remove(memberId) + return state + } + } + } + return removePeerMember(account: account, peerId: peerId, memberId: memberId) |> deliverOnMainQueue |> afterDisposed { @@ -320,11 +348,10 @@ final class ChannelMembersSearchContainerNode: SearchDisplayControllerContentNod let (disposable, _) = account.telegramApplicationContext.peerChannelMemberCategoriesContextsManager.admins(postbox: account.postbox, network: account.network, accountPeerId: account.peerId, peerId: peerId, searchQuery: query, updated: { state in if case .ready = state.loadingState { subscriber.putNext(state.list) - subscriber.putCompletion() } }) return disposable - } |> runOn(Queue.mainQueue()) + } |> runOn(Queue.mainQueue()) foundMembers = .single([]) case .searchBanned: foundGroupMembers = Signal { subscriber in @@ -473,6 +500,10 @@ final class ChannelMembersSearchContainerNode: SearchDisplayControllerContentNod peerActions.append(ParticipantRevealAction(type: .warning, title: themeAndStrings.1.GroupInfo_ActionRestrict, action: .restrict)) peerActions.append(ParticipantRevealAction(type: .destructive, title: themeAndStrings.1.Common_Delete, action: .remove)) } + } else if case .searchAdmins = mode { + if canRestrict { + peerActions.append(ParticipantRevealAction(type: .destructive, title: themeAndStrings.1.Common_Delete, action: .remove)) + } } switch mode { diff --git a/TelegramUI/ChatContextResultPeekContentNode.swift b/TelegramUI/ChatContextResultPeekContentNode.swift index 1b59cdb7cd..e02d49c0a7 100644 --- a/TelegramUI/ChatContextResultPeekContentNode.swift +++ b/TelegramUI/ChatContextResultPeekContentNode.swift @@ -158,7 +158,7 @@ private final class ChatContextResultPeekNode: ASDisplayNode, PeekControllerCont imageDimensions = content?.dimensions if let content = content, type == "gif", let thumbnailResource = imageResource , let dimensions = content.dimensions { - videoFileReference = .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource)], mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) + videoFileReference = .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource)], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) imageResource = nil } case let .internalReference(_, _, _, title, _, image, file, _): diff --git a/TelegramUI/ChatController.swift b/TelegramUI/ChatController.swift index bd83bcb6aa..a3f11be218 100644 --- a/TelegramUI/ChatController.swift +++ b/TelegramUI/ChatController.swift @@ -207,6 +207,8 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal private weak var silentPostTooltipController: TooltipController? private weak var mediaRecordingModeTooltipController: TooltipController? + private weak var mediaRestrictedTooltipController: TooltipController? + private var mediaRestrictedTooltipControllerMode = true private var screenCaptureEventsDisposable: Disposable? private let chatAdditionalDataDisposable = MetaDisposable() @@ -2602,6 +2604,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal strongSelf.recordingModeFeedback?.error() let rect: CGRect? + let isStickers: Bool = subject == .stickers switch subject { case .stickers: rect = strongSelf.chatDisplayNode.frameForStickersButton() @@ -2609,14 +2612,16 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal rect = strongSelf.chatDisplayNode.frameForInputActionButton() } - if let tooltipController = strongSelf.mediaRecordingModeTooltipController { + if let tooltipController = strongSelf.mediaRestrictedTooltipController, strongSelf.mediaRestrictedTooltipControllerMode == isStickers { tooltipController.text = banDescription } else if let rect = rect { + strongSelf.mediaRestrictedTooltipController?.dismiss() let tooltipController = TooltipController(text: banDescription) - strongSelf.mediaRecordingModeTooltipController = tooltipController + strongSelf.mediaRestrictedTooltipController = tooltipController + strongSelf.mediaRestrictedTooltipControllerMode = isStickers tooltipController.dismissed = { [weak tooltipController] in - if let strongSelf = self, let tooltipController = tooltipController, strongSelf.mediaRecordingModeTooltipController === tooltipController { - strongSelf.mediaRecordingModeTooltipController = nil + if let strongSelf = self, let tooltipController = tooltipController, strongSelf.mediaRestrictedTooltipController === tooltipController { + strongSelf.mediaRestrictedTooltipController = nil } } strongSelf.present(tooltipController, in: .window(.root), with: TooltipControllerPresentationArguments(sourceNodeAndRect: { @@ -3904,7 +3909,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal for item in results { if let item = item { let fileId = arc4random64() - let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: fileId), partialReference: nil, resource: ICloudFileResource(urlData: item.urlData), previewRepresentations: [], mimeType: guessMimeTypeByFileExtension((item.fileName as NSString).pathExtension), size: item.fileSize, attributes: [.FileName(fileName: item.fileName)]) + let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: fileId), partialReference: nil, resource: ICloudFileResource(urlData: item.urlData), previewRepresentations: [], immediateThumbnailData: nil, mimeType: guessMimeTypeByFileExtension((item.fileName as NSString).pathExtension), size: item.fileSize, attributes: [.FileName(fileName: item.fileName)]) let message: EnqueueMessage = .message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: replyMessageId, localGroupingKey: nil) messages.append(message) } @@ -4294,7 +4299,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal fileAttributes.append(.Sticker(displayText: "", packReference: nil, maskData: nil)) fileAttributes.append(.ImageSize(size: size)) - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: resource, previewRepresentations: [], mimeType: "image/webp", size: data.count, attributes: fileAttributes) + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: resource, previewRepresentations: [], immediateThumbnailData: nil, mimeType: "image/webp", size: data.count, attributes: fileAttributes) let message = EnqueueMessage.message(text: "", attributes: [], mediaReference: .standalone(media: media), replyToMessageId: nil, localGroupingKey: nil) let replyMessageId = strongSelf.presentationInterfaceState.interfaceState.replyMessageId @@ -4463,7 +4468,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal } }) - strongSelf.sendMessages([.message(text: "", attributes: [], mediaReference: .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], mimeType: "audio/ogg", size: data.compressedData.count, attributes: [.Audio(isVoice: true, duration: Int(data.duration), title: nil, performer: nil, waveform: waveformBuffer)])), replyToMessageId: strongSelf.presentationInterfaceState.interfaceState.replyMessageId, localGroupingKey: nil)]) + strongSelf.sendMessages([.message(text: "", attributes: [], mediaReference: .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], immediateThumbnailData: nil, mimeType: "audio/ogg", size: data.compressedData.count, attributes: [.Audio(isVoice: true, duration: Int(data.duration), title: nil, performer: nil, waveform: waveformBuffer)])), replyToMessageId: strongSelf.presentationInterfaceState.interfaceState.replyMessageId, localGroupingKey: nil)]) strongSelf.recorderFeedback?.tap() strongSelf.recorderFeedback = nil @@ -4534,7 +4539,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal } }) - self.sendMessages([.message(text: "", attributes: [], mediaReference: .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: recordedMediaPreview.resource, previewRepresentations: [], mimeType: "audio/ogg", size: Int(recordedMediaPreview.fileSize), attributes: [.Audio(isVoice: true, duration: Int(recordedMediaPreview.duration), title: nil, performer: nil, waveform: waveformBuffer)])), replyToMessageId: self.presentationInterfaceState.interfaceState.replyMessageId, localGroupingKey: nil)]) + self.sendMessages([.message(text: "", attributes: [], mediaReference: .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: recordedMediaPreview.resource, previewRepresentations: [], immediateThumbnailData: nil, mimeType: "audio/ogg", size: Int(recordedMediaPreview.fileSize), attributes: [.Audio(isVoice: true, duration: Int(recordedMediaPreview.duration), title: nil, performer: nil, waveform: waveformBuffer)])), replyToMessageId: self.presentationInterfaceState.interfaceState.replyMessageId, localGroupingKey: nil)]) } } diff --git a/TelegramUI/ChatMessageInteractiveFileNode.swift b/TelegramUI/ChatMessageInteractiveFileNode.swift index e88f7f9231..360b2aae8e 100644 --- a/TelegramUI/ChatMessageInteractiveFileNode.swift +++ b/TelegramUI/ChatMessageInteractiveFileNode.swift @@ -195,10 +195,10 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { statusUpdated = true } - let hasThumbnail = !file.previewRepresentations.isEmpty && !file.isMusic && !file.isVoice + let hasThumbnail = (!file.previewRepresentations.isEmpty || file.immediateThumbnailData != nil) && !file.isMusic && !file.isVoice if mediaUpdated { - if let _ = largestImageRepresentation(file.previewRepresentations) { + if largestImageRepresentation(file.previewRepresentations) != nil || file.immediateThumbnailData != nil { updateImageSignal = chatMessageImageFile(account: account, fileReference: .message(message: MessageReference(message), media: file), thumbnail: true) } diff --git a/TelegramUI/DebugController.swift b/TelegramUI/DebugController.swift index a5bc8e8dc4..61f4a69e4e 100644 --- a/TelegramUI/DebugController.swift +++ b/TelegramUI/DebugController.swift @@ -118,7 +118,7 @@ private enum DebugControllerEntry: ItemListNodeEntry { let messages = logs.map { (name, path) -> EnqueueMessage in let id = arc4random64() - let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: id), partialReference: nil, resource: LocalFileReferenceMediaResource(localFilePath: path, randomId: id), previewRepresentations: [], mimeType: "application/text", size: nil, attributes: [.FileName(fileName: 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)]) return .message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: nil, localGroupingKey: nil) } let _ = enqueueMessages(account: arguments.account, peerId: peerId, messages: messages).start() @@ -140,7 +140,7 @@ private enum DebugControllerEntry: ItemListNodeEntry { let messages = updatedLogs.map { (name, path) -> EnqueueMessage in let id = arc4random64() - let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: id), partialReference: nil, resource: LocalFileReferenceMediaResource(localFilePath: path, randomId: id), previewRepresentations: [], mimeType: "application/text", size: nil, attributes: [.FileName(fileName: 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)]) return .message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: nil, localGroupingKey: nil) } let _ = enqueueMessages(account: arguments.account, peerId: peerId, messages: messages).start() diff --git a/TelegramUI/GroupInfoController.swift b/TelegramUI/GroupInfoController.swift index 5982a87c74..9be05a5a28 100644 --- a/TelegramUI/GroupInfoController.swift +++ b/TelegramUI/GroupInfoController.swift @@ -1760,7 +1760,7 @@ public func groupInfoController(account: Account, peerId: PeerId) -> ViewControl canEditGroupInfo = true } } else if let channel = view.peers[view.peerId] as? TelegramChannel { - if channel.hasPermission(.changeInfo) { + if channel.hasPermission(.changeInfo) || !(channel.adminRights?.flags ?? []).isEmpty { canEditGroupInfo = true } } diff --git a/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift b/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift index 6de738c72c..b2dbf4669f 100644 --- a/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift +++ b/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift @@ -209,7 +209,7 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode } imageDimensions = content?.dimensions if type == "gif", let thumbnailResource = imageResource, let content = content, let dimensions = content.dimensions { - videoFile = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource)], mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])]) + videoFile = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource)], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])]) imageResource = nil } diff --git a/TelegramUI/LegacyComponentsStickers.swift b/TelegramUI/LegacyComponentsStickers.swift index 07f5f491db..4f360663a3 100644 --- a/TelegramUI/LegacyComponentsStickers.swift +++ b/TelegramUI/LegacyComponentsStickers.swift @@ -21,7 +21,7 @@ func stickerFromLegacyDocument(_ documentAttachment: TGDocumentMediaAttachment) fileReference = data } - return TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudFile, id: documentAttachment.documentId), partialReference: nil, resource: CloudDocumentMediaResource(datacenterId: Int(documentAttachment.datacenterId), fileId: documentAttachment.documentId, accessHash: documentAttachment.accessHash, size: Int(documentAttachment.size), fileReference: fileReference, fileName: documentAttachment.fileName()), previewRepresentations: [], mimeType: documentAttachment.mimeType, size: Int(documentAttachment.size), attributes: attributes) + return TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudFile, id: documentAttachment.documentId), partialReference: nil, resource: CloudDocumentMediaResource(datacenterId: Int(documentAttachment.datacenterId), fileId: documentAttachment.documentId, accessHash: documentAttachment.accessHash, size: Int(documentAttachment.size), fileReference: fileReference, fileName: documentAttachment.fileName()), previewRepresentations: [], immediateThumbnailData: nil, mimeType: documentAttachment.mimeType, size: Int(documentAttachment.size), attributes: attributes) } } return nil @@ -184,7 +184,7 @@ final class LegacyStickerImageDataSource: TGImageDataSource { attributes.append(.Sticker(displayText: "", packReference: .id(id: stickerPackId, accessHash: stickerPackAccessHash), maskData: nil)) } - return LegacyStickerImageDataTask(account: account, file: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudFile, id: documentId), partialReference: nil, resource: CloudDocumentMediaResource(datacenterId: datacenterId, fileId: documentId, accessHash: accessHash, size: size, fileReference: nil, fileName: fileNameFromFileAttributes(attributes)), previewRepresentations: [], mimeType: "image/webp", size: size, attributes: attributes), small: !highQuality, fitSize: fitSize, completion: { image in + return LegacyStickerImageDataTask(account: account, file: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudFile, id: documentId), partialReference: nil, resource: CloudDocumentMediaResource(datacenterId: datacenterId, fileId: documentId, accessHash: accessHash, size: size, fileReference: nil, fileName: fileNameFromFileAttributes(attributes)), previewRepresentations: [], immediateThumbnailData: nil, mimeType: "image/webp", size: size, attributes: attributes), small: !highQuality, fitSize: fitSize, completion: { image in if let image = image { sharedImageCache.setImage(image, forKey: uri, attributes: nil) completion?(TGDataResource(image: image, decoded: true)) diff --git a/TelegramUI/LegacyInstantVideoController.swift b/TelegramUI/LegacyInstantVideoController.swift index 4d09c834fb..547080c9ae 100644 --- a/TelegramUI/LegacyInstantVideoController.swift +++ b/TelegramUI/LegacyInstantVideoController.swift @@ -158,7 +158,7 @@ func legacyInstantVideoController(theme: PresentationTheme, panelFrame: CGRect, } } - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: resource, previewRepresentations: previewRepresentations, mimeType: "video/mp4", size: nil, attributes: [.FileName(fileName: "video.mp4"), .Video(duration: Int(finalDuration), size: finalDimensions, flags: [.instantRoundVideo])]) + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: resource, previewRepresentations: previewRepresentations, immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.FileName(fileName: "video.mp4"), .Video(duration: Int(finalDuration), size: finalDimensions, flags: [.instantRoundVideo])]) let attributes: [MessageAttribute] = [] send(.message(text: "", attributes: attributes, mediaReference: .standalone(media: media), replyToMessageId: nil, localGroupingKey: nil)) } diff --git a/TelegramUI/LegacyMediaPickers.swift b/TelegramUI/LegacyMediaPickers.swift index 2565e3a036..6618d50684 100644 --- a/TelegramUI/LegacyMediaPickers.swift +++ b/TelegramUI/LegacyMediaPickers.swift @@ -237,7 +237,7 @@ func legacyEnqueueGifMessage(account: Account, data: Data) -> Signal Signa arc4random_buf(&randomId, 8) let _ = try? heicData.write(to: URL(fileURLWithPath: tempFilePath + ".heic")) let resource = LocalFileReferenceMediaResource(localFilePath: tempFilePath + ".heic", randomId: randomId) - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], mimeType: "image/heic", size: nil, attributes: [.FileName(fileName: "image.heic")]) + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], immediateThumbnailData: nil, mimeType: "image/heic", size: nil, attributes: [.FileName(fileName: "image.heic")]) var attributes: [MessageAttribute] = [] if let timer = item.timer, timer > 0 && timer <= 60 { attributes.append(AutoremoveTimeoutMessageAttribute(timeout: Int32(timer), countdownBeginTime: nil)) @@ -336,13 +336,13 @@ func legacyAssetPickerEnqueueMessages(account: Account, signals: [Any]) -> Signa var randomId: Int64 = 0 arc4random_buf(&randomId, 8) let resource = LocalFileReferenceMediaResource(localFilePath: path, randomId: randomId) - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], mimeType: mimeType, size: nil, attributes: [.FileName(fileName: name)]) + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], immediateThumbnailData: nil, mimeType: mimeType, size: nil, attributes: [.FileName(fileName: name)]) messages.append(.message(text: caption ?? "", attributes: [], mediaReference: .standalone(media: media), replyToMessageId: nil, localGroupingKey: item.groupedId)) case let .asset(asset): var randomId: Int64 = 0 arc4random_buf(&randomId, 8) let resource = PhotoLibraryMediaResource(localIdentifier: asset.localIdentifier, uniqueId: arc4random64()) - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], mimeType: mimeType, size: nil, attributes: [.FileName(fileName: name)]) + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: randomId), partialReference: nil, resource: resource, previewRepresentations: [], immediateThumbnailData: nil, mimeType: mimeType, size: nil, attributes: [.FileName(fileName: name)]) messages.append(.message(text: caption ?? "", attributes: [], mediaReference: .standalone(media: media), replyToMessageId: nil, localGroupingKey: item.groupedId)) default: break @@ -424,7 +424,7 @@ func legacyAssetPickerEnqueueMessages(account: Account, signals: [Any]) -> Signa } } - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: resource, previewRepresentations: previewRepresentations, mimeType: "video/mp4", size: nil, attributes: fileAttributes) + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: resource, previewRepresentations: previewRepresentations, immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: fileAttributes) var attributes: [MessageAttribute] = [] if let timer = item.timer, timer > 0 && timer <= 60 { attributes.append(AutoremoveTimeoutMessageAttribute(timeout: Int32(timer), countdownBeginTime: nil)) diff --git a/TelegramUI/PhotoResources.swift b/TelegramUI/PhotoResources.swift index 6bdc4754fa..4f89b9f2ce 100644 --- a/TelegramUI/PhotoResources.swift +++ b/TelegramUI/PhotoResources.swift @@ -130,6 +130,7 @@ private func chatMessageFileDatas(account: Account, fileReference: FileMediaRefe let fullSizeResource = fileReference.media.resource let maybeFullSize = account.postbox.mediaBox.resourceData(fullSizeResource, pathExtension: pathExtension) + let decodedThumbnailData = fileReference.media.immediateThumbnailData.flatMap(decodeTinyThumbnail) let signal = maybeFullSize |> take(1) @@ -138,18 +139,26 @@ private func chatMessageFileDatas(account: Account, fileReference: FileMediaRefe return .single((nil, maybeData.path, true)) } else { let fetchedThumbnail: Signal - if let thumbnailResource = thumbnailResource { + if !fetched, let _ = decodedThumbnailData { + fetchedThumbnail = .single(.local) + } else if let thumbnailResource = thumbnailResource { fetchedThumbnail = fetchedMediaResource(postbox: account.postbox, reference: fileReference.resourceReference(thumbnailResource), statsCategory: statsCategoryForFileWithAttributes(fileReference.media.attributes)) } else { fetchedThumbnail = .complete() } let thumbnail: Signal - if let thumbnailResource = thumbnailResource { + if !fetched, let decodedThumbnailData = decodedThumbnailData { + thumbnail = .single(decodedThumbnailData) + } else if let thumbnailResource = thumbnailResource { thumbnail = Signal { subscriber in let fetchedDisposable = fetchedThumbnail.start() let thumbnailDisposable = account.postbox.mediaBox.resourceData(thumbnailResource, pathExtension: pathExtension).start(next: { next in - subscriber.putNext(next.size == 0 ? nil : try? Data(contentsOf: URL(fileURLWithPath: next.path), options: [])) + if next.size != 0, let data = try? Data(contentsOf: URL(fileURLWithPath: next.path), options: []) { + subscriber.putNext(data) + } else { + subscriber.putNext(nil) + } }, error: subscriber.putError, completed: subscriber.putCompletion) return ActionDisposable { @@ -186,14 +195,21 @@ private let thumbnailGenerationMimeTypes: Set = Set([ private func chatMessageImageFileThumbnailDatas(account: Account, fileReference: FileMediaReference, pathExtension: String? = nil, progressive: Bool = false) -> Signal<(Data?, String?, Bool), NoError> { let thumbnailResource = smallestImageRepresentation(fileReference.media.previewRepresentations)?.resource + let decodedThumbnailData = fileReference.media.immediateThumbnailData.flatMap(decodeTinyThumbnail) if !thumbnailGenerationMimeTypes.contains(fileReference.media.mimeType) { - if let thumbnailResource = thumbnailResource { + if let decodedThumbnailData = decodedThumbnailData { + return .single((decodedThumbnailData, nil, false)) + } else if let thumbnailResource = thumbnailResource { let fetchedThumbnail: Signal = fetchedMediaResource(postbox: account.postbox, reference: fileReference.resourceReference(thumbnailResource)) return Signal { subscriber in let fetchedDisposable = fetchedThumbnail.start() let thumbnailDisposable = account.postbox.mediaBox.resourceData(thumbnailResource, pathExtension: pathExtension).start(next: { next in - subscriber.putNext(((next.size == 0 ? nil : try? Data(contentsOf: URL(fileURLWithPath: next.path), options: [])), nil, false)) + if next.size != 0, let data = try? Data(contentsOf: URL(fileURLWithPath: next.path), options: []) { + subscriber.putNext((data, nil, false)) + } else { + subscriber.putNext((nil, nil, false)) + } }, error: subscriber.putError, completed: subscriber.putCompletion) return ActionDisposable { @@ -218,18 +234,26 @@ private func chatMessageImageFileThumbnailDatas(account: Account, fileReference: return .single((nil, maybeData.path, true)) } else { let fetchedThumbnail: Signal - if let thumbnailResource = thumbnailResource { + if let _ = fileReference.media.immediateThumbnailData { + fetchedThumbnail = .complete() + } else if let thumbnailResource = thumbnailResource { fetchedThumbnail = fetchedMediaResource(postbox: account.postbox, reference: fileReference.resourceReference(thumbnailResource)) } else { fetchedThumbnail = .complete() } let thumbnail: Signal - if let thumbnailResource = thumbnailResource { + if let decodedThumbnailData = decodedThumbnailData { + thumbnail = .single(decodedThumbnailData) + } else if let thumbnailResource = thumbnailResource { thumbnail = Signal { subscriber in let fetchedDisposable = fetchedThumbnail.start() let thumbnailDisposable = account.postbox.mediaBox.resourceData(thumbnailResource, pathExtension: pathExtension).start(next: { next in - subscriber.putNext(next.size == 0 ? nil : try? Data(contentsOf: URL(fileURLWithPath: next.path), options: [])) + if next.size != 0, let data = try? Data(contentsOf: URL(fileURLWithPath: next.path), options: []) { + subscriber.putNext(data) + } else { + subscriber.putNext(nil) + } }, error: subscriber.putError, completed: subscriber.putCompletion) return ActionDisposable { diff --git a/TelegramUI/WebSearchGalleryController.swift b/TelegramUI/WebSearchGalleryController.swift index 5e6a399cae..1097beb3ae 100644 --- a/TelegramUI/WebSearchGalleryController.swift +++ b/TelegramUI/WebSearchGalleryController.swift @@ -32,7 +32,7 @@ struct WebSearchGalleryEntry: Equatable { switch self.result { case let .externalReference(_, _, type, _, _, _, content, thumbnail, _): if let content = content, type == "gif", let thumbnailResource = thumbnail?.resource, let dimensions = content.dimensions { - let fileReference = FileMediaReference.standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource)], mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) + let fileReference = FileMediaReference.standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource)], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) return WebSearchVideoGalleryItem(account: account, presentationData: presentationData, result: self.result, content: NativeVideoContent(id: .contextResult(self.result.queryId, self.result.id), fileReference: fileReference, streamVideo: false, loopVideo: true, enableSound: false, fetchAutomatically: true), controllerInteraction: controllerInteraction) } case let .internalReference(_, _, _, _, _, _, file, _):