From 678f5010fa9bd15af02f514c77ed4d0387580a2a Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:44:54 +0200 Subject: [PATCH 01/16] Secret Chats layer 101 support --- .../Sources/SecretApiLayer101.swift | 1581 +++++++++++++++++ .../project.pbxproj | 4 + .../ManagedSecretChatOutgoingOperations.swift | 239 +++ ...ecretChatIncomingDecryptedOperations.swift | 329 +++- .../SecretChatLayerNegotiation.swift | 4 +- .../SecretChatOutgoingOperation.swift | 3 + .../TelegramCore/SecretChatState.swift | 1 + .../TelegramCore/Serialization.swift | 2 +- 8 files changed, 2160 insertions(+), 3 deletions(-) create mode 100644 submodules/TelegramApi/Sources/SecretApiLayer101.swift diff --git a/submodules/TelegramApi/Sources/SecretApiLayer101.swift b/submodules/TelegramApi/Sources/SecretApiLayer101.swift new file mode 100644 index 0000000000..4c870f3f02 --- /dev/null +++ b/submodules/TelegramApi/Sources/SecretApiLayer101.swift @@ -0,0 +1,1581 @@ + +fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { + var dict: [Int32 : (BufferReader) -> Any?] = [:] + dict[-1471112230] = { return $0.readInt32() } + dict[570911930] = { return $0.readInt64() } + dict[571523412] = { return $0.readDouble() } + dict[-1255641564] = { return parseString($0) } + dict[-1586283796] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionSetMessageTTL($0) } + dict[206520510] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionReadMessages($0) } + dict[1700872964] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionDeleteMessages($0) } + dict[-1967000459] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionScreenshotMessages($0) } + dict[1729750108] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionFlushHistory($0) } + dict[-217806717] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionNotifyLayer($0) } + dict[1360072880] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionResend($0) } + dict[-204906213] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionRequestKey($0) } + dict[1877046107] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionAcceptKey($0) } + dict[-586814357] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionAbortKey($0) } + dict[-332526693] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionCommitKey($0) } + dict[-1473258141] = { return SecretApi101.DecryptedMessageAction.parse_decryptedMessageActionNoop($0) } + dict[236446268] = { return SecretApi101.PhotoSize.parse_photoSizeEmpty($0) } + dict[2009052699] = { return SecretApi101.PhotoSize.parse_photoSize($0) } + dict[-374917894] = { return SecretApi101.PhotoSize.parse_photoCachedSize($0) } + dict[2086234950] = { return SecretApi101.FileLocation.parse_fileLocationUnavailable($0) } + dict[1406570614] = { return SecretApi101.FileLocation.parse_fileLocation($0) } + dict[467867529] = { return SecretApi101.DecryptedMessageLayer.parse_decryptedMessageLayer($0) } + dict[1930838368] = { return SecretApi101.DecryptedMessage.parse_decryptedMessageService($0) } + dict[-1848883596] = { return SecretApi101.DecryptedMessage.parse_decryptedMessage($0) } + dict[1815593308] = { return SecretApi101.DocumentAttribute.parse_documentAttributeImageSize($0) } + dict[297109817] = { return SecretApi101.DocumentAttribute.parse_documentAttributeAnimated($0) } + dict[358154344] = { return SecretApi101.DocumentAttribute.parse_documentAttributeFilename($0) } + dict[978674434] = { return SecretApi101.DocumentAttribute.parse_documentAttributeSticker($0) } + dict[-1739392570] = { return SecretApi101.DocumentAttribute.parse_documentAttributeAudio($0) } + dict[250621158] = { return SecretApi101.DocumentAttribute.parse_documentAttributeVideo($0) } + dict[-2044933984] = { return SecretApi101.InputStickerSet.parse_inputStickerSetShortName($0) } + dict[-4838507] = { return SecretApi101.InputStickerSet.parse_inputStickerSetEmpty($0) } + dict[-1148011883] = { return SecretApi101.MessageEntity.parse_messageEntityUnknown($0) } + dict[-100378723] = { return SecretApi101.MessageEntity.parse_messageEntityMention($0) } + dict[1868782349] = { return SecretApi101.MessageEntity.parse_messageEntityHashtag($0) } + dict[1827637959] = { return SecretApi101.MessageEntity.parse_messageEntityBotCommand($0) } + dict[1859134776] = { return SecretApi101.MessageEntity.parse_messageEntityUrl($0) } + dict[1692693954] = { return SecretApi101.MessageEntity.parse_messageEntityEmail($0) } + dict[-1117713463] = { return SecretApi101.MessageEntity.parse_messageEntityBold($0) } + dict[-2106619040] = { return SecretApi101.MessageEntity.parse_messageEntityItalic($0) } + dict[681706865] = { return SecretApi101.MessageEntity.parse_messageEntityCode($0) } + dict[1938967520] = { return SecretApi101.MessageEntity.parse_messageEntityPre($0) } + dict[1990644519] = { return SecretApi101.MessageEntity.parse_messageEntityTextUrl($0) } + dict[-1672577397] = { return SecretApi101.MessageEntity.parse_messageEntityUnderline($0) } + dict[-1090087980] = { return SecretApi101.MessageEntity.parse_messageEntityStrike($0) } + dict[34469328] = { return SecretApi101.MessageEntity.parse_messageEntityBlockquote($0) } + dict[144661578] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaEmpty($0) } + dict[893913689] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaGeoPoint($0) } + dict[1485441687] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaContact($0) } + dict[1474341323] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaAudio($0) } + dict[-90853155] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaExternalDocument($0) } + dict[-235238024] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaPhoto($0) } + dict[2063502050] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaDocument($0) } + dict[-1760785394] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaVideo($0) } + dict[-1978796689] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaVenue($0) } + dict[-452652584] = { return SecretApi101.DecryptedMessageMedia.parse_decryptedMessageMediaWebPage($0) } + return dict +}() + +public struct SecretApi101 { + public static func parse(_ buffer: Buffer) -> Any? { + let reader = BufferReader(buffer) + if let signature = reader.readInt32() { + return parse(reader, signature: signature) + } + return nil + } + + fileprivate static func parse(_ reader: BufferReader, signature: Int32) -> Any? { + if let parser = parsers[signature] { + return parser(reader) + } + else { + telegramApiLog("Type constructor \(String(signature, radix: 16, uppercase: false)) not found") + return nil + } + } + + fileprivate static func parseVector(_ reader: BufferReader, elementSignature: Int32, elementType: T.Type) -> [T]? { + if let count = reader.readInt32() { + var array = [T]() + var i: Int32 = 0 + while i < count { + var signature = elementSignature + if elementSignature == 0 { + if let unboxedSignature = reader.readInt32() { + signature = unboxedSignature + } + else { + return nil + } + } + if let item = SecretApi101.parse(reader, signature: signature) as? T { + array.append(item) + } + else { + return nil + } + i += 1 + } + return array + } + return nil + } + + public static func serializeObject(_ object: Any, buffer: Buffer, boxed: Swift.Bool) { + switch object { + case let _1 as SecretApi101.DecryptedMessageAction: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.PhotoSize: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.FileLocation: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.DecryptedMessageLayer: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.DecryptedMessage: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.DocumentAttribute: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.InputStickerSet: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.MessageEntity: + _1.serialize(buffer, boxed) + case let _1 as SecretApi101.DecryptedMessageMedia: + _1.serialize(buffer, boxed) + default: + break + } + } + + public enum DecryptedMessageAction { + case decryptedMessageActionSetMessageTTL(ttlSeconds: Int32) + case decryptedMessageActionReadMessages(randomIds: [Int64]) + case decryptedMessageActionDeleteMessages(randomIds: [Int64]) + case decryptedMessageActionScreenshotMessages(randomIds: [Int64]) + case decryptedMessageActionFlushHistory + case decryptedMessageActionNotifyLayer(layer: Int32) + case decryptedMessageActionResend(startSeqNo: Int32, endSeqNo: Int32) + case decryptedMessageActionRequestKey(exchangeId: Int64, gA: Buffer) + case decryptedMessageActionAcceptKey(exchangeId: Int64, gB: Buffer, keyFingerprint: Int64) + case decryptedMessageActionAbortKey(exchangeId: Int64) + case decryptedMessageActionCommitKey(exchangeId: Int64, keyFingerprint: Int64) + case decryptedMessageActionNoop + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .decryptedMessageActionSetMessageTTL(let ttlSeconds): + if boxed { + buffer.appendInt32(-1586283796) + } + serializeInt32(ttlSeconds, buffer: buffer, boxed: false) + break + case .decryptedMessageActionReadMessages(let randomIds): + if boxed { + buffer.appendInt32(206520510) + } + buffer.appendInt32(481674261) + buffer.appendInt32(Int32(randomIds.count)) + for item in randomIds { + serializeInt64(item, buffer: buffer, boxed: false) + } + break + case .decryptedMessageActionDeleteMessages(let randomIds): + if boxed { + buffer.appendInt32(1700872964) + } + buffer.appendInt32(481674261) + buffer.appendInt32(Int32(randomIds.count)) + for item in randomIds { + serializeInt64(item, buffer: buffer, boxed: false) + } + break + case .decryptedMessageActionScreenshotMessages(let randomIds): + if boxed { + buffer.appendInt32(-1967000459) + } + buffer.appendInt32(481674261) + buffer.appendInt32(Int32(randomIds.count)) + for item in randomIds { + serializeInt64(item, buffer: buffer, boxed: false) + } + break + case .decryptedMessageActionFlushHistory: + if boxed { + buffer.appendInt32(1729750108) + } + + break + case .decryptedMessageActionNotifyLayer(let layer): + if boxed { + buffer.appendInt32(-217806717) + } + serializeInt32(layer, buffer: buffer, boxed: false) + break + case .decryptedMessageActionResend(let startSeqNo, let endSeqNo): + if boxed { + buffer.appendInt32(1360072880) + } + serializeInt32(startSeqNo, buffer: buffer, boxed: false) + serializeInt32(endSeqNo, buffer: buffer, boxed: false) + break + case .decryptedMessageActionRequestKey(let exchangeId, let gA): + if boxed { + buffer.appendInt32(-204906213) + } + serializeInt64(exchangeId, buffer: buffer, boxed: false) + serializeBytes(gA, buffer: buffer, boxed: false) + break + case .decryptedMessageActionAcceptKey(let exchangeId, let gB, let keyFingerprint): + if boxed { + buffer.appendInt32(1877046107) + } + serializeInt64(exchangeId, buffer: buffer, boxed: false) + serializeBytes(gB, buffer: buffer, boxed: false) + serializeInt64(keyFingerprint, buffer: buffer, boxed: false) + break + case .decryptedMessageActionAbortKey(let exchangeId): + if boxed { + buffer.appendInt32(-586814357) + } + serializeInt64(exchangeId, buffer: buffer, boxed: false) + break + case .decryptedMessageActionCommitKey(let exchangeId, let keyFingerprint): + if boxed { + buffer.appendInt32(-332526693) + } + serializeInt64(exchangeId, buffer: buffer, boxed: false) + serializeInt64(keyFingerprint, buffer: buffer, boxed: false) + break + case .decryptedMessageActionNoop: + if boxed { + buffer.appendInt32(-1473258141) + } + + break + } + } + fileprivate static func parse_decryptedMessageActionSetMessageTTL(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int32? + _1 = reader.readInt32() + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionSetMessageTTL(ttlSeconds: _1!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionReadMessages(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: [Int64]? + if let _ = reader.readInt32() { + _1 = SecretApi101.parseVector(reader, elementSignature: 570911930, elementType: Int64.self) + } + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionReadMessages(randomIds: _1!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionDeleteMessages(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: [Int64]? + if let _ = reader.readInt32() { + _1 = SecretApi101.parseVector(reader, elementSignature: 570911930, elementType: Int64.self) + } + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionDeleteMessages(randomIds: _1!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionScreenshotMessages(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: [Int64]? + if let _ = reader.readInt32() { + _1 = SecretApi101.parseVector(reader, elementSignature: 570911930, elementType: Int64.self) + } + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionScreenshotMessages(randomIds: _1!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionFlushHistory(_ reader: BufferReader) -> DecryptedMessageAction? { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionFlushHistory + } + fileprivate static func parse_decryptedMessageActionNotifyLayer(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int32? + _1 = reader.readInt32() + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionNotifyLayer(layer: _1!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionResend(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionResend(startSeqNo: _1!, endSeqNo: _2!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionRequestKey(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int64? + _1 = reader.readInt64() + var _2: Buffer? + _2 = parseBytes(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionRequestKey(exchangeId: _1!, gA: _2!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionAcceptKey(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int64? + _1 = reader.readInt64() + var _2: Buffer? + _2 = parseBytes(reader) + var _3: Int64? + _3 = reader.readInt64() + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + if _c1 && _c2 && _c3 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionAcceptKey(exchangeId: _1!, gB: _2!, keyFingerprint: _3!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionAbortKey(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int64? + _1 = reader.readInt64() + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionAbortKey(exchangeId: _1!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionCommitKey(_ reader: BufferReader) -> DecryptedMessageAction? { + var _1: Int64? + _1 = reader.readInt64() + var _2: Int64? + _2 = reader.readInt64() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionCommitKey(exchangeId: _1!, keyFingerprint: _2!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageActionNoop(_ reader: BufferReader) -> DecryptedMessageAction? { + return SecretApi101.DecryptedMessageAction.decryptedMessageActionNoop + } + + + } + + public enum PhotoSize { + case photoSizeEmpty(type: String) + case photoSize(type: String, location: SecretApi101.FileLocation, w: Int32, h: Int32, size: Int32) + case photoCachedSize(type: String, location: SecretApi101.FileLocation, w: Int32, h: Int32, bytes: Buffer) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .photoSizeEmpty(let type): + if boxed { + buffer.appendInt32(236446268) + } + serializeString(type, buffer: buffer, boxed: false) + break + case .photoSize(let type, let location, let w, let h, let size): + if boxed { + buffer.appendInt32(2009052699) + } + serializeString(type, buffer: buffer, boxed: false) + location.serialize(buffer, true) + serializeInt32(w, buffer: buffer, boxed: false) + serializeInt32(h, buffer: buffer, boxed: false) + serializeInt32(size, buffer: buffer, boxed: false) + break + case .photoCachedSize(let type, let location, let w, let h, let bytes): + if boxed { + buffer.appendInt32(-374917894) + } + serializeString(type, buffer: buffer, boxed: false) + location.serialize(buffer, true) + serializeInt32(w, buffer: buffer, boxed: false) + serializeInt32(h, buffer: buffer, boxed: false) + serializeBytes(bytes, buffer: buffer, boxed: false) + break + } + } + fileprivate static func parse_photoSizeEmpty(_ reader: BufferReader) -> PhotoSize? { + var _1: String? + _1 = parseString(reader) + let _c1 = _1 != nil + if _c1 { + return SecretApi101.PhotoSize.photoSizeEmpty(type: _1!) + } + else { + return nil + } + } + fileprivate static func parse_photoSize(_ reader: BufferReader) -> PhotoSize? { + var _1: String? + _1 = parseString(reader) + var _2: SecretApi101.FileLocation? + if let signature = reader.readInt32() { + _2 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.FileLocation + } + var _3: Int32? + _3 = reader.readInt32() + var _4: Int32? + _4 = reader.readInt32() + var _5: Int32? + _5 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 { + return SecretApi101.PhotoSize.photoSize(type: _1!, location: _2!, w: _3!, h: _4!, size: _5!) + } + else { + return nil + } + } + fileprivate static func parse_photoCachedSize(_ reader: BufferReader) -> PhotoSize? { + var _1: String? + _1 = parseString(reader) + var _2: SecretApi101.FileLocation? + if let signature = reader.readInt32() { + _2 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.FileLocation + } + var _3: Int32? + _3 = reader.readInt32() + var _4: Int32? + _4 = reader.readInt32() + var _5: Buffer? + _5 = parseBytes(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 { + return SecretApi101.PhotoSize.photoCachedSize(type: _1!, location: _2!, w: _3!, h: _4!, bytes: _5!) + } + else { + return nil + } + } + + + } + + public enum FileLocation { + case fileLocationUnavailable(volumeId: Int64, localId: Int32, secret: Int64) + case fileLocation(dcId: Int32, volumeId: Int64, localId: Int32, secret: Int64) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .fileLocationUnavailable(let volumeId, let localId, let secret): + if boxed { + buffer.appendInt32(2086234950) + } + serializeInt64(volumeId, buffer: buffer, boxed: false) + serializeInt32(localId, buffer: buffer, boxed: false) + serializeInt64(secret, buffer: buffer, boxed: false) + break + case .fileLocation(let dcId, let volumeId, let localId, let secret): + if boxed { + buffer.appendInt32(1406570614) + } + serializeInt32(dcId, buffer: buffer, boxed: false) + serializeInt64(volumeId, buffer: buffer, boxed: false) + serializeInt32(localId, buffer: buffer, boxed: false) + serializeInt64(secret, buffer: buffer, boxed: false) + break + } + } + fileprivate static func parse_fileLocationUnavailable(_ reader: BufferReader) -> FileLocation? { + var _1: Int64? + _1 = reader.readInt64() + var _2: Int32? + _2 = reader.readInt32() + var _3: Int64? + _3 = reader.readInt64() + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + if _c1 && _c2 && _c3 { + return SecretApi101.FileLocation.fileLocationUnavailable(volumeId: _1!, localId: _2!, secret: _3!) + } + else { + return nil + } + } + fileprivate static func parse_fileLocation(_ reader: BufferReader) -> FileLocation? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int64? + _2 = reader.readInt64() + var _3: Int32? + _3 = reader.readInt32() + var _4: Int64? + _4 = reader.readInt64() + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + if _c1 && _c2 && _c3 && _c4 { + return SecretApi101.FileLocation.fileLocation(dcId: _1!, volumeId: _2!, localId: _3!, secret: _4!) + } + else { + return nil + } + } + + + } + + public enum DecryptedMessageLayer { + case decryptedMessageLayer(randomBytes: Buffer, layer: Int32, inSeqNo: Int32, outSeqNo: Int32, message: SecretApi101.DecryptedMessage) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .decryptedMessageLayer(let randomBytes, let layer, let inSeqNo, let outSeqNo, let message): + if boxed { + buffer.appendInt32(467867529) + } + serializeBytes(randomBytes, buffer: buffer, boxed: false) + serializeInt32(layer, buffer: buffer, boxed: false) + serializeInt32(inSeqNo, buffer: buffer, boxed: false) + serializeInt32(outSeqNo, buffer: buffer, boxed: false) + message.serialize(buffer, true) + break + } + } + fileprivate static func parse_decryptedMessageLayer(_ reader: BufferReader) -> DecryptedMessageLayer? { + var _1: Buffer? + _1 = parseBytes(reader) + var _2: Int32? + _2 = reader.readInt32() + var _3: Int32? + _3 = reader.readInt32() + var _4: Int32? + _4 = reader.readInt32() + var _5: SecretApi101.DecryptedMessage? + if let signature = reader.readInt32() { + _5 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.DecryptedMessage + } + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 { + return SecretApi101.DecryptedMessageLayer.decryptedMessageLayer(randomBytes: _1!, layer: _2!, inSeqNo: _3!, outSeqNo: _4!, message: _5!) + } + else { + return nil + } + } + + + } + + public enum DecryptedMessage { + case decryptedMessageService(randomId: Int64, action: SecretApi101.DecryptedMessageAction) + case decryptedMessage(flags: Int32, randomId: Int64, ttl: Int32, message: String, media: SecretApi101.DecryptedMessageMedia?, entities: [SecretApi101.MessageEntity]?, viaBotName: String?, replyToRandomId: Int64?, groupedId: Int64?) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .decryptedMessageService(let randomId, let action): + if boxed { + buffer.appendInt32(1930838368) + } + serializeInt64(randomId, buffer: buffer, boxed: false) + action.serialize(buffer, true) + break + case .decryptedMessage(let flags, let randomId, let ttl, let message, let media, let entities, let viaBotName, let replyToRandomId, let groupedId): + if boxed { + buffer.appendInt32(-1848883596) + } + serializeInt32(flags, buffer: buffer, boxed: false) + serializeInt64(randomId, buffer: buffer, boxed: false) + serializeInt32(ttl, buffer: buffer, boxed: false) + serializeString(message, buffer: buffer, boxed: false) + if Int(flags) & Int(1 << 9) != 0 {media!.serialize(buffer, true)} + if Int(flags) & Int(1 << 7) != 0 {buffer.appendInt32(481674261) + buffer.appendInt32(Int32(entities!.count)) + for item in entities! { + item.serialize(buffer, true) + }} + if Int(flags) & Int(1 << 11) != 0 {serializeString(viaBotName!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 3) != 0 {serializeInt64(replyToRandomId!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 17) != 0 {serializeInt64(groupedId!, buffer: buffer, boxed: false)} + break + } + } + fileprivate static func parse_decryptedMessageService(_ reader: BufferReader) -> DecryptedMessage? { + var _1: Int64? + _1 = reader.readInt64() + var _2: SecretApi101.DecryptedMessageAction? + if let signature = reader.readInt32() { + _2 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.DecryptedMessageAction + } + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DecryptedMessage.decryptedMessageService(randomId: _1!, action: _2!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessage(_ reader: BufferReader) -> DecryptedMessage? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int64? + _2 = reader.readInt64() + var _3: Int32? + _3 = reader.readInt32() + var _4: String? + _4 = parseString(reader) + var _5: SecretApi101.DecryptedMessageMedia? + if Int(_1!) & Int(1 << 9) != 0 {if let signature = reader.readInt32() { + _5 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.DecryptedMessageMedia + } } + var _6: [SecretApi101.MessageEntity]? + if Int(_1!) & Int(1 << 7) != 0 {if let _ = reader.readInt32() { + _6 = SecretApi101.parseVector(reader, elementSignature: 0, elementType: SecretApi101.MessageEntity.self) + } } + var _7: String? + if Int(_1!) & Int(1 << 11) != 0 {_7 = parseString(reader) } + var _8: Int64? + if Int(_1!) & Int(1 << 3) != 0 {_8 = reader.readInt64() } + var _9: Int64? + if Int(_1!) & Int(1 << 17) != 0 {_9 = reader.readInt64() } + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = (Int(_1!) & Int(1 << 9) == 0) || _5 != nil + let _c6 = (Int(_1!) & Int(1 << 7) == 0) || _6 != nil + let _c7 = (Int(_1!) & Int(1 << 11) == 0) || _7 != nil + let _c8 = (Int(_1!) & Int(1 << 3) == 0) || _8 != nil + let _c9 = (Int(_1!) & Int(1 << 17) == 0) || _9 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 { + return SecretApi101.DecryptedMessage.decryptedMessage(flags: _1!, randomId: _2!, ttl: _3!, message: _4!, media: _5, entities: _6, viaBotName: _7, replyToRandomId: _8, groupedId: _9) + } + else { + return nil + } + } + + + } + + public enum DocumentAttribute { + case documentAttributeImageSize(w: Int32, h: Int32) + case documentAttributeAnimated + case documentAttributeFilename(fileName: String) + case documentAttributeSticker(alt: String, stickerset: SecretApi101.InputStickerSet) + case documentAttributeAudio(flags: Int32, duration: Int32, title: String?, performer: String?, waveform: Buffer?) + case documentAttributeVideo(flags: Int32, duration: Int32, w: Int32, h: Int32) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .documentAttributeImageSize(let w, let h): + if boxed { + buffer.appendInt32(1815593308) + } + serializeInt32(w, buffer: buffer, boxed: false) + serializeInt32(h, buffer: buffer, boxed: false) + break + case .documentAttributeAnimated: + if boxed { + buffer.appendInt32(297109817) + } + + break + case .documentAttributeFilename(let fileName): + if boxed { + buffer.appendInt32(358154344) + } + serializeString(fileName, buffer: buffer, boxed: false) + break + case .documentAttributeSticker(let alt, let stickerset): + if boxed { + buffer.appendInt32(978674434) + } + serializeString(alt, buffer: buffer, boxed: false) + stickerset.serialize(buffer, true) + break + case .documentAttributeAudio(let flags, let duration, let title, let performer, let waveform): + if boxed { + buffer.appendInt32(-1739392570) + } + serializeInt32(flags, buffer: buffer, boxed: false) + serializeInt32(duration, buffer: buffer, boxed: false) + if Int(flags) & Int(1 << 0) != 0 {serializeString(title!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 1) != 0 {serializeString(performer!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 2) != 0 {serializeBytes(waveform!, buffer: buffer, boxed: false)} + break + case .documentAttributeVideo(let flags, let duration, let w, let h): + if boxed { + buffer.appendInt32(250621158) + } + serializeInt32(flags, buffer: buffer, boxed: false) + serializeInt32(duration, buffer: buffer, boxed: false) + serializeInt32(w, buffer: buffer, boxed: false) + serializeInt32(h, buffer: buffer, boxed: false) + break + } + } + fileprivate static func parse_documentAttributeImageSize(_ reader: BufferReader) -> DocumentAttribute? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DocumentAttribute.documentAttributeImageSize(w: _1!, h: _2!) + } + else { + return nil + } + } + fileprivate static func parse_documentAttributeAnimated(_ reader: BufferReader) -> DocumentAttribute? { + return SecretApi101.DocumentAttribute.documentAttributeAnimated + } + fileprivate static func parse_documentAttributeFilename(_ reader: BufferReader) -> DocumentAttribute? { + var _1: String? + _1 = parseString(reader) + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DocumentAttribute.documentAttributeFilename(fileName: _1!) + } + else { + return nil + } + } + fileprivate static func parse_documentAttributeSticker(_ reader: BufferReader) -> DocumentAttribute? { + var _1: String? + _1 = parseString(reader) + var _2: SecretApi101.InputStickerSet? + if let signature = reader.readInt32() { + _2 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.InputStickerSet + } + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DocumentAttribute.documentAttributeSticker(alt: _1!, stickerset: _2!) + } + else { + return nil + } + } + fileprivate static func parse_documentAttributeAudio(_ reader: BufferReader) -> DocumentAttribute? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + var _3: String? + if Int(_1!) & Int(1 << 0) != 0 {_3 = parseString(reader) } + var _4: String? + if Int(_1!) & Int(1 << 1) != 0 {_4 = parseString(reader) } + var _5: Buffer? + if Int(_1!) & Int(1 << 2) != 0 {_5 = parseBytes(reader) } + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil + let _c4 = (Int(_1!) & Int(1 << 1) == 0) || _4 != nil + let _c5 = (Int(_1!) & Int(1 << 2) == 0) || _5 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 { + return SecretApi101.DocumentAttribute.documentAttributeAudio(flags: _1!, duration: _2!, title: _3, performer: _4, waveform: _5) + } + else { + return nil + } + } + fileprivate static func parse_documentAttributeVideo(_ reader: BufferReader) -> DocumentAttribute? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + var _3: Int32? + _3 = reader.readInt32() + var _4: Int32? + _4 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + if _c1 && _c2 && _c3 && _c4 { + return SecretApi101.DocumentAttribute.documentAttributeVideo(flags: _1!, duration: _2!, w: _3!, h: _4!) + } + else { + return nil + } + } + + + } + + public enum InputStickerSet { + case inputStickerSetShortName(shortName: String) + case inputStickerSetEmpty + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .inputStickerSetShortName(let shortName): + if boxed { + buffer.appendInt32(-2044933984) + } + serializeString(shortName, buffer: buffer, boxed: false) + break + case .inputStickerSetEmpty: + if boxed { + buffer.appendInt32(-4838507) + } + + break + } + } + fileprivate static func parse_inputStickerSetShortName(_ reader: BufferReader) -> InputStickerSet? { + var _1: String? + _1 = parseString(reader) + let _c1 = _1 != nil + if _c1 { + return SecretApi101.InputStickerSet.inputStickerSetShortName(shortName: _1!) + } + else { + return nil + } + } + fileprivate static func parse_inputStickerSetEmpty(_ reader: BufferReader) -> InputStickerSet? { + return SecretApi101.InputStickerSet.inputStickerSetEmpty + } + + + } + + public enum MessageEntity { + case messageEntityUnknown(offset: Int32, length: Int32) + case messageEntityMention(offset: Int32, length: Int32) + case messageEntityHashtag(offset: Int32, length: Int32) + case messageEntityBotCommand(offset: Int32, length: Int32) + case messageEntityUrl(offset: Int32, length: Int32) + case messageEntityEmail(offset: Int32, length: Int32) + case messageEntityBold(offset: Int32, length: Int32) + case messageEntityItalic(offset: Int32, length: Int32) + case messageEntityCode(offset: Int32, length: Int32) + case messageEntityPre(offset: Int32, length: Int32, language: String) + case messageEntityTextUrl(offset: Int32, length: Int32, url: String) + case messageEntityUnderline(offset: Int32, length: Int32) + case messageEntityStrike(offset: Int32, length: Int32) + case messageEntityBlockquote(offset: Int32, length: Int32) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .messageEntityUnknown(let offset, let length): + if boxed { + buffer.appendInt32(-1148011883) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityMention(let offset, let length): + if boxed { + buffer.appendInt32(-100378723) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityHashtag(let offset, let length): + if boxed { + buffer.appendInt32(1868782349) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityBotCommand(let offset, let length): + if boxed { + buffer.appendInt32(1827637959) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityUrl(let offset, let length): + if boxed { + buffer.appendInt32(1859134776) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityEmail(let offset, let length): + if boxed { + buffer.appendInt32(1692693954) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityBold(let offset, let length): + if boxed { + buffer.appendInt32(-1117713463) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityItalic(let offset, let length): + if boxed { + buffer.appendInt32(-2106619040) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityCode(let offset, let length): + if boxed { + buffer.appendInt32(681706865) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityPre(let offset, let length, let language): + if boxed { + buffer.appendInt32(1938967520) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + serializeString(language, buffer: buffer, boxed: false) + break + case .messageEntityTextUrl(let offset, let length, let url): + if boxed { + buffer.appendInt32(1990644519) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + serializeString(url, buffer: buffer, boxed: false) + break + case .messageEntityUnderline(let offset, let length): + if boxed { + buffer.appendInt32(-1672577397) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityStrike(let offset, let length): + if boxed { + buffer.appendInt32(-1090087980) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + case .messageEntityBlockquote(let offset, let length): + if boxed { + buffer.appendInt32(34469328) + } + serializeInt32(offset, buffer: buffer, boxed: false) + serializeInt32(length, buffer: buffer, boxed: false) + break + } + } + fileprivate static func parse_messageEntityUnknown(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityUnknown(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityMention(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityMention(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityHashtag(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityHashtag(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityBotCommand(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityBotCommand(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityUrl(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityUrl(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityEmail(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityEmail(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityBold(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityBold(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityItalic(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityItalic(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityCode(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityCode(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityPre(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + var _3: String? + _3 = parseString(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + if _c1 && _c2 && _c3 { + return SecretApi101.MessageEntity.messageEntityPre(offset: _1!, length: _2!, language: _3!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityTextUrl(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + var _3: String? + _3 = parseString(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + if _c1 && _c2 && _c3 { + return SecretApi101.MessageEntity.messageEntityTextUrl(offset: _1!, length: _2!, url: _3!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityUnderline(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityUnderline(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityStrike(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityStrike(offset: _1!, length: _2!) + } + else { + return nil + } + } + fileprivate static func parse_messageEntityBlockquote(_ reader: BufferReader) -> MessageEntity? { + var _1: Int32? + _1 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.MessageEntity.messageEntityBlockquote(offset: _1!, length: _2!) + } + else { + return nil + } + } + + } + + public enum DecryptedMessageMedia { + case decryptedMessageMediaEmpty + case decryptedMessageMediaGeoPoint(lat: Double, long: Double) + case decryptedMessageMediaContact(phoneNumber: String, firstName: String, lastName: String, userId: Int32) + case decryptedMessageMediaAudio(duration: Int32, mimeType: String, size: Int32, key: Buffer, iv: Buffer) + case decryptedMessageMediaExternalDocument(id: Int64, accessHash: Int64, date: Int32, mimeType: String, size: Int32, thumb: SecretApi101.PhotoSize, dcId: Int32, attributes: [SecretApi101.DocumentAttribute]) + case decryptedMessageMediaPhoto(thumb: Buffer, thumbW: Int32, thumbH: Int32, w: Int32, h: Int32, size: Int32, key: Buffer, iv: Buffer, caption: String) + case decryptedMessageMediaDocument(thumb: Buffer, thumbW: Int32, thumbH: Int32, mimeType: String, size: Int32, key: Buffer, iv: Buffer, attributes: [SecretApi101.DocumentAttribute], caption: String) + case decryptedMessageMediaVideo(thumb: Buffer, thumbW: Int32, thumbH: Int32, duration: Int32, mimeType: String, w: Int32, h: Int32, size: Int32, key: Buffer, iv: Buffer, caption: String) + case decryptedMessageMediaVenue(lat: Double, long: Double, title: String, address: String, provider: String, venueId: String) + case decryptedMessageMediaWebPage(url: String) + + public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { + switch self { + case .decryptedMessageMediaEmpty: + if boxed { + buffer.appendInt32(144661578) + } + + break + case .decryptedMessageMediaGeoPoint(let lat, let long): + if boxed { + buffer.appendInt32(893913689) + } + serializeDouble(lat, buffer: buffer, boxed: false) + serializeDouble(long, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaContact(let phoneNumber, let firstName, let lastName, let userId): + if boxed { + buffer.appendInt32(1485441687) + } + serializeString(phoneNumber, buffer: buffer, boxed: false) + serializeString(firstName, buffer: buffer, boxed: false) + serializeString(lastName, buffer: buffer, boxed: false) + serializeInt32(userId, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaAudio(let duration, let mimeType, let size, let key, let iv): + if boxed { + buffer.appendInt32(1474341323) + } + serializeInt32(duration, buffer: buffer, boxed: false) + serializeString(mimeType, buffer: buffer, boxed: false) + serializeInt32(size, buffer: buffer, boxed: false) + serializeBytes(key, buffer: buffer, boxed: false) + serializeBytes(iv, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaExternalDocument(let id, let accessHash, let date, let mimeType, let size, let thumb, let dcId, let attributes): + if boxed { + buffer.appendInt32(-90853155) + } + serializeInt64(id, buffer: buffer, boxed: false) + serializeInt64(accessHash, buffer: buffer, boxed: false) + serializeInt32(date, buffer: buffer, boxed: false) + serializeString(mimeType, buffer: buffer, boxed: false) + serializeInt32(size, buffer: buffer, boxed: false) + thumb.serialize(buffer, true) + serializeInt32(dcId, buffer: buffer, boxed: false) + buffer.appendInt32(481674261) + buffer.appendInt32(Int32(attributes.count)) + for item in attributes { + item.serialize(buffer, true) + } + break + case .decryptedMessageMediaPhoto(let thumb, let thumbW, let thumbH, let w, let h, let size, let key, let iv, let caption): + if boxed { + buffer.appendInt32(-235238024) + } + serializeBytes(thumb, buffer: buffer, boxed: false) + serializeInt32(thumbW, buffer: buffer, boxed: false) + serializeInt32(thumbH, buffer: buffer, boxed: false) + serializeInt32(w, buffer: buffer, boxed: false) + serializeInt32(h, buffer: buffer, boxed: false) + serializeInt32(size, buffer: buffer, boxed: false) + serializeBytes(key, buffer: buffer, boxed: false) + serializeBytes(iv, buffer: buffer, boxed: false) + serializeString(caption, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaDocument(let thumb, let thumbW, let thumbH, let mimeType, let size, let key, let iv, let attributes, let caption): + if boxed { + buffer.appendInt32(2063502050) + } + serializeBytes(thumb, buffer: buffer, boxed: false) + serializeInt32(thumbW, buffer: buffer, boxed: false) + serializeInt32(thumbH, buffer: buffer, boxed: false) + serializeString(mimeType, buffer: buffer, boxed: false) + serializeInt32(size, buffer: buffer, boxed: false) + serializeBytes(key, buffer: buffer, boxed: false) + serializeBytes(iv, buffer: buffer, boxed: false) + buffer.appendInt32(481674261) + buffer.appendInt32(Int32(attributes.count)) + for item in attributes { + item.serialize(buffer, true) + } + serializeString(caption, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaVideo(let thumb, let thumbW, let thumbH, let duration, let mimeType, let w, let h, let size, let key, let iv, let caption): + if boxed { + buffer.appendInt32(-1760785394) + } + serializeBytes(thumb, buffer: buffer, boxed: false) + serializeInt32(thumbW, buffer: buffer, boxed: false) + serializeInt32(thumbH, buffer: buffer, boxed: false) + serializeInt32(duration, buffer: buffer, boxed: false) + serializeString(mimeType, buffer: buffer, boxed: false) + serializeInt32(w, buffer: buffer, boxed: false) + serializeInt32(h, buffer: buffer, boxed: false) + serializeInt32(size, buffer: buffer, boxed: false) + serializeBytes(key, buffer: buffer, boxed: false) + serializeBytes(iv, buffer: buffer, boxed: false) + serializeString(caption, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaVenue(let lat, let long, let title, let address, let provider, let venueId): + if boxed { + buffer.appendInt32(-1978796689) + } + serializeDouble(lat, buffer: buffer, boxed: false) + serializeDouble(long, buffer: buffer, boxed: false) + serializeString(title, buffer: buffer, boxed: false) + serializeString(address, buffer: buffer, boxed: false) + serializeString(provider, buffer: buffer, boxed: false) + serializeString(venueId, buffer: buffer, boxed: false) + break + case .decryptedMessageMediaWebPage(let url): + if boxed { + buffer.appendInt32(-452652584) + } + serializeString(url, buffer: buffer, boxed: false) + break + } + } + fileprivate static func parse_decryptedMessageMediaEmpty(_ reader: BufferReader) -> DecryptedMessageMedia? { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaEmpty + } + fileprivate static func parse_decryptedMessageMediaGeoPoint(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Double? + _1 = reader.readDouble() + var _2: Double? + _2 = reader.readDouble() + let _c1 = _1 != nil + let _c2 = _2 != nil + if _c1 && _c2 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaGeoPoint(lat: _1!, long: _2!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaContact(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: String? + _1 = parseString(reader) + var _2: String? + _2 = parseString(reader) + var _3: String? + _3 = parseString(reader) + var _4: Int32? + _4 = reader.readInt32() + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + if _c1 && _c2 && _c3 && _c4 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaContact(phoneNumber: _1!, firstName: _2!, lastName: _3!, userId: _4!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaAudio(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Int32? + _1 = reader.readInt32() + var _2: String? + _2 = parseString(reader) + var _3: Int32? + _3 = reader.readInt32() + var _4: Buffer? + _4 = parseBytes(reader) + var _5: Buffer? + _5 = parseBytes(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaAudio(duration: _1!, mimeType: _2!, size: _3!, key: _4!, iv: _5!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaExternalDocument(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Int64? + _1 = reader.readInt64() + var _2: Int64? + _2 = reader.readInt64() + var _3: Int32? + _3 = reader.readInt32() + var _4: String? + _4 = parseString(reader) + var _5: Int32? + _5 = reader.readInt32() + var _6: SecretApi101.PhotoSize? + if let signature = reader.readInt32() { + _6 = SecretApi101.parse(reader, signature: signature) as? SecretApi101.PhotoSize + } + var _7: Int32? + _7 = reader.readInt32() + var _8: [SecretApi101.DocumentAttribute]? + if let _ = reader.readInt32() { + _8 = SecretApi101.parseVector(reader, elementSignature: 0, elementType: SecretApi101.DocumentAttribute.self) + } + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + let _c6 = _6 != nil + let _c7 = _7 != nil + let _c8 = _8 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaExternalDocument(id: _1!, accessHash: _2!, date: _3!, mimeType: _4!, size: _5!, thumb: _6!, dcId: _7!, attributes: _8!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaPhoto(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Buffer? + _1 = parseBytes(reader) + var _2: Int32? + _2 = reader.readInt32() + var _3: Int32? + _3 = reader.readInt32() + var _4: Int32? + _4 = reader.readInt32() + var _5: Int32? + _5 = reader.readInt32() + var _6: Int32? + _6 = reader.readInt32() + var _7: Buffer? + _7 = parseBytes(reader) + var _8: Buffer? + _8 = parseBytes(reader) + var _9: String? + _9 = parseString(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + let _c6 = _6 != nil + let _c7 = _7 != nil + let _c8 = _8 != nil + let _c9 = _9 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaPhoto(thumb: _1!, thumbW: _2!, thumbH: _3!, w: _4!, h: _5!, size: _6!, key: _7!, iv: _8!, caption: _9!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaDocument(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Buffer? + _1 = parseBytes(reader) + var _2: Int32? + _2 = reader.readInt32() + var _3: Int32? + _3 = reader.readInt32() + var _4: String? + _4 = parseString(reader) + var _5: Int32? + _5 = reader.readInt32() + var _6: Buffer? + _6 = parseBytes(reader) + var _7: Buffer? + _7 = parseBytes(reader) + var _8: [SecretApi101.DocumentAttribute]? + if let _ = reader.readInt32() { + _8 = SecretApi101.parseVector(reader, elementSignature: 0, elementType: SecretApi101.DocumentAttribute.self) + } + var _9: String? + _9 = parseString(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + let _c6 = _6 != nil + let _c7 = _7 != nil + let _c8 = _8 != nil + let _c9 = _9 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaDocument(thumb: _1!, thumbW: _2!, thumbH: _3!, mimeType: _4!, size: _5!, key: _6!, iv: _7!, attributes: _8!, caption: _9!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaVideo(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Buffer? + _1 = parseBytes(reader) + var _2: Int32? + _2 = reader.readInt32() + var _3: Int32? + _3 = reader.readInt32() + var _4: Int32? + _4 = reader.readInt32() + var _5: String? + _5 = parseString(reader) + var _6: Int32? + _6 = reader.readInt32() + var _7: Int32? + _7 = reader.readInt32() + var _8: Int32? + _8 = reader.readInt32() + var _9: Buffer? + _9 = parseBytes(reader) + var _10: Buffer? + _10 = parseBytes(reader) + var _11: String? + _11 = parseString(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + let _c6 = _6 != nil + let _c7 = _7 != nil + let _c8 = _8 != nil + let _c9 = _9 != nil + let _c10 = _10 != nil + let _c11 = _11 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaVideo(thumb: _1!, thumbW: _2!, thumbH: _3!, duration: _4!, mimeType: _5!, w: _6!, h: _7!, size: _8!, key: _9!, iv: _10!, caption: _11!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaVenue(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: Double? + _1 = reader.readDouble() + var _2: Double? + _2 = reader.readDouble() + var _3: String? + _3 = parseString(reader) + var _4: String? + _4 = parseString(reader) + var _5: String? + _5 = parseString(reader) + var _6: String? + _6 = parseString(reader) + let _c1 = _1 != nil + let _c2 = _2 != nil + let _c3 = _3 != nil + let _c4 = _4 != nil + let _c5 = _5 != nil + let _c6 = _6 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaVenue(lat: _1!, long: _2!, title: _3!, address: _4!, provider: _5!, venueId: _6!) + } + else { + return nil + } + } + fileprivate static func parse_decryptedMessageMediaWebPage(_ reader: BufferReader) -> DecryptedMessageMedia? { + var _1: String? + _1 = parseString(reader) + let _c1 = _1 != nil + if _c1 { + return SecretApi101.DecryptedMessageMedia.decryptedMessageMediaWebPage(url: _1!) + } + else { + return nil + } + } + + + } + + public struct functions { + + } + +} diff --git a/submodules/TelegramApi/TelegramApi_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramApi/TelegramApi_Xcode.xcodeproj/project.pbxproj index 1f399c776d..7dc67ed056 100644 --- a/submodules/TelegramApi/TelegramApi_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramApi/TelegramApi_Xcode.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 09E9601B22C2BE4900B13673 /* SecretApiLayer101.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E9601A22C2BE4900B13673 /* SecretApiLayer101.swift */; }; D035732422B5C1FC00F0920D /* TelegramApi.h in Headers */ = {isa = PBXBuildFile; fileRef = D035732222B5C1FC00F0920D /* TelegramApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; D035733422B5C29900F0920D /* Api0.swift in Sources */ = {isa = PBXBuildFile; fileRef = D035733022B5C29900F0920D /* Api0.swift */; }; D035733522B5C29900F0920D /* Api2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D035733122B5C29900F0920D /* Api2.swift */; }; @@ -32,6 +33,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 09E9601A22C2BE4900B13673 /* SecretApiLayer101.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretApiLayer101.swift; sourceTree = ""; }; D035731F22B5C1FC00F0920D /* TelegramApi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramApi.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D035732222B5C1FC00F0920D /* TelegramApi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramApi.h; sourceTree = ""; }; D035732322B5C1FC00F0920D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -94,6 +96,7 @@ D035734522B5C9BF00F0920D /* SecretApiLayer8.swift */, D035734422B5C9BF00F0920D /* SecretApiLayer46.swift */, D035734622B5C9BF00F0920D /* SecretApiLayer73.swift */, + 09E9601A22C2BE4900B13673 /* SecretApiLayer101.swift */, D035733C22B5C39100F0920D /* DeserializeFunctionResponse.swift */, D035733A22B5C31400F0920D /* TelegramApiLogger.swift */, D035733822B5C2E200F0920D /* Buffer.swift */, @@ -230,6 +233,7 @@ D035733D22B5C39100F0920D /* DeserializeFunctionResponse.swift in Sources */, D035734822B5C9BF00F0920D /* SecretApiLayer8.swift in Sources */, D035733522B5C29900F0920D /* Api2.swift in Sources */, + 09E9601B22C2BE4900B13673 /* SecretApiLayer101.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/submodules/TelegramCore/TelegramCore/ManagedSecretChatOutgoingOperations.swift b/submodules/TelegramCore/TelegramCore/ManagedSecretChatOutgoingOperations.swift index d716a24340..861c0607df 100644 --- a/submodules/TelegramCore/TelegramCore/ManagedSecretChatOutgoingOperations.swift +++ b/submodules/TelegramCore/TelegramCore/ManagedSecretChatOutgoingOperations.swift @@ -361,6 +361,7 @@ private enum BoxedDecryptedMessage { case layer8(SecretApi8.DecryptedMessage) case layer46(SecretApi46.DecryptedMessage) case layer73(SecretApi73.DecryptedMessage) + case layer101(SecretApi101.DecryptedMessage) func serialize(_ buffer: Buffer, role: SecretChatRole, sequenceInfo: SecretChatOperationSequenceInfo?) { switch self { @@ -405,6 +406,26 @@ private enum BoxedDecryptedMessage { assertionFailure() } + let _ = message.serialize(buffer, true) + case let .layer101(message): + buffer.appendInt32(0x1be31789) + let randomBytes = malloc(15)! + arc4random_buf(randomBytes, 15) + serializeBytes(Buffer(memory: randomBytes, size: 15, capacity: 15, freeWhenDone: false), buffer: buffer, boxed: false) + free(randomBytes) + buffer.appendInt32(101) + + if let sequenceInfo = sequenceInfo { + let inSeqNo = (sequenceInfo.topReceivedOperationIndex + 1) * 2 + (role == .creator ? 0 : 1) + let outSeqNo = sequenceInfo.operationIndex * 2 + (role == .creator ? 1 : 0) + buffer.appendInt32(inSeqNo) + buffer.appendInt32(outSeqNo) + } else { + buffer.appendInt32(0) + buffer.appendInt32(0) + assertionFailure() + } + let _ = message.serialize(buffer, true) } } @@ -567,6 +588,59 @@ private func decryptedAttributes73(_ attributes: [TelegramMediaFileAttribute], t return result } +private func decryptedAttributes101(_ attributes: [TelegramMediaFileAttribute], transaction: Transaction) -> [SecretApi101.DocumentAttribute] { + var result: [SecretApi101.DocumentAttribute] = [] + for attribute in attributes { + switch attribute { + case let .FileName(fileName): + result.append(.documentAttributeFilename(fileName: fileName)) + case .Animated: + result.append(.documentAttributeAnimated) + case let .Sticker(displayText, packReference, _): + var stickerSet: SecretApi101.InputStickerSet = .inputStickerSetEmpty + if let packReference = packReference { + switch packReference { + case let .name(name): + stickerSet = .inputStickerSetShortName(shortName: name) + case .id: + if let (info, _, _) = cachedStickerPack(transaction: transaction, reference: packReference) { + stickerSet = .inputStickerSetShortName(shortName: info.shortName) + } + } + } + result.append(.documentAttributeSticker(alt: displayText, stickerset: stickerSet)) + case let .ImageSize(size): + result.append(.documentAttributeImageSize(w: Int32(size.width), h: Int32(size.height))) + case let .Video(duration, size, videoFlags): + var flags: Int32 = 0 + if videoFlags.contains(.instantRoundVideo) { + flags |= 1 << 0 + } + result.append(.documentAttributeVideo(flags: flags, duration: Int32(duration), w: Int32(size.width), h: Int32(size.height))) + case let .Audio(isVoice, duration, title, performer, waveform): + var flags: Int32 = 0 + if isVoice { + flags |= (1 << 10) + } + if let _ = title { + flags |= Int32(1 << 0) + } + if let _ = performer { + flags |= Int32(1 << 1) + } + var waveformBuffer: Buffer? + if let waveform = waveform { + flags |= Int32(1 << 2) + waveformBuffer = Buffer(data: waveform.makeData()) + } + result.append(.documentAttributeAudio(flags: flags, duration: Int32(duration), title: title, performer: performer, waveform: waveformBuffer)) + case .HasLinkedStickers: + break + } + } + return result +} + private func decryptedEntities73(_ entities: [MessageTextEntity]?) -> [SecretApi73.MessageEntity]? { guard let entities = entities else { return nil @@ -614,6 +688,53 @@ private func decryptedEntities73(_ entities: [MessageTextEntity]?) -> [SecretApi return result } +private func decryptedEntities101(_ entities: [MessageTextEntity]?) -> [SecretApi101.MessageEntity]? { + guard let entities = entities else { + return nil + } + + var result: [SecretApi101.MessageEntity] = [] + for entity in entities { + switch entity.type { + case .Unknown: + break + case .Mention: + result.append(.messageEntityMention(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Hashtag: + result.append(.messageEntityHashtag(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .BotCommand: + result.append(.messageEntityBotCommand(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Url: + result.append(.messageEntityUrl(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Email: + result.append(.messageEntityEmail(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Bold: + result.append(.messageEntityBold(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Italic: + result.append(.messageEntityItalic(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Code: + result.append(.messageEntityCode(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Pre: + result.append(.messageEntityPre(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count), language: "")) + case let .TextUrl(url): + result.append(.messageEntityTextUrl(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count), url: url)) + case .TextMention: + break + case .PhoneNumber: + break + case .Strikethrough: + result.append(.messageEntityStrike(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .BlockQuote: + result.append(.messageEntityBlockquote(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Underline: + result.append(.messageEntityUnderline(offset: Int32(entity.range.lowerBound), length: Int32(entity.range.count))) + case .Custom: + break + } + } + return result +} + private func boxedDecryptedMessage(transaction: Transaction, message: Message, globallyUniqueId: Int64, uploadedFile: SecretChatOutgoingFile?, thumbnailData: [MediaId: (CGSize, Data)], layer: SecretChatLayer) -> BoxedDecryptedMessage { let media: Media? = message.media.first var messageAutoremoveTimeout: Int32 = 0 @@ -691,6 +812,20 @@ private func boxedDecryptedMessage(transaction: Transaction, message: Message, g flags |= (1 << 17) } return .layer73(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) + case .layer101: + if let _ = viaBotName { + flags |= (1 << 11) + } + let decryptedEntites = entities.flatMap(decryptedEntities101) + if let _ = decryptedEntites { + flags |= (1 << 7) + } + let decryptedMedia = SecretApi101.DecryptedMessageMedia.decryptedMessageMediaPhoto(thumb: thumb, thumbW: thumbW, thumbH: thumbH, w: Int32(largestRepresentation.dimensions.width), h: Int32(largestRepresentation.dimensions.height), size: uploadedFile.size, key: Buffer(data: uploadedFile.key.aesKey), iv: Buffer(data: uploadedFile.key.aesIv), caption: "") + flags |= (1 << 9) + if message.groupingKey != nil { + flags |= (1 << 17) + } + return .layer101(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) } } else if let file = media as? TelegramMediaFile { let thumbW: Int32 @@ -786,6 +921,37 @@ private func boxedDecryptedMessage(transaction: Transaction, message: Message, g flags |= (1 << 9) return .layer73(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) } + case .layer101: + var decryptedMedia: SecretApi101.DecryptedMessageMedia? + + if let uploadedFile = uploadedFile { + decryptedMedia = SecretApi101.DecryptedMessageMedia.decryptedMessageMediaDocument(thumb: thumb, thumbW: thumbW, thumbH: thumbH, mimeType: file.mimeType, size: uploadedFile.size, key: Buffer(data: uploadedFile.key.aesKey), iv: Buffer(data: uploadedFile.key.aesIv), attributes: decryptedAttributes101(file.attributes, transaction: transaction), caption: "") + } else { + if let resource = file.resource as? CloudDocumentMediaResource, let size = file.size { + let thumb: SecretApi101.PhotoSize + if let smallestRepresentation = smallestImageRepresentation(file.previewRepresentations), let thumbResource = smallestRepresentation.resource as? CloudFileMediaResource { + thumb = .photoSize(type: "s", location: .fileLocation(dcId: Int32(thumbResource.datacenterId), volumeId: thumbResource.volumeId, localId: thumbResource.localId, secret: thumbResource.secret), w: Int32(smallestRepresentation.dimensions.width), h: Int32(smallestRepresentation.dimensions.height), size: thumbResource.size.flatMap(Int32.init) ?? 0) + } else { + thumb = SecretApi101.PhotoSize.photoSizeEmpty(type: "s") + } + decryptedMedia = SecretApi101.DecryptedMessageMedia.decryptedMessageMediaExternalDocument(id: resource.fileId, accessHash: resource.accessHash, date: 0, mimeType: file.mimeType, size: Int32(size), thumb: thumb, dcId: Int32(resource.datacenterId), attributes: decryptedAttributes101(file.attributes, transaction: transaction)) + } + } + + if let decryptedMedia = decryptedMedia { + if let _ = viaBotName { + flags |= (1 << 11) + } + let decryptedEntites = entities.flatMap(decryptedEntities101) + if let _ = decryptedEntites { + flags |= (1 << 7) + } + if message.groupingKey != nil { + flags |= (1 << 17) + } + flags |= (1 << 9) + return .layer101(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) + } } } else if let webpage = media as? TelegramMediaWebpage { var url: String? @@ -815,6 +981,17 @@ private func boxedDecryptedMessage(transaction: Transaction, message: Message, g let decryptedMedia = SecretApi73.DecryptedMessageMedia.decryptedMessageMediaWebPage(url: url) flags |= (1 << 9) return .layer73(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) + case .layer101: + if let _ = viaBotName { + flags |= (1 << 11) + } + let decryptedEntites = entities.flatMap(decryptedEntities101) + if let _ = decryptedEntites { + flags |= (1 << 7) + } + let decryptedMedia = SecretApi101.DecryptedMessageMedia.decryptedMessageMediaWebPage(url: url) + flags |= (1 << 9) + return .layer101(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) } } } else if let location = media as? TelegramMediaMap { @@ -850,6 +1027,23 @@ private func boxedDecryptedMessage(transaction: Transaction, message: Message, g decryptedMedia = .decryptedMessageMediaGeoPoint(lat: location.latitude, long: location.longitude) } return .layer73(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) + case .layer101: + if let _ = viaBotName { + flags |= (1 << 11) + } + let decryptedEntites = entities.flatMap(decryptedEntities101) + if let _ = decryptedEntites { + flags |= (1 << 7) + } + + let decryptedMedia: SecretApi101.DecryptedMessageMedia + flags |= (1 << 9) + if let venue = location.venue { + decryptedMedia = .decryptedMessageMediaVenue(lat: location.latitude, long: location.longitude, title: venue.title, address: venue.address ?? "", provider: venue.provider ?? "", venueId: venue.id ?? "") + } else { + decryptedMedia = .decryptedMessageMediaGeoPoint(lat: location.latitude, long: location.longitude) + } + return .layer101(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) } } else if let contact = media as? TelegramMediaContact { switch layer { @@ -874,6 +1068,18 @@ private func boxedDecryptedMessage(transaction: Transaction, message: Message, g let decryptedMedia: SecretApi73.DecryptedMessageMedia = .decryptedMessageMediaContact(phoneNumber: contact.phoneNumber, firstName: contact.firstName, lastName: contact.lastName, userId: 0) flags |= (1 << 9) return .layer73(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) + case .layer101: + if let _ = viaBotName { + flags |= (1 << 11) + } + let decryptedEntites = entities.flatMap(decryptedEntities101) + if let _ = decryptedEntites { + flags |= (1 << 7) + } + + let decryptedMedia: SecretApi101.DecryptedMessageMedia = .decryptedMessageMediaContact(phoneNumber: contact.phoneNumber, firstName: contact.firstName, lastName: contact.lastName, userId: 0) + flags |= (1 << 9) + return .layer101(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: decryptedMedia, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) } } } @@ -899,6 +1105,15 @@ private func boxedDecryptedMessage(transaction: Transaction, message: Message, g flags |= (1 << 7) } return .layer73(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: .decryptedMessageMediaEmpty, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) + case .layer101: + if let _ = viaBotName { + flags |= (1 << 11) + } + let decryptedEntites = entities.flatMap(decryptedEntities101) + if let _ = decryptedEntites { + flags |= (1 << 7) + } + return .layer101(.decryptedMessage(flags: flags, randomId: globallyUniqueId, ttl: messageAutoremoveTimeout, message: message.text, media: .decryptedMessageMediaEmpty, entities: decryptedEntites, viaBotName: viaBotName, replyToRandomId: replyGlobalId, groupedId: message.groupingKey)) } } @@ -916,6 +1131,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionDeleteMessages(randomIds: globallyUniqueIds))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionDeleteMessages(randomIds: globallyUniqueIds))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionDeleteMessages(randomIds: globallyUniqueIds))) } case let .screenshotMessages(layer, actionGloballyUniqueId, globallyUniqueIds, _): switch layer { @@ -929,6 +1146,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionScreenshotMessages(randomIds: globallyUniqueIds))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionScreenshotMessages(randomIds: globallyUniqueIds))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionScreenshotMessages(randomIds: globallyUniqueIds))) } case let .clearHistory(layer, actionGloballyUniqueId): switch layer { @@ -941,6 +1160,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionFlushHistory)) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionFlushHistory)) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionFlushHistory)) } case let .resendOperations(layer, actionGloballyUniqueId, fromSeqNo, toSeqNo): switch layer { @@ -948,6 +1169,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionResend(startSeqNo: fromSeqNo, endSeqNo: toSeqNo))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionResend(startSeqNo: fromSeqNo, endSeqNo: toSeqNo))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionResend(startSeqNo: fromSeqNo, endSeqNo: toSeqNo))) } case let .reportLayerSupport(layer, actionGloballyUniqueId, layerSupport): switch layer { @@ -961,6 +1184,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionNotifyLayer(layer: layerSupport))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionNotifyLayer(layer: layerSupport))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionNotifyLayer(layer: layerSupport))) } case let .pfsRequestKey(layer, actionGloballyUniqueId, rekeySessionId, gA): switch layer { @@ -968,6 +1193,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionRequestKey(exchangeId: rekeySessionId, gA: Buffer(buffer: gA)))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionRequestKey(exchangeId: rekeySessionId, gA: Buffer(buffer: gA)))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionRequestKey(exchangeId: rekeySessionId, gA: Buffer(buffer: gA)))) } case let .pfsAcceptKey(layer, actionGloballyUniqueId, rekeySessionId, gB, keyFingerprint): switch layer { @@ -975,6 +1202,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionAcceptKey(exchangeId: rekeySessionId, gB: Buffer(buffer: gB), keyFingerprint: keyFingerprint))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionAcceptKey(exchangeId: rekeySessionId, gB: Buffer(buffer: gB), keyFingerprint: keyFingerprint))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionAcceptKey(exchangeId: rekeySessionId, gB: Buffer(buffer: gB), keyFingerprint: keyFingerprint))) } case let .pfsAbortSession(layer, actionGloballyUniqueId, rekeySessionId): switch layer { @@ -982,6 +1211,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionAbortKey(exchangeId: rekeySessionId))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionAbortKey(exchangeId: rekeySessionId))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionAbortKey(exchangeId: rekeySessionId))) } case let .pfsCommitKey(layer, actionGloballyUniqueId, rekeySessionId, keyFingerprint): switch layer { @@ -989,6 +1220,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionCommitKey(exchangeId: rekeySessionId, keyFingerprint: keyFingerprint))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionCommitKey(exchangeId: rekeySessionId, keyFingerprint: keyFingerprint))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionCommitKey(exchangeId: rekeySessionId, keyFingerprint: keyFingerprint))) } case let .noop(layer, actionGloballyUniqueId): switch layer { @@ -996,6 +1229,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionNoop)) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionNoop)) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionNoop)) } case let .readMessageContents(layer, actionGloballyUniqueId, globallyUniqueIds): switch layer { @@ -1009,6 +1244,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionReadMessages(randomIds: globallyUniqueIds))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionReadMessages(randomIds: globallyUniqueIds))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionReadMessages(randomIds: globallyUniqueIds))) } case let .setMessageAutoremoveTimeout(layer, actionGloballyUniqueId, timeout, _): switch layer { @@ -1022,6 +1259,8 @@ private func boxedDecryptedSecretMessageAction(action: SecretMessageAction) -> B return .layer46(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionSetMessageTTL(ttlSeconds: timeout))) case .layer73: return .layer73(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionSetMessageTTL(ttlSeconds: timeout))) + case .layer101: + return .layer101(.decryptedMessageService(randomId: actionGloballyUniqueId, action: .decryptedMessageActionSetMessageTTL(ttlSeconds: timeout))) } } } diff --git a/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift b/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift index 0b950bf85c..a03847477b 100644 --- a/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift +++ b/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift @@ -52,6 +52,10 @@ private func parsedServiceAction(_ operation: SecretChatIncomingDecryptedOperati if let parsedObject = SecretApi73.parse(Buffer(bufferNoCopy: operation.contents)), let apiMessage = parsedObject as? SecretApi73.DecryptedMessage { return SecretChatServiceAction(apiMessage) } + case .layer101: + if let parsedObject = SecretApi101.parse(Buffer(bufferNoCopy: operation.contents)), let apiMessage = parsedObject as? SecretApi101.DecryptedMessage { + return SecretChatServiceAction(apiMessage) + } } return nil } @@ -153,6 +157,18 @@ func processSecretChatIncomingDecryptedOperations(mediaBox: MediaBox, transactio } else { contentParsingError = true } + case .layer101: + if let parsedObject = SecretApi101.parse(Buffer(bufferNoCopy: operation.contents)), let apiMessage = parsedObject as? SecretApi101.DecryptedMessage { + if let (parsedMessage, parsedResources) = parseMessage(peerId: peerId, authorId: updatedPeer.regularPeerId, tagLocalIndex: entry.tagLocalIndex, timestamp: operation.timestamp, apiMessage: apiMessage, file: operation.file, messageIdForGloballyUniqueMessageId: { id in + return transaction.messageIdForGloballyUniqueMessageId(peerId: peerId, id: id) + }) { + message = parsedMessage + resources = parsedResources + } + serviceAction = SecretChatServiceAction(apiMessage) + } else { + contentParsingError = true + } } switch updatedState.embeddedState { @@ -214,7 +230,11 @@ func processSecretChatIncomingDecryptedOperations(mediaBox: MediaBox, transactio case .handshake: throw MessageParsingError.invalidChatState case .basicLayer: - if layerSupport >= 73 { + if layerSupport >= 101 { + let sequenceBasedLayerState = SecretChatSequenceBasedLayerState(layerNegotiationState: SecretChatLayerNegotiationState(activeLayer: .layer101, locallyRequestedLayer: 101, remotelyRequestedLayer: layerSupport), rekeyState: nil, baseIncomingOperationIndex: entry.tagLocalIndex, baseOutgoingOperationIndex: transaction.operationLogGetNextEntryLocalIndex(peerId: peerId, tag: OperationLogTags.SecretOutgoing), topProcessedCanonicalIncomingOperationIndex: nil) + updatedState = updatedState.withUpdatedEmbeddedState(.sequenceBasedLayer(sequenceBasedLayerState)) + updatedState = addSecretChatOutgoingOperation(transaction: transaction, peerId: peerId, operation: .reportLayerSupport(layer: .layer101, actionGloballyUniqueId: arc4random64(), layerSupport: 101), state: updatedState) + } else if layerSupport >= 73 { let sequenceBasedLayerState = SecretChatSequenceBasedLayerState(layerNegotiationState: SecretChatLayerNegotiationState(activeLayer: .layer73, locallyRequestedLayer: 73, remotelyRequestedLayer: layerSupport), rekeyState: nil, baseIncomingOperationIndex: entry.tagLocalIndex, baseOutgoingOperationIndex: transaction.operationLogGetNextEntryLocalIndex(peerId: peerId, tag: OperationLogTags.SecretOutgoing), topProcessedCanonicalIncomingOperationIndex: nil) updatedState = updatedState.withUpdatedEmbeddedState(.sequenceBasedLayer(sequenceBasedLayerState)) updatedState = addSecretChatOutgoingOperation(transaction: transaction, peerId: peerId, operation: .reportLayerSupport(layer: .layer73, actionGloballyUniqueId: arc4random64(), layerSupport: 73), state: updatedState) @@ -455,6 +475,42 @@ extension SecretChatServiceAction { } } +extension SecretChatServiceAction { + init?(_ apiMessage: SecretApi101.DecryptedMessage) { + switch apiMessage { + case .decryptedMessage: + return nil + case let .decryptedMessageService(_, action): + switch action { + case let .decryptedMessageActionDeleteMessages(randomIds): + self = .deleteMessages(globallyUniqueIds: randomIds) + case .decryptedMessageActionFlushHistory: + self = .clearHistory + case let .decryptedMessageActionNotifyLayer(layer): + self = .reportLayerSupport(layer) + case let .decryptedMessageActionReadMessages(randomIds): + self = .markMessagesContentAsConsumed(globallyUniqueIds: randomIds) + case .decryptedMessageActionScreenshotMessages: + return nil + case let .decryptedMessageActionSetMessageTTL(ttlSeconds): + self = .setMessageAutoremoveTimeout(ttlSeconds) + case let .decryptedMessageActionResend(startSeqNo, endSeqNo): + self = .resendOperations(fromSeq: startSeqNo, toSeq: endSeqNo) + case let .decryptedMessageActionRequestKey(exchangeId, gA): + self = .rekeyAction(.pfsRequestKey(rekeySessionId: exchangeId, gA: MemoryBuffer(gA))) + case let .decryptedMessageActionAcceptKey(exchangeId, gB, keyFingerprint): + self = .rekeyAction(.pfsAcceptKey(rekeySessionId: exchangeId, gB: MemoryBuffer(gB), keyFingerprint: keyFingerprint)) + case let .decryptedMessageActionCommitKey(exchangeId, keyFingerprint): + self = .rekeyAction(.pfsCommitKey(rekeySessionId: exchangeId, keyFingerprint: keyFingerprint)) + case let .decryptedMessageActionAbortKey(exchangeId): + self = .rekeyAction(.pfsAbortSession(rekeySessionId: exchangeId)) + case .decryptedMessageActionNoop: + return nil + } + } + } +} + extension StoreMessage { convenience init?(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32, timestamp: Int32, apiMessage: SecretApi8.DecryptedMessage, file: SecretChatFileReference?) { switch apiMessage { @@ -549,6 +605,43 @@ extension TelegramMediaFileAttribute { } } +extension TelegramMediaFileAttribute { + init?(_ apiAttribute: SecretApi101.DocumentAttribute) { + switch apiAttribute { + case .documentAttributeAnimated: + self = .Animated + case let .documentAttributeAudio(flags, duration, title, performer, waveform): + let isVoice = (flags & (1 << 10)) != 0 + var waveformBuffer: MemoryBuffer? + if let waveform = waveform { + let memory = malloc(waveform.size)! + memcpy(memory, waveform.data, waveform.size) + waveformBuffer = MemoryBuffer(memory: memory, capacity: waveform.size, length: waveform.size, freeWhenDone: true) + } + self = .Audio(isVoice: isVoice, duration: Int(duration), title: title, performer: performer, waveform: waveformBuffer) + case let .documentAttributeFilename(fileName): + self = .FileName(fileName: fileName) + case let .documentAttributeImageSize(w, h): + self = .ImageSize(size: CGSize(width: CGFloat(w), height: CGFloat(h))) + case let .documentAttributeSticker(alt, stickerset): + let packReference: StickerPackReference? + switch stickerset { + case .inputStickerSetEmpty: + packReference = nil + case let .inputStickerSetShortName(shortName): + packReference = .name(shortName) + } + self = .Sticker(displayText: alt, packReference: packReference, maskData: nil) + case let .documentAttributeVideo(flags, duration, w, h): + var videoFlags: TelegramMediaVideoFlags = [] + if (flags & (1 << 0)) != 0 { + videoFlags.insert(.instantRoundVideo) + } + self = .Video(duration: Int(duration), size: CGSize(width: CGFloat(w), height: CGFloat(h)), flags: videoFlags) + } + } +} + private func parseEntities(_ entities: [SecretApi46.MessageEntity]?) -> TextEntitiesMessageAttribute { var result: [MessageTextEntity] = [] if let entities = entities { @@ -986,3 +1079,237 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 } } } + +private func parseEntities(_ entities: [SecretApi101.MessageEntity]) -> TextEntitiesMessageAttribute { + var result: [MessageTextEntity] = [] + for entity in entities { + switch entity { + case let .messageEntityMention(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Mention)) + case let .messageEntityHashtag(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Hashtag)) + case let .messageEntityBotCommand(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BotCommand)) + case let .messageEntityUrl(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Url)) + case let .messageEntityEmail(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Email)) + case let .messageEntityBold(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Bold)) + case let .messageEntityItalic(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Italic)) + case let .messageEntityCode(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Code)) + case let .messageEntityPre(offset, length, _): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Pre)) + case let .messageEntityTextUrl(offset, length, url): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .TextUrl(url: url))) + case let .messageEntityStrike(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Strikethrough)) + case let .messageEntityUnderline(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .Underline)) + case let .messageEntityBlockquote(offset, length): + result.append(MessageTextEntity(range: Int(offset) ..< Int(offset + length), type: .BlockQuote)) + case .messageEntityUnknown: + break + } + } + return TextEntitiesMessageAttribute(entities: result) +} + +private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32, timestamp: Int32, apiMessage: SecretApi101.DecryptedMessage, file: SecretChatFileReference?, messageIdForGloballyUniqueMessageId: (Int64) -> MessageId?) -> (StoreMessage, [(MediaResource, Data)])? { + switch apiMessage { + case let .decryptedMessage(_, randomId, ttl, message, media, entities, viaBotName, replyToRandomId, groupedId): + var text = message + var parsedMedia: [Media] = [] + var attributes: [MessageAttribute] = [] + var resources: [(MediaResource, Data)] = [] + + if let entitiesAttribute = entities.flatMap(parseEntities) { + attributes.append(entitiesAttribute) + } + + if let viaBotName = viaBotName, !viaBotName.isEmpty { + attributes.append(InlineBotMessageAttribute(peerId: nil, title: viaBotName)) + } + + if let media = media { + switch media { + case let .decryptedMessageMediaPhoto(thumb, thumbW, thumbH, w, h, size, key, iv, caption): + if !caption.isEmpty { + text = caption + } + if let file = file { + var representations: [TelegramMediaImageRepresentation] = [] + if thumb.size != 0 { + let resource = LocalFileMediaResource(fileId: arc4random64()) + representations.append(TelegramMediaImageRepresentation(dimensions: CGSize(width: CGFloat(thumbW), height: CGFloat(thumbH)), resource: resource)) + resources.append((resource, thumb.makeData())) + } + representations.append(TelegramMediaImageRepresentation(dimensions: CGSize(width: CGFloat(w), height: CGFloat(h)), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size))) + let image = TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.CloudSecretImage, id: file.id), representations: representations, immediateThumbnailData: nil, reference: nil, partialReference: nil) + parsedMedia.append(image) + } + case let .decryptedMessageMediaAudio(duration, mimeType, size, key, iv): + if let file = file { + let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: [TelegramMediaFileAttribute.Audio(isVoice: true, duration: Int(duration), title: nil, performer: nil, waveform: nil)]) + parsedMedia.append(fileMedia) + attributes.append(ConsumableContentMessageAttribute(consumed: false)) + } + case let .decryptedMessageMediaDocument(thumb, thumbW, thumbH, mimeType, size, key, iv, decryptedAttributes, caption): + if !caption.isEmpty { + text = caption + } + if let file = file { + var parsedAttributes: [TelegramMediaFileAttribute] = [] + for attribute in decryptedAttributes { + if let parsedAttribute = TelegramMediaFileAttribute(attribute) { + parsedAttributes.append(parsedAttribute) + } + } + var previewRepresentations: [TelegramMediaImageRepresentation] = [] + if thumb.size != 0 { + let resource = LocalFileMediaResource(fileId: arc4random64()) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: CGSize(width: CGFloat(thumbW), height: CGFloat(thumbH)), resource: resource)) + resources.append((resource, thumb.makeData())) + } + let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) + parsedMedia.append(fileMedia) + + loop: for attr in parsedAttributes { + switch attr { + case let .Video(_, _, flags): + if flags.contains(.instantRoundVideo) { + attributes.append(ConsumableContentMessageAttribute(consumed: false)) + } + break loop + case let .Audio(isVoice, _, _, _, _): + if isVoice { + attributes.append(ConsumableContentMessageAttribute(consumed: false)) + } + default: + break + } + } + } + case let .decryptedMessageMediaVideo(thumb, thumbW, thumbH, duration, mimeType, w, h, size, key, iv, caption): + if !caption.isEmpty { + text = caption + } + if let file = file { + let parsedAttributes: [TelegramMediaFileAttribute] = [.Video(duration: Int(duration), size: CGSize(width: CGFloat(w), height: CGFloat(h)), flags: []), .FileName(fileName: "video.mov")] + var previewRepresentations: [TelegramMediaImageRepresentation] = [] + if thumb.size != 0 { + let resource = LocalFileMediaResource(fileId: arc4random64()) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: CGSize(width: CGFloat(thumbW), height: CGFloat(thumbH)), resource: resource)) + resources.append((resource, thumb.makeData())) + } + let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) + parsedMedia.append(fileMedia) + } + case let .decryptedMessageMediaExternalDocument(id, accessHash, date, mimeType, size, thumb, dcId, attributes): + var parsedAttributes: [TelegramMediaFileAttribute] = [] + for attribute in attributes { + if let parsedAttribute = TelegramMediaFileAttribute(attribute) { + parsedAttributes.append(parsedAttribute) + } + } + var previewRepresentations: [TelegramMediaImageRepresentation] = [] + switch thumb { + case let .photoSize(_, location, w, h, size): + switch location { + case let .fileLocation(dcId, volumeId, localId, secret): + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: CGSize(width: CGFloat(w), height: CGFloat(h)), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil))) + case .fileLocationUnavailable: + break + } + case let .photoCachedSize(_, location, w, h, bytes): + if bytes.size > 0 { + switch location { + case let .fileLocation(dcId, volumeId, localId, secret): + let resource = CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: bytes.size, fileReference: nil) + resources.append((resource, bytes.makeData())) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: CGSize(width: CGFloat(w), height: CGFloat(h)), resource: resource)) + case .fileLocationUnavailable: + break + } + } + default: + break + } + let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudFile, id: id), partialReference: nil, resource: CloudDocumentMediaResource(datacenterId: Int(dcId), fileId: id, accessHash: accessHash, size: Int(size), fileReference: nil, fileName: nil), previewRepresentations: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) + parsedMedia.append(fileMedia) + case let .decryptedMessageMediaWebPage(url): + parsedMedia.append(TelegramMediaWebpage(webpageId: MediaId(namespace: Namespaces.Media.LocalWebpage, id: arc4random64()), content: .Pending(0, url))) + case let .decryptedMessageMediaGeoPoint(lat, long): + parsedMedia.append(TelegramMediaMap(latitude: lat, longitude: long, geoPlace: nil, venue: nil, liveBroadcastingTimeout: nil)) + case let .decryptedMessageMediaContact(phoneNumber, firstName, lastName, userId): + parsedMedia.append(TelegramMediaContact(firstName: firstName, lastName: lastName, phoneNumber: phoneNumber, peerId: userId == 0 ? nil : PeerId(namespace: Namespaces.Peer.CloudUser, id: userId), vCardData: nil)) + case let .decryptedMessageMediaVenue(lat, long, title, address, provider, venueId): + parsedMedia.append(TelegramMediaMap(latitude: lat, longitude: long, geoPlace: nil, venue: MapVenue(title: title, address: address, provider: provider, id: venueId, type: nil), liveBroadcastingTimeout: nil)) + case .decryptedMessageMediaEmpty: + break + } + } + + if ttl > 0 { + attributes.append(AutoremoveTimeoutMessageAttribute(timeout: ttl, countdownBeginTime: nil)) + } + + var groupingKey: Int64? + if let groupedId = groupedId { + inner: for media in parsedMedia { + if let _ = media as? TelegramMediaImage { + groupingKey = groupedId + break inner + } else if let _ = media as? TelegramMediaFile { + groupingKey = groupedId + break inner + } + } + } + + if let replyToRandomId = replyToRandomId, let replyMessageId = messageIdForGloballyUniqueMessageId(replyToRandomId) { + attributes.append(ReplyMessageAttribute(messageId: replyMessageId)) + } + + var entitiesAttribute: TextEntitiesMessageAttribute? + for attribute in attributes { + if let attribute = attribute as? TextEntitiesMessageAttribute { + entitiesAttribute = attribute + break + } + } + + let (tags, globalTags) = tagsForStoreMessage(incoming: true, attributes: attributes, media: parsedMedia, textEntities: entitiesAttribute?.entities) + + return (StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.SecretIncoming, id: tagLocalIndex), globallyUniqueId: randomId, groupingKey: groupingKey, timestamp: timestamp, flags: [.Incoming], tags: tags, globalTags: globalTags, localTags: [], forwardInfo: nil, authorId: authorId, text: text, attributes: attributes, media: parsedMedia), resources) + case let .decryptedMessageService(randomId, action): + switch action { + case .decryptedMessageActionDeleteMessages: + return nil + case .decryptedMessageActionFlushHistory: + return nil + case .decryptedMessageActionNotifyLayer: + return nil + case .decryptedMessageActionReadMessages: + return nil + case .decryptedMessageActionScreenshotMessages: + return (StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.SecretIncoming, id: tagLocalIndex), globallyUniqueId: randomId, groupingKey: nil, timestamp: timestamp, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: authorId, text: "", attributes: [], media: [TelegramMediaAction(action: .historyScreenshot)]), []) + case let .decryptedMessageActionSetMessageTTL(ttlSeconds): + return (StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.SecretIncoming, id: tagLocalIndex), globallyUniqueId: randomId, groupingKey: nil, timestamp: timestamp, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: authorId, text: "", attributes: [], media: [TelegramMediaAction(action: .messageAutoremoveTimeoutUpdated(ttlSeconds))]), []) + case .decryptedMessageActionResend: + return nil + case .decryptedMessageActionRequestKey: + return nil + case .decryptedMessageActionAcceptKey: + return nil + case .decryptedMessageActionCommitKey: + return nil + case .decryptedMessageActionAbortKey: + return nil + case .decryptedMessageActionNoop: + return nil + } + } +} diff --git a/submodules/TelegramCore/TelegramCore/SecretChatLayerNegotiation.swift b/submodules/TelegramCore/TelegramCore/SecretChatLayerNegotiation.swift index 2078aecaf6..d7bc4c10be 100644 --- a/submodules/TelegramCore/TelegramCore/SecretChatLayerNegotiation.swift +++ b/submodules/TelegramCore/TelegramCore/SecretChatLayerNegotiation.swift @@ -7,7 +7,7 @@ import Foundation import SwiftSignalKit #endif -private let topSupportedLayer: SecretChatSequenceBasedLayer = .layer73 +private let topSupportedLayer: SecretChatSequenceBasedLayer = .layer101 func secretChatCommonSupportedLayer(remoteLayer: Int32) -> SecretChatSequenceBasedLayer { switch remoteLayer { @@ -15,6 +15,8 @@ func secretChatCommonSupportedLayer(remoteLayer: Int32) -> SecretChatSequenceBas return .layer46 case 73: return .layer73 + case 101: + return .layer101 default: return topSupportedLayer } diff --git a/submodules/TelegramCore/TelegramCore/SecretChatOutgoingOperation.swift b/submodules/TelegramCore/TelegramCore/SecretChatOutgoingOperation.swift index 1c91ef2d9c..69b54688b9 100644 --- a/submodules/TelegramCore/TelegramCore/SecretChatOutgoingOperation.swift +++ b/submodules/TelegramCore/TelegramCore/SecretChatOutgoingOperation.swift @@ -81,6 +81,7 @@ struct SecretChatOutgoingFile: PostboxCoding { public enum SecretChatSequenceBasedLayer: Int32 { case layer46 = 46 case layer73 = 73 + case layer101 = 101 var secretChatLayer: SecretChatLayer { switch self { @@ -88,6 +89,8 @@ public enum SecretChatSequenceBasedLayer: Int32 { return .layer46 case .layer73: return .layer73 + case .layer101: + return .layer101 } } } diff --git a/submodules/TelegramCore/TelegramCore/SecretChatState.swift b/submodules/TelegramCore/TelegramCore/SecretChatState.swift index 4fca04dae7..3d5f1aacb0 100644 --- a/submodules/TelegramCore/TelegramCore/SecretChatState.swift +++ b/submodules/TelegramCore/TelegramCore/SecretChatState.swift @@ -14,6 +14,7 @@ enum SecretChatLayer: Int32 { case layer8 = 8 case layer46 = 46 case layer73 = 73 + case layer101 = 101 } public struct SecretChatKeySha1Fingerprint: PostboxCoding, Equatable { diff --git a/submodules/TelegramCore/TelegramCore/Serialization.swift b/submodules/TelegramCore/TelegramCore/Serialization.swift index 81e2594098..1f517bb8ab 100644 --- a/submodules/TelegramCore/TelegramCore/Serialization.swift +++ b/submodules/TelegramCore/TelegramCore/Serialization.swift @@ -216,7 +216,7 @@ public class BoxedMessage: NSObject { public class Serialization: NSObject, MTSerialization { public func currentLayer() -> UInt { - return 102 + return 101 } public func parseMessage(_ data: Data!) -> Any! { From 4cb7c560e9222cbc084f0c627b82dc99c0c3f264 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:46:36 +0200 Subject: [PATCH 02/16] Fixed error 406 handling on supergroup creation --- .../TelegramCore/ChannelCreation.swift | 5 ++++- .../TelegramCore/TelegramCore/CreateGroup.swift | 1 + .../TelegramUI/CreateChannelController.swift | 8 ++++++-- .../TelegramUI/CreateGroupController.swift | 17 +++++++++++++++-- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/ChannelCreation.swift b/submodules/TelegramCore/TelegramCore/ChannelCreation.swift index 567a7f1b4b..e5e4a21c8b 100644 --- a/submodules/TelegramCore/TelegramCore/ChannelCreation.swift +++ b/submodules/TelegramCore/TelegramCore/ChannelCreation.swift @@ -19,6 +19,7 @@ public enum CreateChannelError { case generic case restricted case tooMuchLocationBasedGroups + case serverProvided(String) } private func createChannel(account: Account, title: String, description: String?, isSupergroup:Bool, location: (latitude: Double, longitude: Double, address: String)? = nil) -> Signal { @@ -40,7 +41,9 @@ private func createChannel(account: Account, title: String, description: String? return account.network.request(Api.functions.channels.createChannel(flags: flags, title: title, about: description ?? "", geoPoint: geoPoint, address: address), automaticFloodWait: false) |> mapError { error -> CreateChannelError in - if error.errorDescription == "CHANNELS_ADMIN_LOCATED_TOO_MUCH" { + if error.errorCode == 406 { + return .serverProvided(error.errorDescription) + } else if error.errorDescription == "CHANNELS_ADMIN_LOCATED_TOO_MUCH" { return .tooMuchLocationBasedGroups } else if error.errorDescription == "USER_RESTRICTED" { return .restricted diff --git a/submodules/TelegramCore/TelegramCore/CreateGroup.swift b/submodules/TelegramCore/TelegramCore/CreateGroup.swift index 6a2bc5d015..a7707e72b3 100644 --- a/submodules/TelegramCore/TelegramCore/CreateGroup.swift +++ b/submodules/TelegramCore/TelegramCore/CreateGroup.swift @@ -20,6 +20,7 @@ public enum CreateGroupError { case privacy case restricted case tooMuchLocationBasedGroups + case serverProvided(String) } public func createGroup(account: Account, title: String, peerIds: [PeerId]) -> Signal { diff --git a/submodules/TelegramUI/TelegramUI/CreateChannelController.swift b/submodules/TelegramUI/TelegramUI/CreateChannelController.swift index cb9e30b61c..9f01800eb9 100644 --- a/submodules/TelegramUI/TelegramUI/CreateChannelController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateChannelController.swift @@ -258,14 +258,18 @@ public func createChannelController(context: AccountContext) -> ViewController { replaceControllerImpl?(controller) }, error: { error in let presentationData = context.sharedContext.currentPresentationData.with { $0 } - let text: String + let text: String? switch error { case .generic, .tooMuchLocationBasedGroups: text = presentationData.strings.Login_UnknownError case .restricted: text = presentationData.strings.Common_ActionNotAllowedError + default: + text = nil + } + if let text = text { + presentControllerImpl?(textAlertController(context: context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) } - presentControllerImpl?(textAlertController(context: context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) })) } }, changeProfilePhoto: { diff --git a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift index b2309751b0..c5ccb77daa 100644 --- a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift @@ -358,6 +358,8 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in return .restricted case .tooMuchLocationBasedGroups: return .tooMuchLocationBasedGroups + case let .serverProvided(error): + return .serverProvided(error) } } case .locatedGroup: @@ -381,6 +383,8 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in return .restricted case .tooMuchLocationBasedGroups: return .tooMuchLocationBasedGroups + case let .serverProvided(error): + return .serverProvided(error) } } } @@ -431,8 +435,12 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in } } }, error: { error in + if case .serverProvided = error { + return + } + let presentationData = context.sharedContext.currentPresentationData.with { $0 } - let text: String + let text: String? switch error { case .privacy: text = presentationData.strings.Privacy_GroupsAndChannels_InviteToChannelMultipleError @@ -442,8 +450,13 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in text = presentationData.strings.Common_ActionNotAllowedError case .tooMuchLocationBasedGroups: text = presentationData.strings.CreateGroup_ErrorLocatedGroupsTooMuch + default: + text = nil + } + + if let text = text { + presentControllerImpl?(textAlertController(context: context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) } - presentControllerImpl?(textAlertController(context: context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) })) } }, changeProfilePhoto: { From 29ad6040d845d9e9df1a93956b4d734dab29729c Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:47:44 +0200 Subject: [PATCH 03/16] Use filled icons for notifications --- Telegram-iOS.xcodeproj/project.pbxproj | 48 +++++ Telegram-iOS/BlackClassicNotificationIcon.png | Bin 0 -> 737 bytes .../BlackClassicNotificationIcon@2x.png | Bin 0 -> 2172 bytes .../BlackClassicNotificationIcon@3x.png | Bin 0 -> 4032 bytes Telegram-iOS/BlackFilledIconIpad@2x.png | Bin 6970 -> 13622 bytes Telegram-iOS/BlackNotificationIcon.png | Bin 0 -> 749 bytes Telegram-iOS/BlackNotificationIcon@2x.png | Bin 0 -> 2116 bytes Telegram-iOS/BlackNotificationIcon@3x.png | Bin 0 -> 3946 bytes Telegram-iOS/BlueClassicNotificationIcon.png | Bin 0 -> 715 bytes .../BlueClassicNotificationIcon@2x.png | Bin 0 -> 1840 bytes .../BlueClassicNotificationIcon@3x.png | Bin 0 -> 3292 bytes Telegram-iOS/BlueNotificationIcon.png | Bin 0 -> 665 bytes Telegram-iOS/BlueNotificationIcon@2x.png | Bin 0 -> 1781 bytes Telegram-iOS/BlueNotificationIcon@3x.png | Bin 0 -> 3428 bytes Telegram-iOS/Info.plist | 172 +++++++++--------- 15 files changed, 138 insertions(+), 82 deletions(-) create mode 100644 Telegram-iOS/BlackClassicNotificationIcon.png create mode 100644 Telegram-iOS/BlackClassicNotificationIcon@2x.png create mode 100644 Telegram-iOS/BlackClassicNotificationIcon@3x.png create mode 100755 Telegram-iOS/BlackNotificationIcon.png create mode 100755 Telegram-iOS/BlackNotificationIcon@2x.png create mode 100755 Telegram-iOS/BlackNotificationIcon@3x.png create mode 100644 Telegram-iOS/BlueClassicNotificationIcon.png create mode 100644 Telegram-iOS/BlueClassicNotificationIcon@2x.png create mode 100644 Telegram-iOS/BlueClassicNotificationIcon@3x.png create mode 100755 Telegram-iOS/BlueNotificationIcon.png create mode 100755 Telegram-iOS/BlueNotificationIcon@2x.png create mode 100755 Telegram-iOS/BlueNotificationIcon@3x.png diff --git a/Telegram-iOS.xcodeproj/project.pbxproj b/Telegram-iOS.xcodeproj/project.pbxproj index 95a16174b8..5c93d4bba8 100644 --- a/Telegram-iOS.xcodeproj/project.pbxproj +++ b/Telegram-iOS.xcodeproj/project.pbxproj @@ -173,6 +173,18 @@ 09C5732D2172953900BDF00F /* TGBridgeLocationVenue+TGTableItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 09C572FF2172953600BDF00F /* TGBridgeLocationVenue+TGTableItem.m */; }; 09CFB212217299E80083F7A3 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09CFB211217299E80083F7A3 /* CoreLocation.framework */; }; 09D30420217418EC00C00567 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D09DCBB51D0C856B00F51FFE /* Localizable.strings */; }; + 09E9600722C23FF200B13673 /* BlackNotificationIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600122C23FF000B13673 /* BlackNotificationIcon@3x.png */; }; + 09E9600822C23FF200B13673 /* BlackNotificationIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600222C23FF000B13673 /* BlackNotificationIcon.png */; }; + 09E9600922C23FF200B13673 /* BlueNotificationIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600322C23FF000B13673 /* BlueNotificationIcon.png */; }; + 09E9600A22C23FF200B13673 /* BlueNotificationIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600422C23FF100B13673 /* BlueNotificationIcon@2x.png */; }; + 09E9600B22C23FF200B13673 /* BlackNotificationIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600522C23FF100B13673 /* BlackNotificationIcon@2x.png */; }; + 09E9600C22C23FF200B13673 /* BlueNotificationIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600622C23FF100B13673 /* BlueNotificationIcon@3x.png */; }; + 09E9601322C2441000B13673 /* BlackClassicNotificationIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600D22C2440E00B13673 /* BlackClassicNotificationIcon@2x.png */; }; + 09E9601422C2441000B13673 /* BlackClassicNotificationIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600E22C2440E00B13673 /* BlackClassicNotificationIcon@3x.png */; }; + 09E9601522C2441000B13673 /* BlueClassicNotificationIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9600F22C2440F00B13673 /* BlueClassicNotificationIcon.png */; }; + 09E9601622C2441000B13673 /* BlueClassicNotificationIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9601022C2440F00B13673 /* BlueClassicNotificationIcon@2x.png */; }; + 09E9601722C2441000B13673 /* BlackClassicNotificationIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9601122C2440F00B13673 /* BlackClassicNotificationIcon.png */; }; + 09E9601822C2441000B13673 /* BlueClassicNotificationIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E9601222C2441000B13673 /* BlueClassicNotificationIcon@3x.png */; }; 09EBE2A522B004EA00F670AB /* BlueFilledIconIpad.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE29922B004E800F670AB /* BlueFilledIconIpad.png */; }; 09EBE2A622B004EA00F670AB /* BlueIconIpad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE29A22B004E800F670AB /* BlueIconIpad@2x.png */; }; 09EBE2A722B004EA00F670AB /* BlueIconIpad.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EBE29B22B004E900F670AB /* BlueIconIpad.png */; }; @@ -803,6 +815,18 @@ 09C573152172953800BDF00F /* TGBridgeLocationVenue+TGTableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "TGBridgeLocationVenue+TGTableItem.h"; path = "Bridge/TGBridgeLocationVenue+TGTableItem.h"; sourceTree = ""; }; 09CFB211217299E80083F7A3 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS5.0.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; 09D304212174335F00C00567 /* WatchBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchBridge.swift; sourceTree = ""; }; + 09E9600122C23FF000B13673 /* BlackNotificationIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackNotificationIcon@3x.png"; sourceTree = ""; }; + 09E9600222C23FF000B13673 /* BlackNotificationIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlackNotificationIcon.png; sourceTree = ""; }; + 09E9600322C23FF000B13673 /* BlueNotificationIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueNotificationIcon.png; sourceTree = ""; }; + 09E9600422C23FF100B13673 /* BlueNotificationIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueNotificationIcon@2x.png"; sourceTree = ""; }; + 09E9600522C23FF100B13673 /* BlackNotificationIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackNotificationIcon@2x.png"; sourceTree = ""; }; + 09E9600622C23FF100B13673 /* BlueNotificationIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueNotificationIcon@3x.png"; sourceTree = ""; }; + 09E9600D22C2440E00B13673 /* BlackClassicNotificationIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackClassicNotificationIcon@2x.png"; sourceTree = ""; }; + 09E9600E22C2440E00B13673 /* BlackClassicNotificationIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackClassicNotificationIcon@3x.png"; sourceTree = ""; }; + 09E9600F22C2440F00B13673 /* BlueClassicNotificationIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueClassicNotificationIcon.png; sourceTree = ""; }; + 09E9601022C2440F00B13673 /* BlueClassicNotificationIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueClassicNotificationIcon@2x.png"; sourceTree = ""; }; + 09E9601122C2440F00B13673 /* BlackClassicNotificationIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlackClassicNotificationIcon.png; sourceTree = ""; }; + 09E9601222C2441000B13673 /* BlueClassicNotificationIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueClassicNotificationIcon@3x.png"; sourceTree = ""; }; 09EBE29922B004E800F670AB /* BlueFilledIconIpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueFilledIconIpad.png; sourceTree = ""; }; 09EBE29A22B004E800F670AB /* BlueIconIpad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueIconIpad@2x.png"; sourceTree = ""; }; 09EBE29B22B004E900F670AB /* BlueIconIpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueIconIpad.png; sourceTree = ""; }; @@ -1198,6 +1222,18 @@ 09A218E122A14E5600DE6898 /* App Icons */ = { isa = PBXGroup; children = ( + 09E9601122C2440F00B13673 /* BlackClassicNotificationIcon.png */, + 09E9600D22C2440E00B13673 /* BlackClassicNotificationIcon@2x.png */, + 09E9600E22C2440E00B13673 /* BlackClassicNotificationIcon@3x.png */, + 09E9600F22C2440F00B13673 /* BlueClassicNotificationIcon.png */, + 09E9601022C2440F00B13673 /* BlueClassicNotificationIcon@2x.png */, + 09E9601222C2441000B13673 /* BlueClassicNotificationIcon@3x.png */, + 09E9600222C23FF000B13673 /* BlackNotificationIcon.png */, + 09E9600522C23FF100B13673 /* BlackNotificationIcon@2x.png */, + 09E9600122C23FF000B13673 /* BlackNotificationIcon@3x.png */, + 09E9600322C23FF000B13673 /* BlueNotificationIcon.png */, + 09E9600422C23FF100B13673 /* BlueNotificationIcon@2x.png */, + 09E9600622C23FF100B13673 /* BlueNotificationIcon@3x.png */, 09A4192E22B7A4D400637EB4 /* BlackClassicIconIpad.png */, 09A4192F22B7A4D400637EB4 /* BlackClassicIconIpad@2x.png */, 09A4192B22B7A4D400637EB4 /* BlackClassicIconLargeIpad@2x.png */, @@ -2681,11 +2717,13 @@ D04DCC211F71C80000B021D7 /* 0.m4a in Resources */, D04DCC261F71C80000B021D7 /* 103.m4a in Resources */, 09A218F222A1570A00DE6898 /* BlueFilledIcon@2x.png in Resources */, + 09E9600922C23FF200B13673 /* BlueNotificationIcon.png in Resources */, 090E777722A6945900CD99F5 /* BlueClassicIcon@2x.png in Resources */, D0CE6F69213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */, D08DB0C0213F4D1D00F2ADBF /* telegram_sphere@2x.png in Resources */, D08DB0AB213F4D1D00F2ADBF /* ic_bubble@2x.png in Resources */, D04DCC341F71C80000B021D7 /* 7.m4a in Resources */, + 09E9600722C23FF200B13673 /* BlackNotificationIcon@3x.png in Resources */, 09EBE2A522B004EA00F670AB /* BlueFilledIconIpad.png in Resources */, D0CE6F60213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */, D0CE6F63213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */, @@ -2698,8 +2736,12 @@ D0E8B8AE2044496C00605593 /* voip_end.caf in Resources */, D0CE6F68213EDA4400BCD44B /* InfoPlist.strings in Resources */, 09A218EE22A1570A00DE6898 /* BlueFilledIcon@3x.png in Resources */, + 09E9600C22C23FF200B13673 /* BlueNotificationIcon@3x.png in Resources */, + 09E9601422C2441000B13673 /* BlackClassicNotificationIcon@3x.png in Resources */, D0CE6F6A213EDA4400BCD44B /* Localizable.strings in Resources */, 09A4193522B7A4D500637EB4 /* BlackClassicIconIpad@2x.png in Resources */, + 09E9601622C2441000B13673 /* BlueClassicNotificationIcon@2x.png in Resources */, + 09E9601322C2441000B13673 /* BlackClassicNotificationIcon@2x.png in Resources */, D0E8C2DE2285EA55009F26E8 /* BlackIcon@2x.png in Resources */, D09DCBB71D0C856B00F51FFE /* Localizable.strings in Resources */, D0CE6F66213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */, @@ -2718,9 +2760,11 @@ D04DCC2C1F71C80000B021D7 /* 109.m4a in Resources */, D08DB0BD213F4D1D00F2ADBF /* start_arrow_ipad.png in Resources */, 09EBE2AB22B004EA00F670AB /* BlackIconLargeIpad@2x.png in Resources */, + 09E9601722C2441000B13673 /* BlackClassicNotificationIcon.png in Resources */, D0CE6F64213EDA4400BCD44B /* Localizable.strings in Resources */, D0CE6F6C213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */, D04DCC231F71C80000B021D7 /* 100.m4a in Resources */, + 09E9600A22C23FF200B13673 /* BlueNotificationIcon@2x.png in Resources */, 09A218EF22A1570A00DE6898 /* BlueIcon@2x.png in Resources */, D04DCC281F71C80000B021D7 /* 105.m4a in Resources */, D08DB0BB213F4D1D00F2ADBF /* private_screw@2x.png in Resources */, @@ -2742,6 +2786,7 @@ D0CE6F59213EDA4400BCD44B /* InfoPlist.strings in Resources */, D08DB0B9213F4D1D00F2ADBF /* powerful_star@2x.png in Resources */, D04DCC271F71C80000B021D7 /* 104.m4a in Resources */, + 09E9600B22C23FF200B13673 /* BlackNotificationIcon@2x.png in Resources */, 090E777522A6945900CD99F5 /* BlueClassicIcon@3x.png in Resources */, 09A218F122A1570A00DE6898 /* BlackFilledIcon@3x.png in Resources */, D04DCC2A1F71C80000B021D7 /* 107.m4a in Resources */, @@ -2754,6 +2799,7 @@ 09EBE2B022B004EA00F670AB /* BlueFilledIconLargeIpad@2x.png in Resources */, D0CE6F58213EDA4400BCD44B /* Localizable.strings in Resources */, D08DB0AF213F4D1D00F2ADBF /* ic_pencil@2x.png in Resources */, + 09E9601822C2441000B13673 /* BlueClassicNotificationIcon@3x.png in Resources */, D0CE6F67213EDA4400BCD44B /* Localizable.strings in Resources */, 09A4193322B7A4D500637EB4 /* BlueClassicIconLargeIpad@2x.png in Resources */, D04DCC291F71C80000B021D7 /* 106.m4a in Resources */, @@ -2787,11 +2833,13 @@ 090E777622A6945900CD99F5 /* BlackClassicIcon@3x.png in Resources */, D08DB0BF213F4D1D00F2ADBF /* telegram_plane1@2x.png in Resources */, D0E8B8B02044496C00605593 /* voip_ringback.caf in Resources */, + 09E9600822C23FF200B13673 /* BlackNotificationIcon.png in Resources */, 09EBE2A922B004EA00F670AB /* BlackFilledIconLargeIpad@2x.png in Resources */, 090E777422A6945900CD99F5 /* BlackClassicIcon@2x.png in Resources */, D00ED75A1FE94630001F38BD /* AppIntentVocabulary.plist in Resources */, D04DCC221F71C80000B021D7 /* 1.m4a in Resources */, 09EBE2AD22B004EA00F670AB /* BlackFilledIconIpad.png in Resources */, + 09E9601522C2441000B13673 /* BlueClassicNotificationIcon.png in Resources */, D0E8C2E02285EA6A009F26E8 /* BlackIcon@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Telegram-iOS/BlackClassicNotificationIcon.png b/Telegram-iOS/BlackClassicNotificationIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..20fe7d5eefc76b0f81d0446cac2a432f49169c1c GIT binary patch literal 737 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 IM6N<$f|u%0TmS$7 literal 6970 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 M07*qoM6N<$f_Ch+oB#j- diff --git a/Telegram-iOS/BlackNotificationIcon.png b/Telegram-iOS/BlackNotificationIcon.png new file mode 100755 index 0000000000000000000000000000000000000000..55ae148ed835510e4b1322f0050a4c8090452608 GIT binary patch literal 749 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 literal 0 HcmV?d00001 diff --git a/Telegram-iOS/BlueClassicNotificationIcon@2x.png b/Telegram-iOS/BlueClassicNotificationIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aa84350de54394609deafaa41e3a764e17f719fa GIT binary patch literal 1840 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 XqDnb;ef`Bt00000NkvXXu0mjf`=w&E literal 0 HcmV?d00001 diff --git a/Telegram-iOS/BlueNotificationIcon@3x.png b/Telegram-iOS/BlueNotificationIcon@3x.png new file mode 100755 index 0000000000000000000000000000000000000000..f7725e9914ccb92344b4212199c93cfd2e5efb49 GIT binary patch literal 3428 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 BlackIcon + BlackNotificationIcon UIPrerenderedIcon @@ -28,6 +29,7 @@ CFBundleIconFiles BlackClassicIcon + BlackClassicNotificationIcon UIPrerenderedIcon @@ -46,6 +48,7 @@ CFBundleIconFiles BlueIcon + BlueNotificationIcon UIPrerenderedIcon @@ -55,6 +58,7 @@ CFBundleIconFiles BlueClassicIcon + BlueClassicNotificationIcon UIPrerenderedIcon @@ -86,88 +90,92 @@ - CFBundleIcons~ipad - - CFBundleAlternateIcons - - Black - - CFBundleIconFiles - - BlackIconIpad - BlackIconLargeIpad - - UIPrerenderedIcon - - - BlackClassic - - CFBundleIconFiles - - BlackClassicIconIpad - BlackClassicIconLargeIpad - - UIPrerenderedIcon - - - BlackFilled - - CFBundleIconFiles - - BlackFilledIconIpad - BlackFilledIconLargeIpad - - UIPrerenderedIcon - - - Blue - - CFBundleIconFiles - - BlueIconIpad - BlueIconLargeIpad - - UIPrerenderedIcon - - - BlueClassic - - CFBundleIconFiles - - BlueClassicIconIpad - BlueClassicIconLargeIpad - - UIPrerenderedIcon - - - BlueFilled - - CFBundleIconFiles - - BlueFilledIconIpad - BlueFilledIconLargeIpad - - UIPrerenderedIcon - - - WhiteFilled - - CFBundleIconFiles - - WhiteFilledIcon - - UIPrerenderedIcon - - - - CFBundlePrimaryIcon - - CFBundleIconName - AppIconLLC - UIPrerenderedIcon - - - + CFBundleIcons~ipad + + CFBundleAlternateIcons + + Black + + CFBundleIconFiles + + BlackIconIpad + BlackIconLargeIpad + BlackNotificationIcon + + UIPrerenderedIcon + + + BlackClassic + + CFBundleIconFiles + + BlackClassicIconIpad + BlackClassicIconLargeIpad + BlackClassicNotificationIcon + + UIPrerenderedIcon + + + BlackFilled + + CFBundleIconFiles + + BlackFilledIconIpad + BlackFilledIconLargeIpad + + UIPrerenderedIcon + + + Blue + + CFBundleIconFiles + + BlueIconIpad + BlueIconLargeIpad + BlueNotificationIcon + + UIPrerenderedIcon + + + BlueClassic + + CFBundleIconFiles + + BlueClassicIconIpad + BlueClassicIconLargeIpad + BlueClassicNotificationIcon + + UIPrerenderedIcon + + + BlueFilled + + CFBundleIconFiles + + BlueFilledIconIpad + BlueFilledIconLargeIpad + + UIPrerenderedIcon + + + WhiteFilled + + CFBundleIconFiles + + WhiteFilledIcon + + UIPrerenderedIcon + + + + CFBundlePrimaryIcon + + CFBundleIconName + AppIconLLC + UIPrerenderedIcon + + + CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion From 25a5b1b79f882f48fa564e5a6b7b422b2fdb1648 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:50:36 +0200 Subject: [PATCH 04/16] Fixed overlapping entities display --- .../AuthorizationSequenceController.swift | 2 +- .../TelegramUI/ChatBotInfoItem.swift | 11 +++--- .../ChatInterfaceStateContextMenus.swift | 8 ----- .../ChatMessageActionItemNode.swift | 2 +- .../ChatMessageAttachedContentNode.swift | 15 ++++---- .../ChatMessageTextBubbleContentNode.swift | 2 +- .../TelegramUI/ChatTextInputAttributes.swift | 25 +++++++++----- .../TelegramUI/GalleryController.swift | 3 +- .../TelegramUI/GenerateTextEntities.swift | 2 ++ .../TelegramUI/ItemListAddressItem.swift | 3 +- .../ItemListMultilineTextItem.swift | 3 +- .../ItemListTextWithLabelItem.swift | 3 +- .../StickerPackPreviewControllerNode.swift | 2 +- .../StringWithAppliedEntities.swift | 34 +++++++++++++++++-- .../TermsOfServiceControllerNode.swift | 2 +- 15 files changed, 76 insertions(+), 41 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift index 8286b1dfe5..8d53530c21 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift @@ -277,7 +277,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail } var dismissImpl: (() -> Void)? let alertTheme = AlertControllerTheme(presentationTheme: strongSelf.theme) - let attributedText = stringWithAppliedEntities(termsOfService.text, entities: termsOfService.entities, baseColor: alertTheme.primaryColor, linkColor: alertTheme.accentColor, baseFont: Font.regular(13.0), linkFont: Font.regular(13.0), boldFont: Font.semibold(13.0), italicFont: Font.italic(13.0), fixedFont: Font.regular(13.0)) + let attributedText = stringWithAppliedEntities(termsOfService.text, entities: termsOfService.entities, baseColor: alertTheme.primaryColor, linkColor: alertTheme.accentColor, baseFont: Font.regular(13.0), linkFont: Font.regular(13.0), boldFont: Font.semibold(13.0), italicFont: Font.italic(13.0), boldItalicFont: Font.semiboldItalic(13.0), fixedFont: Font.regular(13.0)) let contentNode = TextAlertContentNode(theme: alertTheme, title: NSAttributedString(string: strongSelf.strings.Login_TermsOfServiceHeader, font: Font.medium(17.0), textColor: alertTheme.primaryColor, paragraphAlignment: .center), text: attributedText, actions: [ TextAlertAction(type: .defaultAction, title: strongSelf.strings.Login_TermsOfServiceAgree, action: { dismissImpl?() diff --git a/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift b/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift index 4cbef7f020..8af1aa4017 100644 --- a/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift @@ -6,10 +6,11 @@ import SwiftSignalKit import Postbox import TelegramCore -private let messageFont: UIFont = UIFont.systemFont(ofSize: 17.0) -private let messageBoldFont: UIFont = UIFont.boldSystemFont(ofSize: 17.0) -private let messageItalicFont: UIFont = UIFont.italicSystemFont(ofSize: 17.0) -private let messageFixedFont: UIFont = UIFont(name: "Menlo-Regular", size: 16.0) ?? UIFont.systemFont(ofSize: 17.0) +private let messageFont = Font.regular(17.0) +private let messageBoldFont = Font.semibold(17.0) +private let messageItalicFont = Font.italic(17.0) +private let messageBoldItalicFont = Font.semiboldItalic(17.0) +private let messageFixedFont = UIFont(name: "Menlo-Regular", size: 16.0) ?? UIFont.systemFont(ofSize: 17.0) final class ChatBotInfoItem: ListViewItem { fileprivate let text: String @@ -151,7 +152,7 @@ final class ChatBotInfoItemNode: ListViewItemNode { updatedTextAndEntities = (item.text, generateTextEntities(item.text, enabledTypes: .all)) } - let attributedText = stringWithAppliedEntities(updatedTextAndEntities.0, entities: updatedTextAndEntities.1, baseColor: item.presentationData.theme.theme.chat.bubble.infoPrimaryTextColor, linkColor: item.presentationData.theme.theme.chat.bubble.infoLinkTextColor, baseFont: messageFont, linkFont: messageFont, boldFont: messageBoldFont, italicFont: messageItalicFont, fixedFont: messageFixedFont) + let attributedText = stringWithAppliedEntities(updatedTextAndEntities.0, entities: updatedTextAndEntities.1, baseColor: item.presentationData.theme.theme.chat.bubble.infoPrimaryTextColor, linkColor: item.presentationData.theme.theme.chat.bubble.infoLinkTextColor, baseFont: messageFont, linkFont: messageFont, boldFont: messageBoldFont, italicFont: messageItalicFont, boldItalicFont: messageBoldItalicFont, fixedFont: messageFixedFont) let horizontalEdgeInset: CGFloat = 10.0 + params.leftInset let horizontalContentInset: CGFloat = 12.0 diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift index cf47675dfb..bd2edd2290 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextMenus.swift @@ -412,14 +412,6 @@ func contextMenuForChatPresentationIntefaceState(chatPresentationInterfaceState: } } storeMessageTextInPasteboard(message.text, entities: messageEntities) -// if let messageEntities = messageEntities { -// -// let attributedString = chatInputStateStringWithAppliedEntities(message.text, entities: messageEntities) -// //stringWithAppliedEntities(message.text, entities: messageEntities, baseColor: .black, linkColor: .black, baseFont: Font.regular(14.0), linkFont: Font.regular(14.0), boldFont: Font.bold(14.0), italicFont: Font.italic(14.0), fixedFont: Font.monospace(14.0)) -// UIPasteboard.general.set(attributedString: attributedString) -// } else { -// UIPasteboard.general.string = message.text -// } } }))) } diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift index 22006d08e7..3b7617e208 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift @@ -385,7 +385,7 @@ private func universalServiceMessageString(theme: ChatPresentationThemeData?, st } attributedString = NSAttributedString(string: titleString, font: titleFont, textColor: primaryTextColor) case let .customText(text, entities): - attributedString = stringWithAppliedEntities(text, entities: entities, baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, fixedFont: titleFont, underlineLinks: false) + attributedString = stringWithAppliedEntities(text, entities: entities, baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, underlineLinks: false) case let .botDomainAccessGranted(domain): attributedString = NSAttributedString(string: strings.AuthSessions_Message(domain).0, font: titleFont, textColor: primaryTextColor) case let .botSentSecureValues(types): diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift index 27969f1d9b..5fb8ca4c3a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift @@ -9,12 +9,13 @@ import Postbox import TelegramPresentationData import TelegramUIPreferences -private let titleFont: UIFont = Font.semibold(15.0) -private let textFont: UIFont = Font.regular(15.0) -private let textBoldFont: UIFont = Font.semibold(15.0) -private let textItalicFont: UIFont = Font.italic(15.0) -private let textFixedFont: UIFont = Font.regular(15.0) -private let buttonFont: UIFont = Font.semibold(13.0) +private let titleFont = Font.semibold(15.0) +private let textFont = Font.regular(15.0) +private let textBoldFont = Font.semibold(15.0) +private let textItalicFont = Font.italic(15.0) +private let textBoldItalicFont = Font.semiboldItalic(15.0) +private let textFixedFont = Font.regular(15.0) +private let buttonFont = Font.semibold(13.0) enum ChatMessageAttachedContentActionIcon { case instant @@ -370,7 +371,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { string.append(NSAttributedString(string: "\n", font: textFont, textColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor)) } if let entities = entities { - string.append(stringWithAppliedEntities(text, entities: entities, baseColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor, linkColor: incoming ? bubbleTheme.incomingLinkTextColor : bubbleTheme.outgoingLinkTextColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, fixedFont: textFixedFont)) + string.append(stringWithAppliedEntities(text, entities: entities, baseColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor, linkColor: incoming ? bubbleTheme.incomingLinkTextColor : bubbleTheme.outgoingLinkTextColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont)) } else { string.append(NSAttributedString(string: text + "\n", font: textFont, textColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor)) } diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift index 249c0c90cb..91ba9685a3 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift @@ -230,7 +230,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { let forceStatusNewline = false if let entities = entities { - attributedText = stringWithAppliedEntities(rawText, entities: entities, baseColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor, linkColor: incoming ? bubbleTheme.incomingLinkTextColor : bubbleTheme.outgoingLinkTextColor, baseFont: textFont, linkFont: textFont, boldFont: item.presentationData.messageBoldFont, italicFont: item.presentationData.messageItalicFont, fixedFont: item.presentationData.messageFixedFont) + attributedText = stringWithAppliedEntities(rawText, entities: entities, baseColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor, linkColor: incoming ? bubbleTheme.incomingLinkTextColor : bubbleTheme.outgoingLinkTextColor, baseFont: textFont, linkFont: textFont, boldFont: item.presentationData.messageBoldFont, italicFont: item.presentationData.messageItalicFont, boldItalicFont: item.presentationData.messageBoldItalicFont, fixedFont: item.presentationData.messageFixedFont) } else { attributedText = NSAttributedString(string: rawText, font: textFont, textColor: incoming ? bubbleTheme.incomingPrimaryTextColor : bubbleTheme.outgoingPrimaryTextColor) } diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift index 58a4e337c8..a9166ab9e6 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift @@ -12,8 +12,11 @@ struct ChatTextInputAttributes { static let italic = NSAttributedStringKey(rawValue: "Attribute__Italic") static let monospace = NSAttributedStringKey(rawValue: "Attribute__Monospace") static let strikethrough = NSAttributedStringKey(rawValue: "Attribute__Strikethrough") + static let underline = NSAttributedStringKey(rawValue: "Attribute__Underline") static let textMention = NSAttributedStringKey(rawValue: "Attribute__TextMention") static let textUrl = NSAttributedStringKey(rawValue: "Attribute__TextUrl") + + static let allAttributes = [ChatTextInputAttributes.bold, ChatTextInputAttributes.italic, ChatTextInputAttributes.monospace, ChatTextInputAttributes.strikethrough, ChatTextInputAttributes.underline, ChatTextInputAttributes.textMention, ChatTextInputAttributes.textUrl] } func stateAttributedStringForText(_ text: NSAttributedString) -> NSAttributedString { @@ -22,9 +25,7 @@ func stateAttributedStringForText(_ text: NSAttributedString) -> NSAttributedStr text.enumerateAttributes(in: fullRange, options: [], using: { attributes, range, _ in for (key, value) in attributes { - if key == ChatTextInputAttributes.textMention || key == ChatTextInputAttributes.textUrl { - result.addAttribute(key, value: value, range: range) - } else if key == ChatTextInputAttributes.bold || key == ChatTextInputAttributes.italic || key == ChatTextInputAttributes.monospace || key == ChatTextInputAttributes.strikethrough { + if ChatTextInputAttributes.allAttributes.contains(key) { result.addAttribute(key, value: value, range: range) } } @@ -32,12 +33,12 @@ func stateAttributedStringForText(_ text: NSAttributedString) -> NSAttributedStr return result } -private struct FontAttributes: OptionSet { +struct ChatTextFontAttributes: OptionSet { var rawValue: Int32 = 0 - static let bold = FontAttributes(rawValue: 1 << 0) - static let italic = FontAttributes(rawValue: 1 << 1) - static let monospace = FontAttributes(rawValue: 1 << 2) + static let bold = ChatTextFontAttributes(rawValue: 1 << 0) + static let italic = ChatTextFontAttributes(rawValue: 1 << 1) + static let monospace = ChatTextFontAttributes(rawValue: 1 << 2) } func textAttributedStringForStateText(_ stateText: NSAttributedString, fontSize: CGFloat, textColor: UIColor, accentTextColor: UIColor) -> NSAttributedString { @@ -48,7 +49,7 @@ func textAttributedStringForStateText(_ stateText: NSAttributedString, fontSize: result.addAttribute(NSAttributedStringKey.foregroundColor, value: textColor, range: fullRange) stateText.enumerateAttributes(in: fullRange, options: [], using: { attributes, range, _ in - var fontAttributes: FontAttributes = [] + var fontAttributes: ChatTextFontAttributes = [] for (key, value) in attributes { if key == ChatTextInputAttributes.textMention || key == ChatTextInputAttributes.textUrl { @@ -69,6 +70,9 @@ func textAttributedStringForStateText(_ stateText: NSAttributedString, fontSize: } else if key == ChatTextInputAttributes.strikethrough { result.addAttribute(key, value: value, range: range) result.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue as NSNumber, range: range) + } else if key == ChatTextInputAttributes.underline { + result.addAttribute(key, value: value, range: range) + result.addAttribute(NSAttributedStringKey.underlineStyle, value: NSUnderlineStyle.styleSingle.rawValue as NSNumber, range: range) } } @@ -421,7 +425,7 @@ func refreshChatTextInputAttributes(_ textNode: ASEditableTextNode, theme: Prese textNode.textView.textStorage.addAttribute(NSAttributedStringKey.foregroundColor, value: theme.chat.inputPanel.primaryTextColor, range: fullRange) attributedText.enumerateAttributes(in: fullRange, options: [], using: { attributes, range, _ in - var fontAttributes: FontAttributes = [] + var fontAttributes: ChatTextFontAttributes = [] for (key, value) in attributes { if key == ChatTextInputAttributes.textMention || key == ChatTextInputAttributes.textUrl { @@ -443,6 +447,9 @@ func refreshChatTextInputAttributes(_ textNode: ASEditableTextNode, theme: Prese } else if key == ChatTextInputAttributes.strikethrough { textNode.textView.textStorage.addAttribute(key, value: value, range: range) textNode.textView.textStorage.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue as NSNumber, range: range) + } else if key == ChatTextInputAttributes.underline { + textNode.textView.textStorage.addAttribute(key, value: value, range: range) + textNode.textView.textStorage.addAttribute(NSAttributedStringKey.underlineStyle, value: NSUnderlineStyle.styleSingle.rawValue as NSNumber, range: range) } } diff --git a/submodules/TelegramUI/TelegramUI/GalleryController.swift b/submodules/TelegramUI/TelegramUI/GalleryController.swift index 26ecf9301c..a700348363 100644 --- a/submodules/TelegramUI/TelegramUI/GalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/GalleryController.swift @@ -118,10 +118,11 @@ func internalDocumentItemSupportsMimeType(_ type: String, fileName: String?) -> private let textFont = Font.regular(16.0) private let boldFont = Font.bold(16.0) private let italicFont = Font.italic(16.0) +private let boldItalicFont = Font.semiboldItalic(16.0) private let fixedFont = UIFont(name: "Menlo-Regular", size: 15.0) ?? textFont func galleryCaptionStringWithAppliedEntities(_ text: String, entities: [MessageTextEntity]) -> NSAttributedString { - return stringWithAppliedEntities(text, entities: entities, baseColor: .white, linkColor: UIColor(rgb: 0x5ac8fa), baseFont: textFont, linkFont: textFont, boldFont: boldFont, italicFont: italicFont, fixedFont: fixedFont, underlineLinks: false) + return stringWithAppliedEntities(text, entities: entities, baseColor: .white, linkColor: UIColor(rgb: 0x5ac8fa), baseFont: textFont, linkFont: textFont, boldFont: boldFont, italicFont: italicFont, boldItalicFont: boldItalicFont, fixedFont: fixedFont, underlineLinks: false) } private func galleryMessageCaptionText(_ message: Message) -> String { diff --git a/submodules/TelegramUI/TelegramUI/GenerateTextEntities.swift b/submodules/TelegramUI/TelegramUI/GenerateTextEntities.swift index a1ef209e47..b43d368a06 100644 --- a/submodules/TelegramUI/TelegramUI/GenerateTextEntities.swift +++ b/submodules/TelegramUI/TelegramUI/GenerateTextEntities.swift @@ -134,6 +134,8 @@ func generateChatInputTextEntities(_ text: NSAttributedString) -> [MessageTextEn entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .Code)) } else if key == ChatTextInputAttributes.strikethrough { entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .Strikethrough)) + } else if key == ChatTextInputAttributes.underline { + entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .Underline)) } else if key == ChatTextInputAttributes.textMention, let value = value as? ChatTextInputTextMentionAttribute { entities.append(MessageTextEntity(range: range.lowerBound ..< range.upperBound, type: .TextMention(peerId: value.peerId))) } else if key == ChatTextInputAttributes.textUrl, let value = value as? ChatTextInputTextUrlAttribute { diff --git a/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift b/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift index a85983d0bd..c05ce7c48f 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift @@ -80,6 +80,7 @@ private let labelFont = Font.regular(14.0) private let textFont = Font.regular(17.0) private let textBoldFont = Font.medium(17.0) private let textItalicFont = Font.italic(17.0) +private let textBoldItalicFont = Font.semiboldItalic(17.0) private let textFixedFont = Font.regular(17.0) class ItemListAddressItemNode: ListViewItemNode { @@ -181,7 +182,7 @@ class ItemListAddressItemNode: ListViewItemNode { let (labelLayout, labelApply) = makeLabelLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.label, font: labelFont, textColor: labelColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let baseColor = item.theme.list.itemPrimaryTextColor - let string = stringWithAppliedEntities(item.text, entities: [], baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, fixedFont: textFixedFont) + let string = stringWithAppliedEntities(item.text, entities: [], baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont) let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset - 98.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let padding: CGFloat = !item.label.isEmpty ? 39.0 : 20.0 diff --git a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift index e63bbd7017..868c59b8ab 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift @@ -86,6 +86,7 @@ class ItemListMultilineTextItem: ListViewItem, ItemListItem { private let titleFont = Font.regular(17.0) private let titleBoldFont = Font.medium(17.0) private let titleItalicFont = Font.italic(17.0) +private let titleBoldItalicFont = Font.semiboldItalic(17.0) private let titleFixedFont = Font.regular(17.0) class ItemListMultilineTextItemNode: ListViewItemNode { @@ -184,7 +185,7 @@ class ItemListMultilineTextItemNode: ListViewItemNode { } let entities = generateTextEntities(item.text, enabledTypes: item.enabledEntitiyTypes) - let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: titleFont, linkFont: titleFont, boldFont: titleBoldFont, italicFont: titleItalicFont, fixedFont: titleFixedFont) + let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: titleFont, linkFont: titleFont, boldFont: titleBoldFont, italicFont: titleItalicFont, boldItalicFont: titleBoldItalicFont, fixedFont: titleFixedFont) let (titleLayout, titleApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 20.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) diff --git a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift index 14fb93fac4..43ba6a026c 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift @@ -92,6 +92,7 @@ private let labelFont = Font.regular(14.0) private let textFont = Font.regular(17.0) private let textBoldFont = Font.medium(17.0) private let textItalicFont = Font.italic(17.0) +private let textBoldItalicFont = Font.semiboldItalic(17.0) private let textFixedFont = Font.regular(17.0) class ItemListTextWithLabelItemNode: ListViewItemNode { @@ -208,7 +209,7 @@ class ItemListTextWithLabelItemNode: ListViewItemNode { case .highlighted: baseColor = item.theme.list.itemHighlightedColor } - let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, fixedFont: textFixedFont) + let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont) let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: item.multiline ? 0 : 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let contentSize = CGSize(width: params.width, height: textLayout.size.height + 39.0) diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift index 70d1eb3efd..61c1770a6e 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift @@ -374,7 +374,7 @@ final class StickerPackPreviewControllerNode: ViewControllerTracingNode, UIScrol if self.currentItems.isEmpty && !updatedItems.isEmpty { let entities = generateTextEntities(info.title, enabledTypes: [.mention]) - self.contentTitleNode.attributedText = stringWithAppliedEntities(info.title, entities: entities, baseColor: self.presentationData.theme.actionSheet.primaryTextColor, linkColor: self.presentationData.theme.actionSheet.controlAccentColor, baseFont: Font.medium(20.0), linkFont: Font.medium(20.0), boldFont: Font.medium(20.0), italicFont: Font.medium(20.0), fixedFont: Font.medium(20.0)) + self.contentTitleNode.attributedText = stringWithAppliedEntities(info.title, entities: entities, baseColor: self.presentationData.theme.actionSheet.primaryTextColor, linkColor: self.presentationData.theme.actionSheet.controlAccentColor, baseFont: Font.medium(20.0), linkFont: Font.medium(20.0), boldFont: Font.medium(20.0), italicFont: Font.medium(20.0), boldItalicFont: Font.medium(20.0), fixedFont: Font.medium(20.0)) animateIn = true } transaction = StickerPackPreviewGridTransaction(previousList: self.currentItems, list: updatedItems, account: self.context.account, interaction: self.interaction) diff --git a/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift b/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift index 9c38d83547..fef36803ae 100644 --- a/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift +++ b/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift @@ -36,6 +36,8 @@ func chatInputStateStringWithAppliedEntities(_ text: String, entities: [MessageT string.addAttribute(ChatTextInputAttributes.monospace, value: true as NSNumber, range: range) case .Strikethrough: string.addAttribute(ChatTextInputAttributes.strikethrough, value: true as NSNumber, range: range) + case .Underline: + string.addAttribute(ChatTextInputAttributes.underline, value: true as NSNumber, range: range) default: break } @@ -43,7 +45,7 @@ func chatInputStateStringWithAppliedEntities(_ text: String, entities: [MessageT return string } -func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], baseColor: UIColor, linkColor: UIColor, baseFont: UIFont, linkFont: UIFont, boldFont: UIFont, italicFont: UIFont, fixedFont: UIFont, underlineLinks: Bool = true, external: Bool = false) -> NSAttributedString { +func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], baseColor: UIColor, linkColor: UIColor, baseFont: UIFont, linkFont: UIFont, boldFont: UIFont, italicFont: UIFont, boldItalicFont: UIFont, fixedFont: UIFont, underlineLinks: Bool = true, external: Bool = false) -> NSAttributedString { var nsString: NSString? let string = NSMutableAttributedString(string: text, attributes: [NSAttributedStringKey.font: baseFont, NSAttributedStringKey.foregroundColor: baseColor]) var skipEntity = false @@ -52,6 +54,8 @@ func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], ba if linkColor.isEqual(baseColor) { underlineAllLinks = true } + var fontAttributes: [NSRange: ChatTextFontAttributes] = [:] + for i in 0 ..< entities.count { if skipEntity { skipEntity = false @@ -108,9 +112,17 @@ func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], ba string.addAttribute(NSAttributedStringKey(rawValue: TelegramTextAttributes.URL), value: url, range: range) } case .Bold: - string.addAttribute(NSAttributedStringKey.font, value: boldFont, range: range) + if let fontAttribute = fontAttributes[range] { + fontAttributes[range] = fontAttribute.union(.bold) + } else { + fontAttributes[range] = .bold + } case .Italic: - string.addAttribute(NSAttributedStringKey.font, value: italicFont, range: range) + if let fontAttribute = fontAttributes[range] { + fontAttributes[range] = fontAttribute.union(.italic) + } else { + fontAttributes[range] = .italic + } case .Mention: string.addAttribute(NSAttributedStringKey.foregroundColor, value: linkColor, range: range) if underlineLinks && underlineAllLinks { @@ -125,6 +137,8 @@ func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], ba string.addAttribute(NSAttributedStringKey(rawValue: TelegramTextAttributes.PeerTextMention), value: nsString!.substring(with: range), range: range) case .Strikethrough: string.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue as NSNumber, range: range) + case .Underline: + string.addAttribute(NSAttributedStringKey.underlineStyle, value: NSUnderlineStyle.styleSingle.rawValue as NSNumber, range: range) case let .TextMention(peerId): string.addAttribute(NSAttributedStringKey.foregroundColor, value: linkColor, range: range) if underlineLinks && underlineAllLinks { @@ -191,6 +205,20 @@ func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], ba default: break } + + for (range, fontAttributes) in fontAttributes { + var font: UIFont? + if fontAttributes == [.bold, .italic] { + font = boldItalicFont + } else if fontAttributes == [.bold] { + font = boldFont + } else if fontAttributes == [.italic] { + font = italicFont + } + if let font = font { + string.addAttribute(NSAttributedStringKey.font, value: font, range: range) + } + } } return string } diff --git a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift b/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift index 678c638681..0d3c59e5fd 100644 --- a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift @@ -57,7 +57,7 @@ final class TermsOfServiceControllerNode: ViewControllerTracingNode { self.contentTextNode = ImmediateTextNode() self.contentTextNode.displaysAsynchronously = false self.contentTextNode.maximumNumberOfLines = 0 - self.contentTextNode.attributedText = stringWithAppliedEntities(text, entities: entities, baseColor: theme.primary, linkColor: theme.accent, baseFont: Font.regular(15.0), linkFont: Font.regular(15.0), boldFont: Font.semibold(15.0), italicFont: Font.italic(15.0), fixedFont: Font.monospace(15.0)) + self.contentTextNode.attributedText = stringWithAppliedEntities(text, entities: entities, baseColor: theme.primary, linkColor: theme.accent, baseFont: Font.regular(15.0), linkFont: Font.regular(15.0), boldFont: Font.semibold(15.0), italicFont: Font.italic(15.0), boldItalicFont: Font.semiboldItalic(15.0), fixedFont: Font.monospace(15.0)) self.toolbarNode = ASDisplayNode() self.toolbarSeparatorNode = ASDisplayNode() From 331046173712602e20d1ef16227786012b88c2fd Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:54:31 +0200 Subject: [PATCH 05/16] Added support for theme-specific accent colors --- .../Sources/PresentationData.swift | 8 +- .../TelegramUI/CustomWallpaperPicker.swift | 2 +- .../TelegramUI/LegacyPreferencesImport.swift | 6 +- .../TelegramUI/SuppressContactsWarning.swift | 2 +- .../TelegramUI/ThemeGridController.swift | 4 +- .../ThemeSettingsAccentColorItem.swift | 170 ++++++++---------- .../TelegramUI/ThemeSettingsController.swift | 117 +++++++----- .../TelegramUI/ThemeSettingsThemeItem.swift | 64 ++++--- .../WallpaperGalleryController.swift | 2 +- .../TelegramUI/WallpaperUploadManager.swift | 2 +- .../Sources/PresentationThemeSettings.swift | 120 +++++++++++-- 11 files changed, 305 insertions(+), 192 deletions(-) diff --git a/submodules/TelegramPresentationData/Sources/PresentationData.swift b/submodules/TelegramPresentationData/Sources/PresentationData.swift index b1c42ddcbc..4d87418c76 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationData.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationData.swift @@ -271,6 +271,8 @@ public func currentPresentationDataAndSettings(accountManager: AccountManager) - effectiveTheme = themeSettings.theme } + let effectiveAccentColor = themeSettings.themeSpecificAccentColors[effectiveTheme.index]?.color ?? defaultDayAccentColor + switch effectiveTheme { case let .builtin(reference): switch reference { @@ -281,7 +283,7 @@ public func currentPresentationDataAndSettings(accountManager: AccountManager) - case .nightAccent: themeValue = defaultDarkAccentPresentationTheme case .day: - themeValue = makeDefaultDayPresentationTheme(accentColor: themeSettings.themeAccentColor ?? defaultDayAccentColor, serviceBackgroundColor: defaultServiceBackgroundColor) + themeValue = makeDefaultDayPresentationTheme(accentColor: effectiveAccentColor, serviceBackgroundColor: defaultServiceBackgroundColor) } } let dateTimeFormat = currentDateTimeFormat() @@ -550,6 +552,8 @@ public func updatedPresentationData(accountManager: AccountManager, applicationI effectiveTheme = themeSettings.theme } + let effectiveAccentColor = themeSettings.themeSpecificAccentColors[effectiveTheme.index]?.color ?? defaultDayAccentColor + let themeValue: PresentationTheme switch effectiveTheme { case let .builtin(reference): @@ -561,7 +565,7 @@ public func updatedPresentationData(accountManager: AccountManager, applicationI case .nightAccent: themeValue = defaultDarkAccentPresentationTheme case .day: - themeValue = makeDefaultDayPresentationTheme(accentColor: themeSettings.themeAccentColor ?? defaultDayAccentColor, serviceBackgroundColor: serviceBackgroundColor) + themeValue = makeDefaultDayPresentationTheme(accentColor: effectiveAccentColor, serviceBackgroundColor: serviceBackgroundColor) } } diff --git a/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift b/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift index 749935bd96..691a0a0d10 100644 --- a/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift +++ b/submodules/TelegramUI/TelegramUI/CustomWallpaperPicker.swift @@ -150,7 +150,7 @@ func uploadCustomWallpaper(context: AccountContext, wallpaper: WallpaperGalleryE let _ = (updatePresentationThemeSettingsInteractively(accountManager: accountManager, { current in var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers themeSpecificChatWallpapers[current.theme.index] = wallpaper - return PresentationThemeSettings(chatWallpaper: wallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: wallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) })).start() } diff --git a/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift b/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift index 3ddb5f2e46..f26c2d1eb5 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift @@ -189,7 +189,8 @@ func importLegacyPreferences(accountManager: AccountManager, account: TemporaryA settings.theme = .builtin(.day) if presentationState.userInfo != 0 { - settings.themeAccentColor = presentationState.userInfo + //themeSpecificAccentColors: current.themeSpecificAccentColors + //settings.themeAccentColor = presentationState.userInfo } settings.chatWallpaper = .color(0xffffff) case 2: @@ -214,7 +215,8 @@ func importLegacyPreferences(accountManager: AccountManager, account: TemporaryA settings.fontSize = fontSizeMap[presentationState.fontSize] ?? .regular if presentationState.userInfo != 0 { - settings.themeAccentColor = presentationState.userInfo + //themeSpecificAccentColors: current.themeSpecificAccentColors + //settings.themeAccentColor = presentationState.userInfo } } diff --git a/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift b/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift index e7646ab873..29ad6725c2 100644 --- a/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift +++ b/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift @@ -8,7 +8,7 @@ import DeviceAccess func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } present(textAlertController(context: context, title: presentationData.strings.Contacts_PermissionsSuppressWarningTitle, text: presentationData.strings.Contacts_PermissionsSuppressWarningText, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Contacts_PermissionsKeepDisabled, action: { - ApplicationSpecificNotice.setContactsPermissionWarning(accountManager: context.sharedContext.accountManager, value: Int32(Date().timeIntervalSince1970)) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .contacts, value: Int32(Date().timeIntervalSince1970)) }), TextAlertAction(type: .defaultAction, title: presentationData.strings.Contacts_PermissionsEnable, action: { let _ = (DeviceAccess.authorizationStatus(subject: .contacts) |> take(1) diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridController.swift b/submodules/TelegramUI/TelegramUI/ThemeGridController.swift index 91adf13aea..64638e049f 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridController.swift @@ -185,7 +185,7 @@ final class ThemeGridController: ViewController { var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers themeSpecificChatWallpapers[current.theme.index] = fallbackWallpaper - return PresentationThemeSettings(chatWallpaper: fallbackWallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: fallbackWallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) })).start() break } @@ -257,7 +257,7 @@ final class ThemeGridController: ViewController { } else { wallpaper = .builtin(WallpaperSettings()) } - return PresentationThemeSettings(chatWallpaper: wallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: [:], fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: wallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: [:], fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) }) }).start() diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsAccentColorItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsAccentColorItem.swift index 156e9cf282..439f65876f 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsAccentColorItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsAccentColorItem.swift @@ -5,33 +5,26 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramCore import TelegramPresentationData +import TelegramUIPreferences -private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selected: Bool) -> UIImage? { - return generateImage(CGSize(width: 30.0, height: 30.0), rotatedContext: { size, context in +private func generateSwatchImage(color: PresentationThemeAccentColor, selected: Bool) -> UIImage? { + return generateImage(CGSize(width: 40.0, height: 40.0), rotatedContext: { size, context in let bounds = CGRect(origin: CGPoint(), size: size) - context.setFillColor(theme.list.itemBlocksBackgroundColor.cgColor) - context.fill(bounds) - context.setBlendMode(.clear) - context.fillEllipse(in: bounds) - context.setBlendMode(.normal) + context.clear(bounds) + + let fillColor = UIColor(rgb: UInt32(bitPattern: color.color)) + let strokeColor = UIColor(rgb: UInt32(bitPattern: color.baseColor.colorValue)) + + context.setFillColor(fillColor.cgColor) + context.setStrokeColor(strokeColor.cgColor) + context.setLineWidth(2.0) - let lineWidth: CGFloat if selected { - var accentColor = theme.list.itemAccentColor - if accentColor.rgb == UIColor.white.rgb { - accentColor = UIColor(rgb: 0x999999) - } - context.setStrokeColor(accentColor.cgColor) - lineWidth = 2.0 + context.fillEllipse(in: bounds.insetBy(dx: 4.0, dy: 4.0)) + context.strokeEllipse(in: bounds.insetBy(dx: 1.0, dy: 1.0)) } else { - context.setStrokeColor(theme.list.disclosureArrowColor.withAlphaComponent(0.4).cgColor) - lineWidth = 1.0 - } - - if bordered || selected { - context.setLineWidth(lineWidth) - context.strokeEllipse(in: bounds.insetBy(dx: lineWidth / 2.0, dy: lineWidth / 2.0)) + context.fillEllipse(in: bounds) } })?.stretchableImage(withLeftCapWidth: 15, topCapHeight: 15) } @@ -40,18 +33,18 @@ class ThemeSettingsAccentColorItem: ListViewItem, ItemListItem { var sectionId: ItemListSectionId let theme: PresentationTheme - let strings: PresentationStrings - let colors: [UIColor] - let currentColor: UIColor - let updated: (UIColor) -> Void + let colors: [PresentationThemeBaseColor] + let currentColor: PresentationThemeAccentColor + let updated: (PresentationThemeAccentColor) -> Void + let toggleSlider: () -> Void let tag: ItemListItemTag? - init(theme: PresentationTheme, strings: PresentationStrings, sectionId: ItemListSectionId, colors: [UIColor], currentColor: UIColor, updated: @escaping (UIColor) -> Void, tag: ItemListItemTag? = nil) { + init(theme: PresentationTheme, sectionId: ItemListSectionId, colors: [PresentationThemeBaseColor], currentColor: PresentationThemeAccentColor, updated: @escaping (PresentationThemeAccentColor) -> Void, toggleSlider: @escaping () -> Void, tag: ItemListItemTag? = nil) { self.theme = theme - self.strings = strings self.colors = colors self.currentColor = currentColor self.updated = updated + self.toggleSlider = toggleSlider self.tag = tag self.sectionId = sectionId } @@ -92,8 +85,6 @@ class ThemeSettingsAccentColorItem: ListViewItem, ItemListItem { private final class ThemeSettingsAccentColorNode : ASDisplayNode { private let iconNode: ASImageNode - private let overlayNode: ASImageNode - private let textNode: ASTextNode private var action: (() -> Void)? override init() { @@ -101,25 +92,13 @@ private final class ThemeSettingsAccentColorNode : ASDisplayNode { self.iconNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 62.0, height: 62.0)) self.iconNode.isLayerBacked = true - self.overlayNode = ASImageNode() - self.overlayNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 62.0, height: 62.0)) - self.overlayNode.isLayerBacked = true - - self.textNode = ASTextNode() - self.textNode.isUserInteractionEnabled = false - self.textNode.displaysAsynchronously = true - super.init() self.addSubnode(self.iconNode) - self.addSubnode(self.overlayNode) - self.addSubnode(self.textNode) } - func setup(theme: PresentationTheme, icon: UIImage, title: NSAttributedString, bordered: Bool, selected: Bool, action: @escaping () -> Void) { - self.iconNode.image = icon - self.textNode.attributedText = title - self.overlayNode.image = generateBorderImage(theme: theme, bordered: bordered, selected: selected) + func setup(color: PresentationThemeAccentColor, selected: Bool, action: @escaping () -> Void) { + self.iconNode.image = generateSwatchImage(color: color, selected: selected) self.action = { action() } @@ -139,12 +118,8 @@ private final class ThemeSettingsAccentColorNode : ASDisplayNode { override func layout() { super.layout() - - let bounds = self.bounds - - self.iconNode.frame = CGRect(origin: CGPoint(x: 10.0, y: 14.0), size: CGSize(width: 62.0, height: 62.0)) - self.overlayNode.frame = CGRect(origin: CGPoint(x: 10.0, y: 14.0), size: CGSize(width: 62.0, height: 62.0)) - self.textNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 14.0 + 60.0 + 4.0 + 9.0), size: CGSize(width: bounds.size.width, height: 16.0)) + + self.iconNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 40.0, height: 40.0)) } } @@ -190,6 +165,15 @@ class ThemeSettingsAccentColorItemNode: ListViewItemNode, ItemListItemNode { self.scrollNode.view.showsHorizontalScrollIndicator = false } + private func scrollToNode(_ node: ThemeSettingsAccentColorNode, animated: Bool) { + let bounds = self.scrollNode.view.bounds + let frame = node.frame.insetBy(dx: -48.0, dy: 0.0) + + if frame.minX < bounds.minX || frame.maxX > bounds.maxX { + self.scrollNode.view.scrollRectToVisible(frame, animated: animated) + } + } + func asyncLayout() -> (_ item: ThemeSettingsAccentColorItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) { let currentItem = self.item @@ -197,14 +181,13 @@ class ThemeSettingsAccentColorItemNode: ListViewItemNode, ItemListItemNode { var themeUpdated = false if currentItem?.theme !== item.theme { themeUpdated = true - } let contentSize: CGSize let insets: UIEdgeInsets let separatorHeight = UIScreenPixel - contentSize = CGSize(width: params.width, height: 116.0) + contentSize = CGSize(width: params.width, height: 60.0) insets = itemListNeighborsGroupedInsets(neighbors) let layout = ListViewItemNodeLayout(contentSize: contentSize, insets: insets) @@ -230,33 +213,36 @@ class ThemeSettingsAccentColorItemNode: ListViewItemNode, ItemListItemNode { strongSelf.insertSubnode(strongSelf.bottomStripeNode, at: 2) } switch neighbors.top { - case .sameSection(false): - strongSelf.topStripeNode.isHidden = true - default: - strongSelf.topStripeNode.isHidden = false + case .sameSection(false): + strongSelf.topStripeNode.isHidden = true + default: + strongSelf.topStripeNode.isHidden = false } let bottomStripeInset: CGFloat let bottomStripeOffset: CGFloat switch neighbors.bottom { - case .sameSection(false): - bottomStripeInset = params.leftInset + 16.0 - bottomStripeOffset = -separatorHeight - default: - bottomStripeInset = 0.0 - bottomStripeOffset = 0.0 + case .sameSection(false): + bottomStripeInset = params.leftInset + 16.0 + bottomStripeOffset = -separatorHeight + default: + bottomStripeInset = 0.0 + bottomStripeOffset = 0.0 } strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: contentSize.height + min(insets.top, separatorHeight) + min(insets.bottom, separatorHeight))) strongSelf.topStripeNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: layoutSize.width, height: separatorHeight)) strongSelf.bottomStripeNode.frame = CGRect(origin: CGPoint(x: bottomStripeInset, y: contentSize.height + bottomStripeOffset), size: CGSize(width: layoutSize.width - bottomStripeInset, height: separatorHeight)) - strongSelf.scrollNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 2.0), size: CGSize(width: layoutSize.width, height: layoutSize.height)) + strongSelf.scrollNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: layoutSize.width, height: layoutSize.height)) - let nodeInset: CGFloat = 4.0 - let nodeSize = CGSize(width: 80.0, height: 112.0) + let nodeInset: CGFloat = 15.0 + let nodeSize = CGSize(width: 40.0, height: 40.0) var nodeOffset = nodeInset + var updated = false + var selectedNode: ThemeSettingsAccentColorNode? + var i = 0 - for icon in item.colors { + for color in item.colors { let imageNode: ThemeSettingsAccentColorNode if strongSelf.nodes.count > i { imageNode = strongSelf.nodes[i] @@ -264,41 +250,27 @@ class ThemeSettingsAccentColorItemNode: ListViewItemNode, ItemListItemNode { imageNode = ThemeSettingsAccentColorNode() strongSelf.nodes.append(imageNode) strongSelf.scrollNode.addSubnode(imageNode) + updated = true } -// if let image = UIImage(named: icon.imageName, in: Bundle.main, compatibleWith: nil) { -// let selected = icon.name == item.currentIconName -// -// var name = "Icon" -// var bordered = true -// switch icon.name { -// case "Blue": -// name = item.strings.Appearance_AppIconDefault -// case "Black": -// name = item.strings.Appearance_AppIconDefaultX -// case "BlueClassic": -// name = item.strings.Appearance_AppIconClassic -// case "BlackClassic": -// name = item.strings.Appearance_AppIconClassicX -// case "BlueFilled": -// name = item.strings.Appearance_AppIconFilled -// bordered = false -// case "BlackFilled": -// name = item.strings.Appearance_AppIconFilledX -// bordered = false -// case "WhiteFilled": -// name = "⍺ White" -// default: -// break -// } -// -// imageNode.setup(theme: item.theme, icon: image, title: NSAttributedString(string: name, font: textFont, textColor: selected ? item.theme.list.itemAccentColor : item.theme.list.itemPrimaryTextColor, paragraphAlignment: .center), bordered: bordered, selected: selected, action: { -// item.updated(icon.name) -// }) -// } + let accentColor: PresentationThemeAccentColor + let selected = item.currentColor.baseColor == color + if selected { + accentColor = item.currentColor + selectedNode = imageNode + } else { + accentColor = PresentationThemeAccentColor(baseColor: color, value: 0.5) + } - imageNode.frame = CGRect(origin: CGPoint(x: nodeOffset, y: 0.0), size: nodeSize) - nodeOffset += nodeSize.width + 15.0 + imageNode.setup(color: accentColor, selected: selected, action: { [weak self, weak imageNode] in + item.updated(accentColor) + if let imageNode = imageNode { + self?.scrollToNode(imageNode, animated: true) + } + }) + + imageNode.frame = CGRect(origin: CGPoint(x: nodeOffset, y: 10.0), size: nodeSize) + nodeOffset += nodeSize.width + 18.0 i += 1 } @@ -309,6 +281,10 @@ class ThemeSettingsAccentColorItemNode: ListViewItemNode, ItemListItemNode { strongSelf.scrollNode.view.contentSize = contentSize } } + + if updated, let selectedNode = selectedNode { + strongSelf.scrollToNode(selectedNode, animated: false) + } } }) } diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift index ea4044a5f1..5813018150 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsController.swift @@ -9,7 +9,7 @@ import TelegramUIPreferences private final class ThemeSettingsControllerArguments { let context: AccountContext - let selectTheme: (Int32) -> Void + let selectTheme: (PresentationThemeReference) -> Void let selectFontSize: (PresentationFontSize) -> Void let openWallpaperSettings: () -> Void let openAccentColor: (Int32) -> Void @@ -18,7 +18,7 @@ private final class ThemeSettingsControllerArguments { let disableAnimations: (Bool) -> Void let selectAppIcon: (String) -> Void - init(context: AccountContext, selectTheme: @escaping (Int32) -> Void, selectFontSize: @escaping (PresentationFontSize) -> Void, openWallpaperSettings: @escaping () -> Void, openAccentColor: @escaping (Int32) -> Void, openAutoNightTheme: @escaping () -> Void, toggleLargeEmoji: @escaping (Bool) -> Void, disableAnimations: @escaping (Bool) -> Void, selectAppIcon: @escaping (String) -> Void) { + init(context: AccountContext, selectTheme: @escaping (PresentationThemeReference) -> Void, selectFontSize: @escaping (PresentationFontSize) -> Void, openWallpaperSettings: @escaping () -> Void, openAccentColor: @escaping (Int32) -> Void, openAutoNightTheme: @escaping () -> Void, toggleLargeEmoji: @escaping (Bool) -> Void, disableAnimations: @escaping (Bool) -> Void, selectAppIcon: @escaping (String) -> Void) { self.context = context self.selectTheme = selectTheme self.selectFontSize = selectFontSize @@ -62,9 +62,9 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry { case fontSize(PresentationTheme, PresentationFontSize) case chatPreview(PresentationTheme, PresentationTheme, TelegramWallpaper, PresentationFontSize, PresentationStrings, PresentationDateTimeFormat, PresentationPersonNameOrder) case wallpaper(PresentationTheme, String) - case accentColor(PresentationTheme, String, Int32) + case accentColor(PresentationTheme, String, PresentationThemeAccentColor?) case autoNightTheme(PresentationTheme, String, String) - case themeItem(PresentationTheme, PresentationStrings, [PresentationBuiltinThemeReference], PresentationBuiltinThemeReference, UIColor?) + case themeItem(PresentationTheme, PresentationStrings, [PresentationThemeReference], PresentationThemeReference, [Int64: PresentationThemeAccentColor]) case iconHeader(PresentationTheme, String) case iconItem(PresentationTheme, PresentationStrings, [PresentationAppIcon], String?) case otherHeader(PresentationTheme, String) @@ -228,18 +228,28 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry { arguments.openWallpaperSettings() }) case let .accentColor(theme, text, color): - return ItemListDisclosureItem(theme: theme, icon: nil, title: text, label: "", labelStyle: .color(UIColor(rgb: UInt32(bitPattern: color))), sectionId: self.section, style: .blocks, disclosureStyle: .arrow, action: { - arguments.openAccentColor(color) + let colorValue = color?.baseColor.colorValue ?? defaultDayAccentColor + let accentColor = UIColor(rgb: UInt32(bitPattern: colorValue)) + return ItemListDisclosureItem(theme: theme, icon: nil, title: text, label: "", labelStyle: .color(accentColor), sectionId: self.section, style: .blocks, disclosureStyle: .arrow, action: { + arguments.openAccentColor(colorValue) }, tag: ThemeSettingsEntryTag.accentColor) +// return ThemeSettingsAccentColorItem(theme: theme, sectionId: self.section, colors: PresentationThemeBaseColor.allCases, currentColor: color ?? PresentationThemeAccentColor(baseColor: .blue, value: 0.5), updated: { color in +// let _ = updatePresentationThemeSettingsInteractively(accountManager: arguments.context.sharedContext.accountManager, { current in +// var themeSpecificAccentColors = current.themeSpecificAccentColors +// themeSpecificAccentColors[current.theme.index] = color +// return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeSpecificAccentColors: themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) +// }).start() +// }, toggleSlider: { +// }) case let .autoNightTheme(theme, text, value): return ItemListDisclosureItem(theme: theme, icon: nil, title: text, label: value, labelStyle: .text, sectionId: self.section, style: .blocks, disclosureStyle: .arrow, action: { arguments.openAutoNightTheme() }) case let .themeListHeader(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) - case let .themeItem(theme, strings, themes, currentTheme, themeAccentColor): - return ThemeSettingsThemeItem(theme: theme, strings: strings, sectionId: self.section, themes: themes.map { ($0, $0 == .day ? themeAccentColor : nil) }, currentTheme: currentTheme, updated: { theme in - arguments.selectTheme(theme.rawValue) + case let .themeItem(theme, strings, themes, currentTheme, themeSpecificAccentColors): + return ThemeSettingsThemeItem(theme: theme, strings: strings, sectionId: self.section, themes: themes, themeSpecificAccentColors: themeSpecificAccentColors, currentTheme: currentTheme, updated: { theme in + arguments.selectTheme(theme) }) case let .iconHeader(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) @@ -263,16 +273,16 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry { } } -private func themeSettingsControllerEntries(presentationData: PresentationData, theme: PresentationTheme, themeAccentColor: Int32?, autoNightSettings: AutomaticThemeSwitchSetting, strings: PresentationStrings, wallpaper: TelegramWallpaper, fontSize: PresentationFontSize, dateTimeFormat: PresentationDateTimeFormat, largeEmoji: Bool, disableAnimations: Bool, availableAppIcons: [PresentationAppIcon], currentAppIconName: String?) -> [ThemeSettingsControllerEntry] { +private func themeSettingsControllerEntries(presentationData: PresentationData, theme: PresentationTheme, themeReference: PresentationThemeReference, themeSpecificAccentColors: [Int64: PresentationThemeAccentColor], autoNightSettings: AutomaticThemeSwitchSetting, strings: PresentationStrings, wallpaper: TelegramWallpaper, fontSize: PresentationFontSize, dateTimeFormat: PresentationDateTimeFormat, largeEmoji: Bool, disableAnimations: Bool, availableAppIcons: [PresentationAppIcon], currentAppIconName: String?) -> [ThemeSettingsControllerEntry] { var entries: [ThemeSettingsControllerEntry] = [] entries.append(.themeListHeader(presentationData.theme, strings.Appearance_ColorTheme.uppercased())) entries.append(.chatPreview(presentationData.theme, theme, wallpaper, fontSize, presentationData.strings, dateTimeFormat, presentationData.nameDisplayOrder)) - if case let .builtin(theme) = theme.name { - entries.append(.themeItem(presentationData.theme, presentationData.strings, [.dayClassic, .day, .nightAccent, .nightGrayscale], theme.reference, themeAccentColor != nil ? UIColor(rgb: UInt32(bitPattern: themeAccentColor!)) : nil)) + if case .builtin = themeReference { + entries.append(.themeItem(presentationData.theme, presentationData.strings, [.builtin(.dayClassic), .builtin(.day), .builtin(.nightAccent), .builtin(.nightGrayscale)], themeReference, themeSpecificAccentColors)) } if theme.name == .builtin(.day) { - entries.append(.accentColor(presentationData.theme, strings.Appearance_AccentColor, themeAccentColor ?? defaultDayAccentColor)) + entries.append(.accentColor(presentationData.theme, strings.Appearance_AccentColor, themeSpecificAccentColors[themeReference.index])) } entries.append(.wallpaper(presentationData.theme, strings.Settings_ChatBackground)) @@ -306,8 +316,6 @@ private func themeSettingsControllerEntries(presentationData: PresentationData, return entries } -private let themeColors = [UIColor(rgb: 0x007aff), UIColor(rgb: 0x70bb23), UIColor(rgb: 0xeb6ca4), UIColor(rgb: 0xf08200), UIColor(rgb: 0x9472ee), UIColor(rgb: 0xd33213), UIColor(rgb: 0xedb400), UIColor(rgb: 0x6d839e), UIColor(rgb: 0x000000)] - public func themeSettingsController(context: AccountContext, focusOnItemTag: ThemeSettingsEntryTag? = nil) -> ViewController { var pushControllerImpl: ((ViewController) -> Void)? var presentControllerImpl: ((ViewController) -> Void)? @@ -318,19 +326,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The let currentAppIconName = ValuePromise() currentAppIconName.set(context.sharedContext.applicationBindings.getAlternateIconName() ?? "Blue") - let arguments = ThemeSettingsControllerArguments(context: context, selectTheme: { index in - let theme: PresentationThemeReference - switch index { - case 1: - theme = .builtin(.nightGrayscale) - case 2: - theme = .builtin(.day) - case 3: - theme = .builtin(.nightAccent) - default: - theme = .builtin(.dayClassic) - } - + let arguments = ThemeSettingsControllerArguments(context: context, selectTheme: { theme in let _ = (context.sharedContext.accountManager.transaction { transaction -> Void in transaction.updateSharedData(ApplicationSpecificSharedDataKeys.presentationThemeSettings, { entry in let current: PresentationThemeSettings @@ -345,51 +341,78 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The if let themeSpecificWallpaper = current.themeSpecificChatWallpapers[theme.index] { wallpaper = themeSpecificWallpaper } else { - switch index { - case 1: - wallpaper = .color(0x000000) - case 2: - wallpaper = .color(0xffffff) - case 3: - wallpaper = .color(0x18222d) - default: - wallpaper = .builtin(WallpaperSettings()) + if case let .builtin(theme) = theme { + switch theme { + case .day: + wallpaper = .color(0xffffff) + case .dayClassic: + wallpaper = .builtin(WallpaperSettings()) + case .nightAccent: + wallpaper = .color(0x18222d) + case .nightGrayscale: + wallpaper = .color(0x000000) + } + } else { + wallpaper = .builtin(WallpaperSettings()) } } - return PresentationThemeSettings(chatWallpaper: wallpaper, theme: theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: wallpaper, theme: theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) }) }).start() }, selectFontSize: { size in let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in - return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: size, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: size, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) }).start() }, openWallpaperSettings: { pushControllerImpl?(ThemeGridController(context: context)) }, openAccentColor: { color in presentControllerImpl?(ThemeAccentColorActionSheet(context: context, currentValue: color, applyValue: { color in + let themeAccentColor: PresentationThemeBaseColor + switch color { + case 0xf83b4c: + themeAccentColor = .red + case 0xff7519: + themeAccentColor = .orange + case 0xeba239: + themeAccentColor = .yellow + case 0x29b327: + themeAccentColor = .green + case 0x00c2ed: + themeAccentColor = .cyan + case 0x007ee5: + themeAccentColor = .blue + case 0x7748ff: + themeAccentColor = .purple + case 0xff5da2: + themeAccentColor = .pink + default: + themeAccentColor = .blue + } + let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in - return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeAccentColor: color, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + var themeSpecificAccentColors = current.themeSpecificAccentColors + themeSpecificAccentColors[current.theme.index] = PresentationThemeAccentColor(baseColor: themeAccentColor, value: 0.5) + + return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeSpecificAccentColors: themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) }).start() })) }, openAutoNightTheme: { pushControllerImpl?(themeAutoNightSettingsController(context: context)) }, toggleLargeEmoji: { largeEmoji in let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in - return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: largeEmoji, disableAnimations: current.disableAnimations) }).start() }, disableAnimations: { disabled in let _ = updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in - return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: disabled) + return PresentationThemeSettings(chatWallpaper: current.chatWallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: current.themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: disabled) }).start() }, selectAppIcon: { name in currentAppIconName.set(name) context.sharedContext.applicationBindings.requestSetAlternateIconName(name, { _ in }) }) - - let previousTheme = Atomic(value: nil) - + let signal = combineLatest(context.sharedContext.presentationData |> deliverOnMainQueue, context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationThemeSettings]) |> deliverOnMainQueue, availableAppIcons, currentAppIconName.get() |> deliverOnMainQueue) |> map { presentationData, sharedData, availableAppIcons, currentAppIconName -> (ItemListControllerState, (ItemListNodeState, ThemeSettingsControllerEntry.ItemGenerationArguments)) in let theme: PresentationTheme @@ -410,7 +433,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The case .nightAccent: theme = defaultDarkAccentPresentationTheme case .day: - theme = makeDefaultDayPresentationTheme(accentColor: settings.themeAccentColor ?? defaultDayAccentColor, serviceBackgroundColor: defaultServiceBackgroundColor) + theme = makeDefaultDayPresentationTheme(accentColor: settings.themeSpecificAccentColors[settings.theme.index]?.color ?? defaultDayAccentColor, serviceBackgroundColor: defaultServiceBackgroundColor) } } wallpaper = settings.chatWallpaper @@ -421,7 +444,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The disableAnimations = settings.disableAnimations let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.Appearance_Title), leftNavigationButton: nil, rightNavigationButton: nil, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) - let listState = ItemListNodeState(entries: themeSettingsControllerEntries(presentationData: presentationData, theme: theme, themeAccentColor: settings.themeAccentColor, autoNightSettings: settings.automaticThemeSwitchSetting, strings: presentationData.strings, wallpaper: wallpaper, fontSize: fontSize, dateTimeFormat: dateTimeFormat, largeEmoji: largeEmoji, disableAnimations: disableAnimations, availableAppIcons: availableAppIcons, currentAppIconName: currentAppIconName), style: .blocks, ensureVisibleItemTag: focusOnItemTag, animateChanges: false) + let listState = ItemListNodeState(entries: themeSettingsControllerEntries(presentationData: presentationData, theme: theme, themeReference: settings.theme, themeSpecificAccentColors: settings.themeSpecificAccentColors, autoNightSettings: settings.automaticThemeSwitchSetting, strings: presentationData.strings, wallpaper: wallpaper, fontSize: fontSize, dateTimeFormat: dateTimeFormat, largeEmoji: largeEmoji, disableAnimations: disableAnimations, availableAppIcons: availableAppIcons, currentAppIconName: currentAppIconName), style: .blocks, ensureVisibleItemTag: focusOnItemTag, animateChanges: false) return (controllerState, (listState, arguments)) } diff --git a/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift b/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift index 1d13c1f872..1804314760 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeSettingsThemeItem.swift @@ -37,8 +37,11 @@ private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selec })?.stretchableImage(withLeftCapWidth: 15, topCapHeight: 15) } -private func generateThemeIconImage(theme: PresentationBuiltinThemeReference, accentColor: UIColor?) -> UIImage { +private func generateThemeIconImage(theme: PresentationThemeReference, accentColor: Int32?) -> UIImage { return generateImage(CGSize(width: 98.0, height: 62.0), rotatedContext: { size, context in + guard case let .builtin(theme) = theme else { + return + } let bounds = CGRect(origin: CGPoint(), size: size) let background: UIColor @@ -53,7 +56,7 @@ private func generateThemeIconImage(theme: PresentationBuiltinThemeReference, ac background = .white incomingBubble = UIColor(rgb: 0xd5dde6) if let accentColor = accentColor { - outgoingBubble = accentColor + outgoingBubble = UIColor(rgb: UInt32(bitPattern: accentColor)) } else { outgoingBubble = UIColor(rgb: 0x007aff) } @@ -66,7 +69,7 @@ private func generateThemeIconImage(theme: PresentationBuiltinThemeReference, ac incomingBubble = UIColor(rgb: 0x32475e) outgoingBubble = UIColor(rgb: 0x3d6a97) } - + context.setFillColor(background.cgColor) context.fill(bounds) @@ -91,15 +94,17 @@ class ThemeSettingsThemeItem: ListViewItem, ItemListItem { let theme: PresentationTheme let strings: PresentationStrings - let themes: [(PresentationBuiltinThemeReference, UIColor?)] - let currentTheme: PresentationBuiltinThemeReference - let updated: (PresentationBuiltinThemeReference) -> Void + let themes: [PresentationThemeReference] + let themeSpecificAccentColors: [Int64: PresentationThemeAccentColor] + let currentTheme: PresentationThemeReference + let updated: (PresentationThemeReference) -> Void let tag: ItemListItemTag? - init(theme: PresentationTheme, strings: PresentationStrings, sectionId: ItemListSectionId, themes: [(PresentationBuiltinThemeReference, UIColor?)], currentTheme: PresentationBuiltinThemeReference, updated: @escaping (PresentationBuiltinThemeReference) -> Void, tag: ItemListItemTag? = nil) { + init(theme: PresentationTheme, strings: PresentationStrings, sectionId: ItemListSectionId, themes: [PresentationThemeReference], themeSpecificAccentColors: [Int64: PresentationThemeAccentColor], currentTheme: PresentationThemeReference, updated: @escaping (PresentationThemeReference) -> Void, tag: ItemListItemTag? = nil) { self.theme = theme self.strings = strings self.themes = themes + self.themeSpecificAccentColors = themeSpecificAccentColors self.currentTheme = currentTheme self.updated = updated self.tag = tag @@ -312,7 +317,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode { var selectedNode: ThemeSettingsThemeItemIconNode? var i = 0 - for (theme, accentColor) in item.themes { + for theme in item.themes { let imageNode: ThemeSettingsThemeItemIconNode if strongSelf.nodes.count > i { imageNode = strongSelf.nodes[i] @@ -328,27 +333,34 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode { selectedNode = imageNode } - let name: String - switch theme { - case .dayClassic: - name = item.strings.Appearance_ThemeCarouselClassic - case .day: - name = item.strings.Appearance_ThemeCarouselDay - case .nightGrayscale: - name = item.strings.Appearance_ThemeCarouselNight - case .nightAccent: - name = item.strings.Appearance_ThemeCarouselNightBlue + let name: String? + if case let .builtin(theme) = theme { + switch theme { + case .dayClassic: + name = item.strings.Appearance_ThemeCarouselClassic + case .day: + name = item.strings.Appearance_ThemeCarouselDay + case .nightGrayscale: + name = item.strings.Appearance_ThemeCarouselNight + case .nightAccent: + name = item.strings.Appearance_ThemeCarouselNightBlue + } + } else { + name = nil } - imageNode.setup(theme: item.theme, icon: generateThemeIconImage(theme: theme, accentColor: accentColor), title: NSAttributedString(string: name, font: textFont, textColor: selected ? item.theme.list.itemAccentColor : item.theme.list.itemPrimaryTextColor, paragraphAlignment: .center), bordered: true, selected: selected, action: { [weak self, weak imageNode] in - item.updated(theme) - if let imageNode = imageNode { - self?.scrollToNode(imageNode, animated: true) - } - }) - imageNode.frame = CGRect(origin: CGPoint(x: nodeOffset, y: 0.0), size: nodeSize) - nodeOffset += nodeSize.width + 2.0 + if let name = name { + imageNode.setup(theme: item.theme, icon: generateThemeIconImage(theme: theme, accentColor: item.themeSpecificAccentColors[theme.index]?.color), title: NSAttributedString(string: name, font: textFont, textColor: selected ? item.theme.list.itemAccentColor : item.theme.list.itemPrimaryTextColor, paragraphAlignment: .center), bordered: true, selected: selected, action: { [weak self, weak imageNode] in + item.updated(theme) + if let imageNode = imageNode { + self?.scrollToNode(imageNode, animated: true) + } + }) + + imageNode.frame = CGRect(origin: CGPoint(x: nodeOffset, y: 0.0), size: nodeSize) + nodeOffset += nodeSize.width + 2.0 + } i += 1 } diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift b/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift index ade8118541..d026577e9b 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperGalleryController.swift @@ -380,7 +380,7 @@ class WallpaperGalleryController: ViewController { let _ = (updatePresentationThemeSettingsInteractively(accountManager: strongSelf.context.sharedContext.accountManager, { current in var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers themeSpecificChatWallpapers[current.theme.index] = wallpaper - return PresentationThemeSettings(chatWallpaper: wallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: wallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) }) |> deliverOnMainQueue).start(completed: { self?.dismiss(forceAway: true) }) diff --git a/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift b/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift index f6f1621572..4677124776 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperUploadManager.swift @@ -139,7 +139,7 @@ final class WallpaperUploadManager { var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers themeSpecificChatWallpapers[current.theme.index] = updatedWallpaper - return PresentationThemeSettings(chatWallpaper: updatedWallpaper, theme: current.theme, themeAccentColor: current.themeAccentColor, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) + return PresentationThemeSettings(chatWallpaper: updatedWallpaper, theme: current.theme, themeSpecificAccentColors: current.themeSpecificAccentColors, themeSpecificChatWallpapers: themeSpecificChatWallpapers, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, largeEmoji: current.largeEmoji, disableAnimations: current.disableAnimations) })).start() } } diff --git a/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift b/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift index 88cf1c3af1..407ec6df35 100644 --- a/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift @@ -164,11 +164,97 @@ public struct AutomaticThemeSwitchSetting: PostboxCoding, Equatable { } } +public enum PresentationThemeBaseColor: Int32, CaseIterable { + case blue + case cyan + case green + case pink + case orange + case purple + case red + case yellow + case gray + case black + + public var colorValue: Int32 { + switch self { + case .blue: + return 0x007ee5 + case .cyan: + return 0x00c2ed + case .green: + return 0x29b327 + case .pink: + return 0xff5da2 + case .orange: + return 0xff7519 + case .purple: + return 0x7748ff + case .red: + return 0xf83b4c + case .yellow: + return 0xeba239 + case .gray: + return 0x6d839e + case .black: + return 0x000000 + } + +// switch self { +// case .blue: +// return 0x007aff +// case .cyan: +// return 0x00c2ed +// case .green: +// return 0x70bb23 +// case .pink: +// return 0xeb6ca4 +// case .orange: +// return 0xf08200 +// case .purple: +// return 0x9472ee +// case .red: +// return 0xd33213 +// case .yellow: +// return 0xedb400 +// case .gray: +// return 0x6d839e +// case .black: +// return 0x000000 +// } + } +} + +public struct PresentationThemeAccentColor: PostboxCoding, Equatable { + public var baseColor: PresentationThemeBaseColor + public var value: CGFloat + + public init(baseColor: PresentationThemeBaseColor, value: CGFloat) { + self.baseColor = baseColor + self.value = value + } + + public init(decoder: PostboxDecoder) { + self.baseColor = PresentationThemeBaseColor(rawValue: decoder.decodeInt32ForKey("b", orElse: 0)) ?? .blue + self.value = CGFloat(decoder.decodeDoubleForKey("v", orElse: 0.5)) + } + + public func encode(_ encoder: PostboxEncoder) { + encoder.encodeInt32(self.baseColor.rawValue, forKey: "b") + encoder.encodeDouble(Double(self.value), forKey: "v") + } + + public var color: Int32 { + return self.baseColor.colorValue + } +} + public struct PresentationThemeSettings: PreferencesEntry { public var chatWallpaper: TelegramWallpaper public var theme: PresentationThemeReference - public var themeAccentColor: Int32? - public var themeSpecificChatWallpapers: Dictionary +// public var themeAccentColor: Int32? + public var themeSpecificAccentColors: [Int64: PresentationThemeAccentColor] + public var themeSpecificChatWallpapers: [Int64: TelegramWallpaper] public var fontSize: PresentationFontSize public var automaticThemeSwitchSetting: AutomaticThemeSwitchSetting public var largeEmoji: Bool @@ -198,13 +284,13 @@ public struct PresentationThemeSettings: PreferencesEntry { } public static var defaultSettings: PresentationThemeSettings { - return PresentationThemeSettings(chatWallpaper: .builtin(WallpaperSettings()), theme: .builtin(.dayClassic), themeAccentColor: nil, themeSpecificChatWallpapers: [:], fontSize: .regular, automaticThemeSwitchSetting: AutomaticThemeSwitchSetting(trigger: .none, theme: .nightAccent), largeEmoji: true, disableAnimations: true) + return PresentationThemeSettings(chatWallpaper: .builtin(WallpaperSettings()), theme: .builtin(.dayClassic), themeSpecificAccentColors: [:], themeSpecificChatWallpapers: [:], fontSize: .regular, automaticThemeSwitchSetting: AutomaticThemeSwitchSetting(trigger: .none, theme: .nightAccent), largeEmoji: true, disableAnimations: true) } - public init(chatWallpaper: TelegramWallpaper, theme: PresentationThemeReference, themeAccentColor: Int32?, themeSpecificChatWallpapers: Dictionary, fontSize: PresentationFontSize, automaticThemeSwitchSetting: AutomaticThemeSwitchSetting, largeEmoji: Bool, disableAnimations: Bool) { + public init(chatWallpaper: TelegramWallpaper, theme: PresentationThemeReference, themeSpecificAccentColors: [Int64: PresentationThemeAccentColor], themeSpecificChatWallpapers: [Int64: TelegramWallpaper], fontSize: PresentationFontSize, automaticThemeSwitchSetting: AutomaticThemeSwitchSetting, largeEmoji: Bool, disableAnimations: Bool) { self.chatWallpaper = chatWallpaper self.theme = theme - self.themeAccentColor = themeAccentColor + self.themeSpecificAccentColors = themeSpecificAccentColors self.themeSpecificChatWallpapers = themeSpecificChatWallpapers self.fontSize = fontSize self.automaticThemeSwitchSetting = automaticThemeSwitchSetting @@ -215,7 +301,14 @@ public struct PresentationThemeSettings: PreferencesEntry { public init(decoder: PostboxDecoder) { self.chatWallpaper = (decoder.decodeObjectForKey("w", decoder: { TelegramWallpaper(decoder: $0) }) as? TelegramWallpaper) ?? .builtin(WallpaperSettings()) self.theme = decoder.decodeObjectForKey("t", decoder: { PresentationThemeReference(decoder: $0) }) as! PresentationThemeReference - self.themeAccentColor = decoder.decodeOptionalInt32ForKey("themeAccentColor") + //self.themeAccentColor = decoder.decodeOptionalInt32ForKey("themeAccentColor") + + self.themeSpecificAccentColors = decoder.decodeObjectDictionaryForKey("themeSpecificAccentColors", keyDecoder: { decoder in + return decoder.decodeInt64ForKey("k", orElse: 0) + }, valueDecoder: { decoder in + return PresentationThemeAccentColor(decoder: decoder) + }) + self.themeSpecificChatWallpapers = decoder.decodeObjectDictionaryForKey("themeSpecificChatWallpapers", keyDecoder: { decoder in return decoder.decodeInt64ForKey("k", orElse: 0) }, valueDecoder: { decoder in @@ -230,11 +323,14 @@ public struct PresentationThemeSettings: PreferencesEntry { public func encode(_ encoder: PostboxEncoder) { encoder.encodeObject(self.chatWallpaper, forKey: "w") encoder.encodeObject(self.theme, forKey: "t") - if let themeAccentColor = self.themeAccentColor { - encoder.encodeInt32(themeAccentColor, forKey: "themeAccentColor") - } else { - encoder.encodeNil(forKey: "themeAccentColor") - } +// if let themeAccentColor = self.themeAccentColor { +// encoder.encodeInt32(themeAccentColor, forKey: "themeAccentColor") +// } else { +// encoder.encodeNil(forKey: "themeAccentColor") +// } + encoder.encodeObjectDictionary(self.themeSpecificAccentColors, forKey: "themeSpecificAccentColors", keyEncoder: { key, encoder in + encoder.encodeInt64(key, forKey: "k") + }) encoder.encodeObjectDictionary(self.themeSpecificChatWallpapers, forKey: "themeSpecificChatWallpapers", keyEncoder: { key, encoder in encoder.encodeInt64(key, forKey: "k") }) @@ -253,7 +349,7 @@ public struct PresentationThemeSettings: PreferencesEntry { } public static func ==(lhs: PresentationThemeSettings, rhs: PresentationThemeSettings) -> Bool { - return lhs.chatWallpaper == rhs.chatWallpaper && lhs.theme == rhs.theme && lhs.themeAccentColor == rhs.themeAccentColor && lhs.themeSpecificChatWallpapers == rhs.themeSpecificChatWallpapers && lhs.fontSize == rhs.fontSize && lhs.automaticThemeSwitchSetting == rhs.automaticThemeSwitchSetting && lhs.largeEmoji == rhs.largeEmoji && lhs.disableAnimations == rhs.disableAnimations + return lhs.chatWallpaper == rhs.chatWallpaper && lhs.theme == rhs.theme && lhs.themeSpecificAccentColors == rhs.themeSpecificAccentColors && lhs.themeSpecificChatWallpapers == rhs.themeSpecificChatWallpapers && lhs.fontSize == rhs.fontSize && lhs.automaticThemeSwitchSetting == rhs.automaticThemeSwitchSetting && lhs.largeEmoji == rhs.largeEmoji && lhs.disableAnimations == rhs.disableAnimations } } From dc46a8e7865272288a42e0a41fd6d875502f2e44 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:56:15 +0200 Subject: [PATCH 06/16] Added clear buttons for name/username/phone input fields --- .../DefaultDarkAccentPresentationTheme.swift | 3 +- .../DefaultDarkPresentationTheme.swift | 3 +- .../Sources/DefaultPresentationTheme.swift | 3 +- .../Sources/PresentationTheme.swift | 8 +- .../ChannelVisibilityController.swift | 2 +- .../ChatMessageBubbleItemNode.swift | 2 +- .../TelegramUI/ChatPresentationData.swift | 7 +- .../ItemListAvatarAndNameItem.swift | 143 +++++++++++++++++- .../PresentationResourcesItemList.swift | 2 +- .../ProxyServerSettingsController.swift | 2 +- .../TelegramUI/SinglePhoneInputNode.swift | 10 ++ .../TelegramUI/UserInfoEditingPhoneItem.swift | 40 +++++ .../TelegramUI/UsernameSetupController.swift | 2 +- 13 files changed, 210 insertions(+), 17 deletions(-) diff --git a/submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift index ec501447e5..598099f46d 100644 --- a/submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDarkAccentPresentationTheme.swift @@ -118,7 +118,8 @@ private let list = PresentationThemeList( ), mediaPlaceholderColor: UIColor(rgb: 0x1e2c3a), scrollIndicatorColor: UIColor(white: 1.0, alpha: 0.3), - pageIndicatorInactiveColor: UIColor(rgb: 0xDBF5FF, alpha: 0.4) + pageIndicatorInactiveColor: UIColor(rgb: 0xDBF5FF, alpha: 0.4), + inputClearButtonColor: UIColor(rgb: 0x8B9197) ) private let chatList = PresentationThemeChatList( diff --git a/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift index 33f1543c78..e5fe40e107 100644 --- a/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift @@ -116,7 +116,8 @@ private let list = PresentationThemeList( ), mediaPlaceholderColor: UIColor(rgb: 0x1c1c1d), scrollIndicatorColor: UIColor(white: 1.0, alpha: 0.3), - pageIndicatorInactiveColor: UIColor(white: 1.0, alpha: 0.3) + pageIndicatorInactiveColor: UIColor(white: 1.0, alpha: 0.3), + inputClearButtonColor: UIColor(rgb: 0x8B9197) ) private let chatList = PresentationThemeChatList( diff --git a/submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift index 68f6c6bfbe..f711b1764d 100644 --- a/submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultPresentationTheme.swift @@ -116,7 +116,8 @@ private func makeDefaultPresentationTheme(accentColor: UIColor, serviceBackgroun ), mediaPlaceholderColor: UIColor(rgb: 0xe4e4e4), scrollIndicatorColor: UIColor(white: 0.0, alpha: 0.3), - pageIndicatorInactiveColor: UIColor(rgb: 0xe3e3e7) + pageIndicatorInactiveColor: UIColor(rgb: 0xe3e3e7), + inputClearButtonColor: UIColor(rgb: 0xcccccc) ) let chatList = PresentationThemeChatList( diff --git a/submodules/TelegramPresentationData/Sources/PresentationTheme.swift b/submodules/TelegramPresentationData/Sources/PresentationTheme.swift index f931624977..cb9955f7b6 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationTheme.swift @@ -331,8 +331,9 @@ public final class PresentationThemeList { public let mediaPlaceholderColor: UIColor public let scrollIndicatorColor: UIColor public let pageIndicatorInactiveColor: UIColor + public let inputClearButtonColor: UIColor - public init(blocksBackgroundColor: UIColor, plainBackgroundColor: UIColor, itemPrimaryTextColor: UIColor, itemSecondaryTextColor: UIColor, itemDisabledTextColor: UIColor, itemAccentColor: UIColor, itemHighlightedColor: UIColor, itemDestructiveColor: UIColor, itemPlaceholderTextColor: UIColor, itemBlocksBackgroundColor: UIColor, itemHighlightedBackgroundColor: UIColor, itemBlocksSeparatorColor: UIColor, itemPlainSeparatorColor: UIColor, disclosureArrowColor: UIColor, sectionHeaderTextColor: UIColor, freeTextColor: UIColor, freeTextErrorColor: UIColor, freeTextSuccessColor: UIColor, freeMonoIcon: UIColor, itemSwitchColors: PresentationThemeSwitch, itemDisclosureActions: PresentationThemeItemDisclosureActions, itemCheckColors: PresentationThemeCheck, controlSecondaryColor: UIColor, freeInputField: PresentationInputFieldTheme, mediaPlaceholderColor: UIColor, scrollIndicatorColor: UIColor, pageIndicatorInactiveColor: UIColor) { + public init(blocksBackgroundColor: UIColor, plainBackgroundColor: UIColor, itemPrimaryTextColor: UIColor, itemSecondaryTextColor: UIColor, itemDisabledTextColor: UIColor, itemAccentColor: UIColor, itemHighlightedColor: UIColor, itemDestructiveColor: UIColor, itemPlaceholderTextColor: UIColor, itemBlocksBackgroundColor: UIColor, itemHighlightedBackgroundColor: UIColor, itemBlocksSeparatorColor: UIColor, itemPlainSeparatorColor: UIColor, disclosureArrowColor: UIColor, sectionHeaderTextColor: UIColor, freeTextColor: UIColor, freeTextErrorColor: UIColor, freeTextSuccessColor: UIColor, freeMonoIcon: UIColor, itemSwitchColors: PresentationThemeSwitch, itemDisclosureActions: PresentationThemeItemDisclosureActions, itemCheckColors: PresentationThemeCheck, controlSecondaryColor: UIColor, freeInputField: PresentationInputFieldTheme, mediaPlaceholderColor: UIColor, scrollIndicatorColor: UIColor, pageIndicatorInactiveColor: UIColor, inputClearButtonColor: UIColor) { self.blocksBackgroundColor = blocksBackgroundColor self.plainBackgroundColor = plainBackgroundColor self.itemPrimaryTextColor = itemPrimaryTextColor @@ -360,6 +361,7 @@ public final class PresentationThemeList { self.mediaPlaceholderColor = mediaPlaceholderColor self.scrollIndicatorColor = scrollIndicatorColor self.pageIndicatorInactiveColor = pageIndicatorInactiveColor + self.inputClearButtonColor = inputClearButtonColor } } @@ -500,7 +502,7 @@ public func bubbleColorComponents(theme: PresentationTheme, incoming: Bool, wall public func bubbleVariableColor(variableColor: PresentationThemeVariableColor, wallpaper: TelegramWallpaper) -> UIColor { switch wallpaper { - case .builtin, .color(0xffffff): + case .color(0xffffff): return variableColor.withoutWallpaper default: return variableColor.withWallpaper @@ -708,7 +710,7 @@ public func serviceMessageColorComponents(theme: PresentationTheme, wallpaper: T public func serviceMessageColorComponents(chatTheme: PresentationThemeChat, wallpaper: TelegramWallpaper) -> PresentationThemeServiceMessageColorComponents { switch wallpaper { - case .builtin, .color(0xffffff): + case .color(0xffffff): return chatTheme.serviceMessage.components.withDefaultWallpaper default: return chatTheme.serviceMessage.components.withCustomWallpaper diff --git a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift index 02e771e0af..753c31f8df 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift @@ -280,7 +280,7 @@ private enum ChannelVisibilityEntry: ItemListNodeEntry { } }, tag: ChannelVisibilityEntryTag.privateLink) case let .editablePublicLink(theme, placeholder, currentText): - return ItemListSingleLineInputItem(theme: theme, title: NSAttributedString(string: "t.me/", textColor: theme.list.itemPrimaryTextColor), text: currentText, placeholder: placeholder, tag: ChannelVisibilityEntryTag.publicLink, sectionId: self.section, textUpdated: { updatedText in + return ItemListSingleLineInputItem(theme: theme, title: NSAttributedString(string: "t.me/", textColor: theme.list.itemPrimaryTextColor), text: currentText, placeholder: placeholder, type: .regular(capitalization: false, autocorrection: false), clearButton: true, tag: ChannelVisibilityEntryTag.publicLink, sectionId: self.section, textUpdated: { updatedText in arguments.updatePublicLinkText(currentText, updatedText) }, receivedFocus: { arguments.scrollToPublicLinkText() diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift index 0f6374c802..faf31a4887 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift @@ -1849,7 +1849,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView { if item.effectiveAuthorId?.namespace == Namespaces.Peer.Empty { item.controllerInteraction.displayMessageTooltip(item.content.firstMessage.id, item.presentationData.strings.Conversation_ForwardAuthorHiddenTooltip, self, avatarNode.frame) } else { - if let channel = item.content.firstMessage.forwardInfo?.author as? TelegramChannel, channel.username == nil { + if item.message.id.peerId == item.context.account.peerId, let channel = item.content.firstMessage.forwardInfo?.author as? TelegramChannel, channel.username == nil { if case .member = channel.participationStatus { } else { item.controllerInteraction.displayMessageTooltip(item.message.id, item.presentationData.strings.Conversation_PrivateChannelTooltip, self, avatarNode.frame) diff --git a/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift b/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift index 9852172a21..9971681d4e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift @@ -1,5 +1,6 @@ import Foundation import UIKit +import Display import TelegramCore import TelegramPresentationData import TelegramUIPreferences @@ -28,7 +29,7 @@ extension PresentationFontSize { extension TelegramWallpaper { var isEmpty: Bool { switch self { - case .builtin, .image: + case .image: return false case let .file(file): if file.isPattern, file.settings.color == 0xffffff { @@ -38,6 +39,8 @@ extension TelegramWallpaper { } case let .color(color): return color == 0xffffff + default: + return false } } var isBuiltin: Bool { @@ -79,6 +82,7 @@ public final class ChatPresentationData { let messageEmojiFont3: UIFont let messageBoldFont: UIFont let messageItalicFont: UIFont + let messageBoldItalicFont: UIFont let messageFixedFont: UIFont init(theme: ChatPresentationThemeData, fontSize: PresentationFontSize, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool, largeEmoji: Bool) { @@ -97,6 +101,7 @@ public final class ChatPresentationData { self.messageEmojiFont3 = UIFont.systemFont(ofSize: 24.0) self.messageBoldFont = UIFont.boldSystemFont(ofSize: baseFontSize) self.messageItalicFont = UIFont.italicSystemFont(ofSize: baseFontSize) + self.messageBoldItalicFont = Font.semiboldItalic(baseFontSize) self.messageFixedFont = UIFont(name: "Menlo-Regular", size: baseFontSize - 1.0) ?? UIFont.systemFont(ofSize: baseFontSize) } } diff --git a/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift b/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift index f265a1e277..ecfc4dacee 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListAvatarAndNameItem.swift @@ -9,6 +9,10 @@ import TelegramPresentationData private let updatingAvatarOverlayImage = generateFilledCircleImage(diameter: 66.0, color: UIColor(white: 0.0, alpha: 0.4), backgroundColor: nil) +private func generateClearIcon(color: UIColor) -> UIImage? { + return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) +} + enum ItemListAvatarAndNameInfoItemTitleType { case group case channel @@ -164,6 +168,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem { let sectionId: ItemListSectionId let style: ItemListAvatarAndNameInfoItemStyle let editingNameUpdated: (ItemListAvatarAndNameInfoItemName) -> Void + let editingNameCompleted: () -> Void let avatarTapped: () -> Void let context: ItemListAvatarAndNameInfoItemContext? let updatingImage: ItemListAvatarAndNameInfoItemUpdatingAvatar? @@ -174,7 +179,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem { let selectable: Bool - init(account: Account, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, mode: ItemListAvatarAndNameInfoItemMode, peer: Peer?, presence: PeerPresence?, label: String? = nil, cachedData: CachedPeerData?, state: ItemListAvatarAndNameInfoItemState, sectionId: ItemListSectionId, style: ItemListAvatarAndNameInfoItemStyle, editingNameUpdated: @escaping (ItemListAvatarAndNameInfoItemName) -> Void, avatarTapped: @escaping () -> Void, context: ItemListAvatarAndNameInfoItemContext? = nil, updatingImage: ItemListAvatarAndNameInfoItemUpdatingAvatar? = nil, call: (() -> Void)? = nil, action: (() -> Void)? = nil, longTapAction: (() -> Void)? = nil, tag: ItemListItemTag? = nil) { + init(account: Account, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, mode: ItemListAvatarAndNameInfoItemMode, peer: Peer?, presence: PeerPresence?, label: String? = nil, cachedData: CachedPeerData?, state: ItemListAvatarAndNameInfoItemState, sectionId: ItemListSectionId, style: ItemListAvatarAndNameInfoItemStyle, editingNameUpdated: @escaping (ItemListAvatarAndNameInfoItemName) -> Void, editingNameCompleted: @escaping () -> Void = {}, avatarTapped: @escaping () -> Void, context: ItemListAvatarAndNameInfoItemContext? = nil, updatingImage: ItemListAvatarAndNameInfoItemUpdatingAvatar? = nil, call: (() -> Void)? = nil, action: (() -> Void)? = nil, longTapAction: (() -> Void)? = nil, tag: ItemListItemTag? = nil) { self.account = account self.theme = theme self.strings = strings @@ -188,6 +193,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem { self.sectionId = sectionId self.style = style self.editingNameUpdated = editingNameUpdated + self.editingNameCompleted = editingNameCompleted self.avatarTapped = avatarTapped self.context = context self.updatingImage = updatingImage @@ -248,7 +254,7 @@ private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 28.0)! private let nameFont = Font.medium(19.0) private let statusFont = Font.regular(15.0) -class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, ItemListItemFocusableNode { +class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, ItemListItemFocusableNode, UITextFieldDelegate { private let backgroundNode: ASDisplayNode private let highlightedBackgroundNode: ASDisplayNode private let topStripeNode: ASDisplayNode @@ -270,6 +276,9 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite private var inputFirstField: UITextField? private var inputSecondField: UITextField? + private var inputFirstClearButton: HighlightableButtonNode? + private var inputSecondClearButton: HighlightableButtonNode? + private var item: ItemListAvatarAndNameInfoItem? private var layoutWidthAndNeighbors: (width: ListViewItemLayoutParams, neighbors: ItemListNeighbors)? private var peerPresenceManager: PeerPresenceStatusManager? @@ -547,6 +556,9 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite strongSelf.inputSeparator?.backgroundColor = itemSeparatorColor strongSelf.callButton.setImage(PresentationResourcesChat.chatInfoCallButtonImage(item.theme), for: []) + strongSelf.inputFirstClearButton?.setImage(generateClearIcon(color: item.theme.list.inputClearButtonColor), for: []) + strongSelf.inputSecondClearButton?.setImage(generateClearIcon(color: item.theme.list.inputClearButtonColor), for: []) + updatedArrowImage = PresentationResourcesItemList.disclosureArrowImage(item.theme) } @@ -708,6 +720,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite if strongSelf.inputFirstField == nil { let inputFirstField = TextFieldNodeView() + inputFirstField.delegate = self inputFirstField.font = Font.regular(17.0) inputFirstField.autocorrectionType = .no inputFirstField.returnKeyType = .next @@ -725,8 +738,20 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite strongSelf.inputFirstField?.keyboardAppearance = keyboardAppearance } + if strongSelf.inputFirstClearButton == nil { + strongSelf.inputFirstClearButton = HighlightableButtonNode() + strongSelf.inputFirstClearButton?.imageNode.displaysAsynchronously = false + strongSelf.inputFirstClearButton?.imageNode.displayWithoutProcessing = true + strongSelf.inputFirstClearButton?.displaysAsynchronously = false + strongSelf.inputFirstClearButton?.setImage(generateClearIcon(color: item.theme.list.inputClearButtonColor), for: []) + strongSelf.inputFirstClearButton?.addTarget(strongSelf, action: #selector(strongSelf.firstClearPressed), forControlEvents: .touchUpInside) + strongSelf.inputFirstClearButton?.isHidden = true + strongSelf.addSubnode(strongSelf.inputFirstClearButton!) + } + if strongSelf.inputSecondField == nil { let inputSecondField = TextFieldNodeView() + inputSecondField.delegate = self inputSecondField.font = Font.regular(17.0) inputSecondField.autocorrectionType = .no inputSecondField.returnKeyType = .done @@ -744,9 +769,27 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite strongSelf.inputSecondField?.keyboardAppearance = keyboardAppearance } + if strongSelf.inputSecondClearButton == nil { + strongSelf.inputSecondClearButton = HighlightableButtonNode() + strongSelf.inputSecondClearButton?.imageNode.displaysAsynchronously = false + strongSelf.inputSecondClearButton?.imageNode.displayWithoutProcessing = true + strongSelf.inputSecondClearButton?.displaysAsynchronously = false + strongSelf.inputSecondClearButton?.setImage(generateClearIcon(color: item.theme.list.inputClearButtonColor), for: []) + strongSelf.inputSecondClearButton?.addTarget(strongSelf, action: #selector(strongSelf.secondClearPressed), forControlEvents: .touchUpInside) + strongSelf.inputSecondClearButton?.isHidden = true + strongSelf.addSubnode(strongSelf.inputSecondClearButton!) + } + strongSelf.inputSeparator?.frame = CGRect(origin: CGPoint(x: params.leftInset + 100.0, y: 46.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 100.0, height: separatorHeight)) - strongSelf.inputFirstField?.frame = CGRect(origin: CGPoint(x: params.leftInset + 111.0, y: 12.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 111.0 - 8.0, height: 30.0)) - strongSelf.inputSecondField?.frame = CGRect(origin: CGPoint(x: params.leftInset + 111.0, y: 52.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 111.0 - 8.0, height: 30.0)) + strongSelf.inputFirstField?.frame = CGRect(origin: CGPoint(x: params.leftInset + 111.0, y: 12.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 111.0 - 36.0, height: 30.0)) + strongSelf.inputSecondField?.frame = CGRect(origin: CGPoint(x: params.leftInset + 111.0, y: 52.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 111.0 - 36.0, height: 30.0)) + + if let image = strongSelf.inputFirstClearButton?.image(for: []), let inputFieldFrame = strongSelf.inputFirstField?.frame { + strongSelf.inputFirstClearButton?.frame = CGRect(origin: CGPoint(x: inputFieldFrame.maxX, y: inputFieldFrame.minY + floor((inputFieldFrame.size.height - image.size.height) / 2.0) - 1.0 + UIScreenPixel), size: image.size) + } + if let image = strongSelf.inputSecondClearButton?.image(for: []), let inputFieldFrame = strongSelf.inputSecondField?.frame { + strongSelf.inputSecondClearButton?.frame = CGRect(origin: CGPoint(x: inputFieldFrame.maxX, y: inputFieldFrame.minY + floor((inputFieldFrame.size.height - image.size.height) / 2.0) - 1.0 + UIScreenPixel), size: image.size) + } if animated && animateIn { strongSelf.inputSeparator?.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3) @@ -764,6 +807,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite if strongSelf.inputFirstField == nil { let inputFirstField = TextFieldNodeView() + inputFirstField.delegate = self inputFirstField.font = Font.regular(17.0) inputFirstField.autocorrectionType = .no inputFirstField.attributedText = NSAttributedString(string: title, font: Font.regular(19.0), textColor: item.theme.list.itemPrimaryTextColor) @@ -786,8 +830,23 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite strongSelf.inputFirstField?.keyboardAppearance = keyboardAppearance } + if strongSelf.inputFirstClearButton == nil { + strongSelf.inputFirstClearButton = HighlightableButtonNode() + strongSelf.inputFirstClearButton?.imageNode.displaysAsynchronously = false + strongSelf.inputFirstClearButton?.imageNode.displayWithoutProcessing = true + strongSelf.inputFirstClearButton?.displaysAsynchronously = false + strongSelf.inputFirstClearButton?.setImage(generateClearIcon(color: item.theme.list.inputClearButtonColor), for: []) + strongSelf.inputFirstClearButton?.addTarget(strongSelf, action: #selector(strongSelf.firstClearPressed), forControlEvents: .touchUpInside) + strongSelf.inputFirstClearButton?.isHidden = true + strongSelf.addSubnode(strongSelf.inputFirstClearButton!) + } + strongSelf.inputSeparator?.frame = CGRect(origin: CGPoint(x: params.leftInset + 100.0, y: 62.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 100.0, height: separatorHeight)) - strongSelf.inputFirstField?.frame = CGRect(origin: CGPoint(x: params.leftInset + 102.0, y: 26.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 102.0 - 8.0, height: 35.0)) + strongSelf.inputFirstField?.frame = CGRect(origin: CGPoint(x: params.leftInset + 111.0, y: 26.0), size: CGSize(width: params.width - params.leftInset - params.rightInset - 111.0 - 36.0, height: 35.0)) + + if let image = strongSelf.inputFirstClearButton?.image(for: []), let inputFieldFrame = strongSelf.inputFirstField?.frame { + strongSelf.inputFirstClearButton?.frame = CGRect(origin: CGPoint(x: inputFieldFrame.maxX, y: inputFieldFrame.minY + floor((inputFieldFrame.size.height - image.size.height) / 2.0) - 1.0 + UIScreenPixel), size: image.size) + } if animated && animateIn { strongSelf.inputSeparator?.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3) @@ -835,6 +894,17 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite } else { inputFirstField.removeFromSuperview() } + + if let inputFirstClearButton = strongSelf.inputFirstClearButton { + strongSelf.inputFirstClearButton = nil + if animated { + inputFirstClearButton.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { [weak inputFirstClearButton] _ in + inputFirstClearButton?.removeFromSupernode() + }) + } else { + inputFirstClearButton.removeFromSupernode() + } + } } if let inputSecondField = strongSelf.inputSecondField { strongSelf.inputSecondField = nil @@ -845,6 +915,17 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite } else { inputSecondField.removeFromSuperview() } + + if let inputSecondClearButton = strongSelf.inputSecondClearButton { + strongSelf.inputSecondClearButton = nil + if animated { + inputSecondClearButton.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { [weak inputSecondClearButton] _ in + inputSecondClearButton?.removeFromSupernode() + }) + } else { + inputSecondClearButton.removeFromSupernode() + } + } } if animated && animateOut { strongSelf.statusNode.layer.animateAlpha(from: CGFloat(strongSelf.statusNode.layer.opacity), to: 1.0, duration: 0.3) @@ -928,6 +1009,13 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite } } + private func updateClearButtonVisibility(_ button: HighlightableButtonNode?, textField: UITextField?) { + guard let button = button, let textField = textField else { + return + } + button.isHidden = !textField.isFirstResponder || (textField.text?.isEmpty ?? true) + } + @objc func textFieldDidChange(_ inputField: UITextField) { if let item = self.item, let currentEditingName = item.state.editingName { var editingName: ItemListAvatarAndNameInfoItemName? @@ -942,6 +1030,41 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite item.editingNameUpdated(editingName) } } + + if inputField == self.inputFirstField { + self.updateClearButtonVisibility(self.inputFirstClearButton, textField: inputField) + } else if inputField == self.inputSecondField { + self.updateClearButtonVisibility(self.inputSecondClearButton, textField: inputField) + } + } + + func textFieldDidBeginEditing(_ textField: UITextField) { + if textField == self.inputFirstField { + self.updateClearButtonVisibility(self.inputFirstClearButton, textField: textField) + } else if textField == self.inputSecondField { + self.updateClearButtonVisibility(self.inputSecondClearButton, textField: textField) + } + } + + func textFieldDidEndEditing(_ textField: UITextField) { + if textField == self.inputFirstField { + self.updateClearButtonVisibility(self.inputFirstClearButton, textField: textField) + } else if textField == self.inputSecondField { + self.updateClearButtonVisibility(self.inputSecondClearButton, textField: textField) + } + } + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + if textField == self.inputFirstField { + if let inputSecondField = self.inputSecondField { + inputSecondField.becomeFirstResponder() + } else { + self.item?.editingNameCompleted() + } + } else if textField == self.inputSecondField { + self.item?.editingNameCompleted() + } + return true } @objc func avatarTapGesture(_ recognizer: UITapGestureRecognizer) { @@ -975,6 +1098,16 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite self.item?.call?() } + @objc func firstClearPressed() { + self.inputFirstField?.text = nil + self.updateClearButtonVisibility(self.inputFirstClearButton, textField: self.inputFirstField) + } + + @objc func secondClearPressed() { + self.inputSecondField?.text = nil + self.updateClearButtonVisibility(self.inputSecondClearButton, textField: self.inputSecondField) + } + func focus() { self.inputFirstField?.becomeFirstResponder() } diff --git a/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift b/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift index b8bb44f926..73faca85b1 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationResourcesItemList.swift @@ -136,7 +136,7 @@ struct PresentationResourcesItemList { static func itemListClearInputIcon(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.itemListClearInputIcon.rawValue, { theme in - return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: theme.rootController.activeNavigationSearchBar.inputIconColor) + return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: theme.list.inputClearButtonColor) }) } diff --git a/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift b/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift index 1cecc7b627..8b91ef36ba 100644 --- a/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/ProxyServerSettingsController.swift @@ -138,7 +138,7 @@ private enum ProxySettingsEntry: ItemListNodeEntry { case let .connectionHeader(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) case let .connectionServer(theme, placeholder, text): - return ItemListSingleLineInputItem(theme: theme, title: NSAttributedString(), text: text, placeholder: placeholder, sectionId: self.section, textUpdated: { value in + return ItemListSingleLineInputItem(theme: theme, title: NSAttributedString(), text: text, placeholder: placeholder, type: .regular(capitalization: false, autocorrection: false), sectionId: self.section, textUpdated: { value in arguments.updateState { current in var state = current state.host = value diff --git a/submodules/TelegramUI/TelegramUI/SinglePhoneInputNode.swift b/submodules/TelegramUI/TelegramUI/SinglePhoneInputNode.swift index b43bfe867b..62689797e2 100644 --- a/submodules/TelegramUI/TelegramUI/SinglePhoneInputNode.swift +++ b/submodules/TelegramUI/TelegramUI/SinglePhoneInputNode.swift @@ -92,6 +92,8 @@ final class SinglePhoneInputNode: ASDisplayNode, UITextFieldDelegate { } } var numberUpdated: ((String) -> Void)? + var beginEditing: (() -> Void)? + var endEditing: (() -> Void)? private let phoneFormatter = InteractivePhoneFormatter() @@ -131,6 +133,14 @@ final class SinglePhoneInputNode: ASDisplayNode, UITextFieldDelegate { return self.enableEditing } + func textFieldDidBeginEditing(_ textField: UITextField) { + self.beginEditing?() + } + + func textFieldDidEndEditing(_ textField: UITextField) { + self.endEditing?() + } + private func updateNumberFromTextFields() { guard let numberField = self.numberField else { return diff --git a/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift b/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift index 20ea365af6..0e923545a4 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoEditingPhoneItem.swift @@ -5,6 +5,10 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramPresentationData +private func generateClearIcon(color: UIColor) -> UIImage? { + return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color) +} + struct UserInfoEditingPhoneItemEditing { let editable: Bool let hasActiveRevealControls: Bool @@ -87,6 +91,7 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN private let editableControlNode: ItemListEditableControlNode private let labelSeparatorNode: ASDisplayNode private let phoneNode: SinglePhoneInputNode + private let clearButton: HighlightableButtonNode private var item: UserInfoEditingPhoneItem? private var layoutParams: ListViewItemLayoutParams? @@ -120,6 +125,12 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN self.phoneNode = SinglePhoneInputNode(fontSize: 17.0) + self.clearButton = HighlightableButtonNode() + self.clearButton.imageNode.displaysAsynchronously = false + self.clearButton.imageNode.displayWithoutProcessing = true + self.clearButton.displaysAsynchronously = false + self.clearButton.isHidden = true + super.init(layerBacked: false, dynamicBounce: false, rotated: false, seeThrough: false) self.addSubnode(self.editableControlNode) @@ -127,6 +138,7 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN self.addSubnode(self.labelButtonNode) self.addSubnode(self.labelSeparatorNode) self.addSubnode(self.phoneNode) + self.addSubnode(self.clearButton) self.labelButtonNode.highligthedChanged = { [weak self] highlighted in if let strongSelf = self { @@ -150,7 +162,18 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN self.phoneNode.numberUpdated = { [weak self] number in self?.item?.updated(number) + self?.updateClearButtonVisibility() } + + self.phoneNode.beginEditing = { [weak self] in + self?.updateClearButtonVisibility() + } + + self.phoneNode.endEditing = { [weak self] in + self?.updateClearButtonVisibility() + } + + self.clearButton.addTarget(self, action: #selector(self.clearPressed), forControlEvents: .touchUpInside) } override func didLoad() { @@ -208,6 +231,8 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN strongSelf.phoneNode.numberField?.textField.textColor = updatedTheme.list.itemPrimaryTextColor strongSelf.phoneNode.numberField?.textField.keyboardAppearance = updatedTheme.chatList.searchBarKeyboardColor.keyboardAppearance + + strongSelf.clearButton.setImage(generateClearIcon(color: updatedTheme.list.inputClearButtonColor), for: []) } let revealOffset = strongSelf.revealOffset @@ -246,6 +271,10 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN strongSelf.phoneNode.updateLayout(size: phoneFrame.size) strongSelf.phoneNode.number = item.value + if let image = strongSelf.clearButton.image(for: []) { + strongSelf.clearButton.frame = CGRect(origin: CGPoint(x: phoneFrame.maxX - image.size.width - 23.0, y: phoneFrame.minY + floor((phoneFrame.size.height - image.size.height) / 2.0) - 1.0 + UIScreenPixel), size: image.size) + } + strongSelf.updateLayout(size: layout.contentSize, leftInset: params.leftInset, rightInset: params.rightInset) strongSelf.setRevealOptions((left: [], right: [ItemListRevealOption(key: 0, title: item.strings.Common_Delete, icon: .none, color: item.theme.list.itemDisclosureActions.destructive.fillColor, textColor: item.theme.list.itemDisclosureActions.destructive.foregroundColor)])) @@ -297,6 +326,17 @@ class UserInfoEditingPhoneItemNode: ItemListRevealOptionsItemNode, ItemListItemN self.item?.selectLabel?() } + @objc func clearPressed() { + self.phoneNode.numberField?.textField.text = "+" + self.updateClearButtonVisibility() + } + + private func updateClearButtonVisibility() { + let text = self.phoneNode.numberField?.textField.text ?? "" + let isEmpty = text.isEmpty || text == "+" + self.clearButton.isHidden = isEmpty || !(self.phoneNode.numberField?.textField.isFirstResponder ?? false) + } + func focus() { self.phoneNode.numberField?.becomeFirstResponder() } diff --git a/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift b/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift index e87caa8845..9655809d31 100644 --- a/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/UsernameSetupController.swift @@ -89,7 +89,7 @@ private enum UsernameSetupEntry: ItemListNodeEntry { func item(_ arguments: UsernameSetupControllerArguments) -> ListViewItem { switch self { case let .editablePublicLink(theme, prefix, currentText, text): - return ItemListSingleLineInputItem(theme: theme, title: NSAttributedString(string: prefix, textColor: theme.list.itemPrimaryTextColor), text: text, placeholder: "", type: .username, spacing: 10.0, tag: UsernameEntryTag.username, sectionId: self.section, textUpdated: { updatedText in + return ItemListSingleLineInputItem(theme: theme, title: NSAttributedString(string: prefix, textColor: theme.list.itemPrimaryTextColor), text: text, placeholder: "", type: .username, spacing: 10.0, clearButton: true, tag: UsernameEntryTag.username, sectionId: self.section, textUpdated: { updatedText in arguments.updatePublicLinkText(currentText, updatedText) }, action: { }) From 3ac2825b6ca6ad6ba71fea0b750cd8a991f64b9d Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 25 Jun 2019 23:58:11 +0200 Subject: [PATCH 07/16] Added cellular data permission warning Fixed people nearby initial opening Fixed 3rd apps opening from group's location view screen --- .../DeviceAccess/Sources/DeviceAccess.swift | 14 ++++-- .../TelegramUI/TelegramUI/AppDelegate.swift | 3 ++ .../TelegramUI/ApplicationContext.swift | 50 ++++++++++++------- .../TelegramUI/ContactListNode.swift | 2 +- .../TelegramUI/ContactsController.swift | 2 +- .../TelegramUI/GroupInfoController.swift | 4 +- .../TelegramUI/TelegramUI/Notices.swift | 41 +++++++++------ .../TelegramUI/NotificationsAndSounds.swift | 6 +-- .../TelegramUI/TelegramUI/Pasteboard.swift | 2 +- .../TelegramUI/PeersNearbyController.swift | 2 +- .../TelegramUI/TelegramUI/Permission.swift | 14 +++--- .../TelegramUI/PermissionController.swift | 11 +++- .../TelegramUI/SettingsController.swift | 2 +- 13 files changed, 99 insertions(+), 54 deletions(-) diff --git a/submodules/DeviceAccess/Sources/DeviceAccess.swift b/submodules/DeviceAccess/Sources/DeviceAccess.swift index b93e023d00..b27ef642e5 100644 --- a/submodules/DeviceAccess/Sources/DeviceAccess.swift +++ b/submodules/DeviceAccess/Sources/DeviceAccess.swift @@ -179,11 +179,11 @@ public final class DeviceAccess { func statusForCellularState(_ state: CTCellularDataRestrictedState) -> AccessType? { switch state { case .restricted: - return .denied + return .allowed case .notRestricted: return .allowed default: - return nil + return .allowed } } let cellState = CTCellularData.init() @@ -196,7 +196,7 @@ public final class DeviceAccess { } } } else { - subscriber.putNext(.notDetermined) + subscriber.putNext(.allowed) subscriber.putCompletion() } return EmptyDisposable @@ -446,8 +446,12 @@ public final class DeviceAccess { completion(result) } } - default: - break + case .cellularData: + if let presentationData = presentationData { + present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: presentationData.strings.Permissions_CellularDataTitle_v0, text: presentationData.strings.Permissions_CellularDataText_v0, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_NotNow, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.AccessDenied_Settings, action: { + openSettings() + })]), nil) + } } } } diff --git a/submodules/TelegramUI/TelegramUI/AppDelegate.swift b/submodules/TelegramUI/TelegramUI/AppDelegate.swift index eda3deda39..5d48ccc686 100644 --- a/submodules/TelegramUI/TelegramUI/AppDelegate.swift +++ b/submodules/TelegramUI/TelegramUI/AppDelegate.swift @@ -590,6 +590,9 @@ final class SharedApplicationContext { }, requestSetAlternateIconName: { name, completion in if #available(iOS 10.3, *) { application.setAlternateIconName(name, completionHandler: { error in + if let error = error { + Logger.shared.log("App \(self.episodeId)", "failed to set alternate icon with error \(error.localizedDescription)") + } completion(error == nil) }) } else { diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift index 87d33fe403..10d3bbe181 100644 --- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift @@ -148,14 +148,7 @@ final class AuthorizedApplicationContext { context.keyShortcutsController = keyShortcutsController } - /*self.applicationInForegroundDisposable = context.sharedContext.applicationBindings.applicationInForeground.start(next: { [weak self] value in - Queue.mainQueue().async { - self?.notificationManager.isApplicationInForeground = value - } - })*/ - let previousPasscodeState = Atomic(value: nil) - let passcodeStatusData = combineLatest(queue: Queue.mainQueue(), context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationPasscodeSettings]), context.sharedContext.accountManager.accessChallengeData(), context.sharedContext.applicationBindings.applicationIsActive) let passcodeState = passcodeStatusData |> map { sharedData, accessChallengeDataView, isActive -> PasscodeState in @@ -281,7 +274,7 @@ final class AuthorizedApplicationContext { if #available(iOS 10.0, *) { } else { DeviceAccess.authorizeAccess(to: .contacts, presentationData: strongSelf.context.sharedContext.currentPresentationData.with { $0 }, present: { c, a in - }, openSettings: {}, { _ in }) + }) } if let passcodeController = strongSelf.passcodeController { @@ -520,23 +513,27 @@ final class AuthorizedApplicationContext { if #available(iOS 10.0, *) { let permissionsPosition = ValuePromise(0, ignoreRepeated: true) - self.permissionsDisposable.set((combineLatest(queue: .mainQueue(), requiredPermissions(context: context), permissionUISplitTest(postbox: context.account.postbox), permissionsPosition.get(), context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.contactsPermissionWarningKey()), context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.notificationsPermissionWarningKey())) - |> deliverOnMainQueue).start(next: { [weak self] required, splitTest, position, contactsPermissionWarningNotice, notificationsPermissionWarningNotice in + self.permissionsDisposable.set((combineLatest(queue: .mainQueue(), requiredPermissions(context: context), permissionUISplitTest(postbox: context.account.postbox), permissionsPosition.get(), context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .contacts)!), context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .notifications)!), context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .cellularData)!)) + |> deliverOnMainQueue).start(next: { [weak self] required, splitTest, position, contactsPermissionWarningNotice, notificationsPermissionWarningNotice, cellularDataPermissionWarningNotice in guard let strongSelf = self else { return } let contactsTimestamp = contactsPermissionWarningNotice.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) let notificationsTimestamp = notificationsPermissionWarningNotice.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) + let cellularDataTimestamp = cellularDataPermissionWarningNotice.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) if contactsTimestamp == nil, case .requestable = required.0.status { - ApplicationSpecificNotice.setContactsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 1) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .contacts, value: 1) } if notificationsTimestamp == nil, case .requestable = required.1.status { - ApplicationSpecificNotice.setNotificationsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 1) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .notifications, value: 1) } let config = splitTest.configuration var order = config.order + if !order.contains(.cellularData) { + order.append(.cellularData) + } if !order.contains(.siri) { order.append(.siri) } @@ -563,9 +560,13 @@ final class AuthorizedApplicationContext { if case .requestable = required.1.status, notificationsTimestamp != 0 { requestedPermissions.append((required.1, modal)) } + case .cellularData: + if case .denied = required.2.status, cellularDataTimestamp != 0 { + requestedPermissions.append((required.2, true)) + } case .siri: - if case .requestable = required.2.status { - requestedPermissions.append((required.2, false)) + if case .requestable = required.3.status { + requestedPermissions.append((required.3, false)) } default: break @@ -590,9 +591,11 @@ final class AuthorizedApplicationContext { permissionsPosition.set(position + 1) switch state { case .contacts: - ApplicationSpecificNotice.setContactsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 0) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .contacts, value: 0) case .notifications: - ApplicationSpecificNotice.setNotificationsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 0) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .notifications, value: 0) + case .cellularData: + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .cellularData, value: 0) default: break } @@ -616,7 +619,7 @@ final class AuthorizedApplicationContext { splitTest.addEvent(.ContactsDenied) } permissionsPosition.set(position + 1) - ApplicationSpecificNotice.setContactsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 0) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .contacts, value: 0) } case .notifications: splitTest.addEvent(.NotificationsRequest) @@ -629,8 +632,19 @@ final class AuthorizedApplicationContext { splitTest.addEvent(.NotificationsDenied) } permissionsPosition.set(position + 1) - ApplicationSpecificNotice.setNotificationsPermissionWarning(accountManager: context.sharedContext.accountManager, value: 0) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .notifications, value: 0) } + case .cellularData: + DeviceAccess.authorizeAccess(to: .cellularData, presentationData: context.sharedContext.currentPresentationData.with { $0 }, present: { [weak self] c, a in + if let strongSelf = self { + (strongSelf.rootController.viewControllers.last as? ViewController)?.present(c, in: .window(.root)) + } + }, openSettings: { + context.sharedContext.applicationBindings.openSettings() + }, { result in + permissionsPosition.set(position + 1) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .cellularData, value: 0) + }) case .siri: DeviceAccess.authorizeAccess(to: .siri, requestSiriAuthorization: { completion in return context.sharedContext.applicationBindings.requestSiriAuthorization(completion) diff --git a/submodules/TelegramUI/TelegramUI/ContactListNode.swift b/submodules/TelegramUI/TelegramUI/ContactListNode.swift index 7ce7d4fa31..1d019aefa1 100644 --- a/submodules/TelegramUI/TelegramUI/ContactListNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactListNode.swift @@ -837,7 +837,7 @@ final class ContactListNode: ASDisplayNode { let contactsWarningSuppressed = Promise<(Bool, Bool)>() contactsWarningSuppressed.set(.single((false, false)) |> then( - combineLatest(context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.contactsPermissionWarningKey()), context.account.postbox.preferencesView(keys: [PreferencesKeys.contactsSettings])) + combineLatest(context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .contacts)!), context.account.postbox.preferencesView(keys: [PreferencesKeys.contactsSettings])) |> map { noticeView, preferences -> (Bool, Bool) in let settings: ContactsSettings = preferences.values[PreferencesKeys.contactsSettings] as? ContactsSettings ?? ContactsSettings.defaultSettings let synchronizeDeviceContacts: Bool = settings.synchronizeContacts diff --git a/submodules/TelegramUI/TelegramUI/ContactsController.swift b/submodules/TelegramUI/TelegramUI/ContactsController.swift index 6a50574ab3..72fdd40ed0 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsController.swift @@ -125,7 +125,7 @@ public class ContactsController: ViewController { }) if #available(iOSApplicationExtension 10.0, iOS 10.0, *) { - self.authorizationDisposable = (combineLatest(DeviceAccess.authorizationStatus(subject: .contacts), combineLatest(context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.contactsPermissionWarningKey()), context.account.postbox.preferencesView(keys: [PreferencesKeys.contactsSettings]), context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.contactSynchronizationSettings])) + self.authorizationDisposable = (combineLatest(DeviceAccess.authorizationStatus(subject: .contacts), combineLatest(context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .contacts)!), context.account.postbox.preferencesView(keys: [PreferencesKeys.contactsSettings]), context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.contactSynchronizationSettings])) |> map { noticeView, preferences, sharedData -> (Bool, ContactsSortOrder) in let settings: ContactsSettings = preferences.values[PreferencesKeys.contactsSettings] as? ContactsSettings ?? ContactsSettings.defaultSettings let synchronizeDeviceContacts: Bool = settings.synchronizeContacts diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift index 17aff0ee26..e800268453 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift @@ -2001,7 +2001,9 @@ public func groupInfoController(context: AccountContext, peerId originalPeerId: return } let mapMedia = TelegramMediaMap(latitude: location.latitude, longitude: location.longitude, geoPlace: nil, venue: MapVenue(title: peer.displayTitle, address: location.address, provider: nil, id: nil, type: nil), liveBroadcastingTimeout: nil) - let controller = legacyLocationController(message: nil, mapMedia: mapMedia, context: context, isModal: false, openPeer: { _ in }, sendLiveLocation: { _, _ in }, stopLiveLocation: {}, openUrl: { _ in }) + let controller = legacyLocationController(message: nil, mapMedia: mapMedia, context: context, isModal: false, openPeer: { _ in }, sendLiveLocation: { _, _ in }, stopLiveLocation: {}, openUrl: { url in + context.sharedContext.applicationBindings.openUrl(url) + }) pushControllerImpl?(controller) }) }, changeLocation: { diff --git a/submodules/TelegramUI/TelegramUI/Notices.swift b/submodules/TelegramUI/TelegramUI/Notices.swift index dec9318aa2..5107d89920 100644 --- a/submodules/TelegramUI/TelegramUI/Notices.swift +++ b/submodules/TelegramUI/TelegramUI/Notices.swift @@ -129,6 +129,7 @@ private enum ApplicationSpecificGlobalNotice: Int32 { case archiveChatTips = 10 case archiveIntroDismissed = 11 case callsTabTip = 12 + case cellularDataPermissionWarning = 13 var key: ValueBoxKey { let v = ValueBoxKey(length: 4) @@ -137,6 +138,21 @@ private enum ApplicationSpecificGlobalNotice: Int32 { } } +private extension PermissionKind { + var noticeKey: NoticeEntryKey? { + switch self { + case .contacts: + return ApplicationSpecificNoticeKeys.contactsPermissionWarning() + case .notifications: + return ApplicationSpecificNoticeKeys.notificationsPermissionWarning() + case .cellularData: + return ApplicationSpecificNoticeKeys.cellularDataPermissionWarning() + default: + return nil + } + } +} + private struct ApplicationSpecificNoticeKeys { private static let botPaymentLiabilityNamespace: Int32 = 1 private static let globalNamespace: Int32 = 2 @@ -195,6 +211,10 @@ private struct ApplicationSpecificNoticeKeys { return NoticeEntryKey(namespace: noticeNamespace(namespace: permissionsNamespace), key: ApplicationSpecificGlobalNotice.notificationsPermissionWarning.key) } + static func cellularDataPermissionWarning() -> NoticeEntryKey { + return NoticeEntryKey(namespace: noticeNamespace(namespace: permissionsNamespace), key: ApplicationSpecificGlobalNotice.cellularDataPermissionWarning.key) + } + static func volumeButtonToUnmuteTip() -> NoticeEntryKey { return NoticeEntryKey(namespace: noticeNamespace(namespace: globalNamespace), key: ApplicationSpecificGlobalNotice.volumeButtonToUnmuteTip.key) } @@ -408,20 +428,19 @@ public struct ApplicationSpecificNotice { } } - public static func contactsPermissionWarningKey() -> NoticeEntryKey { - return ApplicationSpecificNoticeKeys.contactsPermissionWarning() + public static func permissionWarningKey(permission: PermissionKind) -> NoticeEntryKey? { + return permission.noticeKey } - public static func setContactsPermissionWarning(accountManager: AccountManager, value: Int32) { + public static func setPermissionWarning(accountManager: AccountManager, permission: PermissionKind, value: Int32) { + guard let noticeKey = permission.noticeKey else { + return + } let _ = accountManager.transaction { transaction -> Void in - transaction.setNotice(ApplicationSpecificNoticeKeys.contactsPermissionWarning(), ApplicationSpecificTimestampNotice(value: value)) + transaction.setNotice(noticeKey, ApplicationSpecificTimestampNotice(value: value)) }.start() } - public static func notificationsPermissionWarningKey() -> NoticeEntryKey { - return ApplicationSpecificNoticeKeys.notificationsPermissionWarning() - } - public static func getTimestampValue(_ entry: NoticeEntry) -> Int32? { if let value = entry as? ApplicationSpecificTimestampNotice { return value.value @@ -430,12 +449,6 @@ public struct ApplicationSpecificNotice { } } - public static func setNotificationsPermissionWarning(accountManager: AccountManager, value: Int32) { - let _ = accountManager.transaction { transaction -> Void in - transaction.setNotice(ApplicationSpecificNoticeKeys.notificationsPermissionWarning(), ApplicationSpecificTimestampNotice(value: value)) - }.start() - } - static func getVolumeButtonToUnmute(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool in if let _ = transaction.getNotice(ApplicationSpecificNoticeKeys.volumeButtonToUnmuteTip()) as? ApplicationSpecificBoolNotice { diff --git a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift b/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift index 7f9242a04b..f2cfcbd9d4 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift @@ -836,7 +836,7 @@ public func notificationsAndSoundsController(context: AccountContext, exceptions case .denied, .restricted: context.sharedContext.applicationBindings.openSettings() case .unreachable: - ApplicationSpecificNotice.setNotificationsPermissionWarning(accountManager: context.sharedContext.accountManager, value: Int32(Date().timeIntervalSince1970)) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .notifications, value: Int32(Date().timeIntervalSince1970)) context.sharedContext.applicationBindings.openSettings() default: break @@ -845,7 +845,7 @@ public func notificationsAndSoundsController(context: AccountContext, exceptions }, suppressWarning: { let presentationData = context.sharedContext.currentPresentationData.with { $0 } presentControllerImpl?(textAlertController(context: context, title: presentationData.strings.Notifications_PermissionsSuppressWarningTitle, text: presentationData.strings.Notifications_PermissionsSuppressWarningText, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Notifications_PermissionsKeepDisabled, action: { - ApplicationSpecificNotice.setNotificationsPermissionWarning(accountManager: context.sharedContext.accountManager, value: Int32(Date().timeIntervalSince1970)) + ApplicationSpecificNotice.setPermissionWarning(accountManager: context.sharedContext.accountManager, permission: .notifications, value: Int32(Date().timeIntervalSince1970)) }), TextAlertAction(type: .defaultAction, title: presentationData.strings.Notifications_PermissionsEnable, action: { context.sharedContext.applicationBindings.openSettings() })]), nil) @@ -1051,7 +1051,7 @@ public func notificationsAndSoundsController(context: AccountContext, exceptions if #available(iOSApplicationExtension 10.0, iOS 10.0, *) { notificationsWarningSuppressed.set(.single(true) |> then( - context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.notificationsPermissionWarningKey()) + context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .notifications)!) |> map { noticeView -> Bool in let timestamp = noticeView.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) if let timestamp = timestamp, timestamp > 0 { diff --git a/submodules/TelegramUI/TelegramUI/Pasteboard.swift b/submodules/TelegramUI/TelegramUI/Pasteboard.swift index 843d8e74dd..3f654f700d 100644 --- a/submodules/TelegramUI/TelegramUI/Pasteboard.swift +++ b/submodules/TelegramUI/TelegramUI/Pasteboard.swift @@ -5,7 +5,7 @@ import TelegramCore import MobileCoreServices private func rtfStringWithAppliedEntities(_ text: String, entities: [MessageTextEntity]) -> String { - let test = stringWithAppliedEntities(text, entities: entities, baseColor: .black, linkColor: .black, baseFont: Font.regular(14.0), linkFont: Font.regular(14.0), boldFont: Font.semibold(14.0), italicFont: Font.italic(14.0), fixedFont: Font.monospace(14.0), underlineLinks: false, external: true) + let test = stringWithAppliedEntities(text, entities: entities, baseColor: .black, linkColor: .black, baseFont: Font.regular(14.0), linkFont: Font.regular(14.0), boldFont: Font.semibold(14.0), italicFont: Font.italic(14.0), boldItalicFont: Font.semiboldItalic(14.0), fixedFont: Font.monospace(14.0), underlineLinks: false, external: true) if let data = try? test.data(from: NSRange(location: 0, length: test.length), documentAttributes: [NSAttributedString.DocumentAttributeKey.documentType: NSAttributedString.DocumentType.rtf]) { if var rtf = String(data: data, encoding: .windowsCP1252) { diff --git a/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift b/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift index 5bcd2261b1..b45cddb37d 100644 --- a/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift +++ b/submodules/TelegramUI/TelegramUI/PeersNearbyController.swift @@ -389,7 +389,7 @@ public func peersNearbyController(context: AccountContext) -> ViewController { } } } - dataPromise.set(dataSignal) + dataPromise.set(.single(nil) |> then(dataSignal)) let previousData = Atomic(value: nil) let displayLoading: Signal = .single(false) diff --git a/submodules/TelegramUI/TelegramUI/Permission.swift b/submodules/TelegramUI/TelegramUI/Permission.swift index 7262410961..318bf27680 100644 --- a/submodules/TelegramUI/TelegramUI/Permission.swift +++ b/submodules/TelegramUI/TelegramUI/Permission.swift @@ -36,7 +36,7 @@ public enum PermissionState: Equatable { case contacts(status: PermissionRequestStatus) case notifications(status: PermissionRequestStatus) case siri(status: PermissionRequestStatus) - case cellularData + case cellularData(status: PermissionRequestStatus) case nearbyLocation(status: PermissionRequestStatus) var kind: PermissionKind { @@ -62,19 +62,21 @@ public enum PermissionState: Equatable { return status case let .siri(status): return status - case .cellularData: - return .unreachable + case let .cellularData(status): + return status case let .nearbyLocation(status): return status } } } -public func requiredPermissions(context: AccountContext) -> Signal<(PermissionState, PermissionState, PermissionState), NoError> { +public func requiredPermissions(context: AccountContext) -> Signal<(contacts: PermissionState, notifications: PermissionState, cellularData: PermissionState, siri: PermissionState), NoError> { return combineLatest(DeviceAccess.authorizationStatus(subject: .contacts), DeviceAccess.authorizationStatus(applicationInForeground: context.sharedContext.applicationBindings.applicationInForeground, subject: .notifications), DeviceAccess.authorizationStatus(siriAuthorization: { return context.sharedContext.applicationBindings.siriAuthorization() + }, subject: .cellularData), DeviceAccess.authorizationStatus(siriAuthorization: { + return context.sharedContext.applicationBindings.siriAuthorization() }, subject: .siri)) - |> map { contactsStatus, notificationsStatus, siriStatus in - return (.contacts(status: PermissionRequestStatus(accessType: contactsStatus)), .notifications(status: PermissionRequestStatus(accessType: notificationsStatus)), .siri(status: PermissionRequestStatus(accessType: siriStatus))) + |> map { contactsStatus, notificationsStatus, cellularDataStatus, siriStatus in + return (.contacts(status: PermissionRequestStatus(accessType: contactsStatus)), .notifications(status: PermissionRequestStatus(accessType: notificationsStatus)), .cellularData(status: PermissionRequestStatus(accessType: cellularDataStatus)), .siri(status: PermissionRequestStatus(accessType: siriStatus))) } } diff --git a/submodules/TelegramUI/TelegramUI/PermissionController.swift b/submodules/TelegramUI/TelegramUI/PermissionController.swift index 89a9e5c6e1..8a293d2210 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionController.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionController.swift @@ -108,6 +108,11 @@ public final class PermissionController : ViewController { self.state = state if case let .permission(permission) = state, let state = permission { + if case .nearbyLocation = state { + } else { + self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Permissions_Skip, style: .plain, target: self, action: #selector(PermissionController.nextPressed)) + } + switch state { case let .contacts(status): self.splitTest?.addEvent(.ContactsModalRequest) @@ -170,11 +175,13 @@ public final class PermissionController : ViewController { } case .cellularData: self.allow = { [weak self] in - self?.proceed?(true) + if let strongSelf = self { + strongSelf.openAppSettings() + strongSelf.proceed?(true) + } } case let .nearbyLocation(status): self.title = self.presentationData.strings.Permissions_PeopleNearbyTitle_v0 - self.navigationItem.rightBarButtonItem = nil self.allow = { [weak self] in if let strongSelf = self { diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift index d0a9b81110..469f9fa0ff 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift @@ -1052,7 +1052,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM |> then( contextValue.get() |> mapToSignal { context -> Signal in - return context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.notificationsPermissionWarningKey()) + return context.sharedContext.accountManager.noticeEntry(key: ApplicationSpecificNotice.permissionWarningKey(permission: .notifications)!) |> map { noticeView -> Bool in let timestamp = noticeView.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) if let timestamp = timestamp, timestamp > 0 { From fa32fa3e304d2f9380687de56c802f686421851c Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 00:56:27 +0200 Subject: [PATCH 08/16] Import legacy accent color setting if any --- .../TelegramUI/TelegramUI/ChatListItem.swift | 2 +- .../ChatRecentActionsFilterController.swift | 26 ++++++----- .../Sources/PresentationThemeSettings.swift | 45 +++++++++++++------ 3 files changed, 47 insertions(+), 26 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatListItem.swift b/submodules/TelegramUI/TelegramUI/ChatListItem.swift index 21a00300e6..739dc4cbe4 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListItem.swift @@ -1527,7 +1527,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { let textDeltaX = textFrame.origin.x - contentRect.origin.x transition.animatePositionAdditive(node: self.textNode, offset: CGPoint(x: textDeltaX, y: 0.0)) textFrame.origin.x = contentRect.origin.x - self.textNode.frame = textFrame + transition.updateFrame(node: textNode, frame: textFrame) var contentImageFrame = self.contentImageNode.frame contentImageFrame.origin = textFrame.origin.offsetBy(dx: 1.0, dy: 0.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift index 983072c7b0..7f39107943 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsFilterController.swift @@ -10,12 +10,12 @@ import TelegramUIPreferences private final class ChatRecentActionsFilterControllerArguments { let account: Account - let toggleAllActions: () -> Void + let toggleAllActions: (Bool) -> Void let toggleAction: ([AdminLogEventsFlags]) -> Void - let toggleAllAdmins: () -> Void + let toggleAllAdmins: (Bool) -> Void let toggleAdmin: (PeerId) -> Void - init(account: Account, toggleAllActions: @escaping () -> Void, toggleAction: @escaping ([AdminLogEventsFlags]) -> Void, toggleAllAdmins: @escaping () -> Void, toggleAdmin: @escaping (PeerId) -> Void) { + init(account: Account, toggleAllActions: @escaping (Bool) -> Void, toggleAction: @escaping ([AdminLogEventsFlags]) -> Void, toggleAllAdmins: @escaping (Bool) -> Void, toggleAdmin: @escaping (PeerId) -> Void) { self.account = account self.toggleAllActions = toggleAllActions self.toggleAction = toggleAction @@ -206,8 +206,8 @@ private enum ChatRecentActionsFilterEntry: ItemListNodeEntry { case let .actionsTitle(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) case let .allActions(theme, text, value): - return ItemListSwitchItem(theme: theme, title: text, value: value, enabled: true, sectionId: self.section, style: .blocks, updated: { _ in - arguments.toggleAllActions() + return ItemListSwitchItem(theme: theme, title: text, value: value, enabled: true, sectionId: self.section, style: .blocks, updated: { value in + arguments.toggleAllActions(value) }) case let .actionItem(theme, _, events, text, value): return ItemListCheckboxItem(theme: theme, title: text, style: .right, checked: value, zeroSeparatorInsets: false, sectionId: self.section, action: { @@ -216,8 +216,8 @@ private enum ChatRecentActionsFilterEntry: ItemListNodeEntry { case let .adminsTitle(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) case let .allAdmins(theme, text, value): - return ItemListSwitchItem(theme: theme, title: text, value: value, enabled: true, sectionId: self.section, style: .blocks, updated: { _ in - arguments.toggleAllAdmins() + return ItemListSwitchItem(theme: theme, title: text, value: value, enabled: true, sectionId: self.section, style: .blocks, updated: { value in + arguments.toggleAllAdmins(value) }) case let .adminPeerItem(theme, strings, dateTimeFormat, nameDisplayOrder, _, participant, checked): let peerText: String @@ -374,9 +374,9 @@ public func channelRecentActionsFilterController(context: AccountContext, peer: let actionsDisposable = DisposableSet() - let arguments = ChatRecentActionsFilterControllerArguments(account: context.account, toggleAllActions: { + let arguments = ChatRecentActionsFilterControllerArguments(account: context.account, toggleAllActions: { value in updateState { current in - if current.events.isEmpty { + if value { return current.withUpdatedEvents(.all) } else { return current.withUpdatedEvents([]) @@ -398,13 +398,13 @@ public func channelRecentActionsFilterController(context: AccountContext, peer: return current.withUpdatedEvents(updatedEvents) } } - }, toggleAllAdmins: { + }, toggleAllAdmins: { value in let _ = (adminsPromise.get() |> take(1) |> deliverOnMainQueue).start(next: { admins in if let _ = admins { updateState { current in - if let _ = current.adminPeerIds { + if value { return current.withUpdatedAdminPeerIds(nil) } else { return current.withUpdatedAdminPeerIds([]) @@ -424,7 +424,9 @@ public func channelRecentActionsFilterController(context: AccountContext, peer: return current.withUpdatedAdminPeerIds(updatedAdminPeerIds) } else { var updatedAdminPeerIds = current.adminPeerIds ?? admins.map { $0.peer.id } - if !updatedAdminPeerIds.contains(adminId) { + if updatedAdminPeerIds.contains(adminId), let index = updatedAdminPeerIds.index(of: adminId) { + updatedAdminPeerIds.remove(at: index) + } else { updatedAdminPeerIds.append(adminId) } return current.withUpdatedAdminPeerIds(updatedAdminPeerIds) diff --git a/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift b/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift index 407ec6df35..87d0b19ae7 100644 --- a/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/PresentationThemeSettings.swift @@ -252,7 +252,6 @@ public struct PresentationThemeAccentColor: PostboxCoding, Equatable { public struct PresentationThemeSettings: PreferencesEntry { public var chatWallpaper: TelegramWallpaper public var theme: PresentationThemeReference -// public var themeAccentColor: Int32? public var themeSpecificAccentColors: [Int64: PresentationThemeAccentColor] public var themeSpecificChatWallpapers: [Int64: TelegramWallpaper] public var fontSize: PresentationFontSize @@ -301,19 +300,44 @@ public struct PresentationThemeSettings: PreferencesEntry { public init(decoder: PostboxDecoder) { self.chatWallpaper = (decoder.decodeObjectForKey("w", decoder: { TelegramWallpaper(decoder: $0) }) as? TelegramWallpaper) ?? .builtin(WallpaperSettings()) self.theme = decoder.decodeObjectForKey("t", decoder: { PresentationThemeReference(decoder: $0) }) as! PresentationThemeReference - //self.themeAccentColor = decoder.decodeOptionalInt32ForKey("themeAccentColor") - + + self.themeSpecificChatWallpapers = decoder.decodeObjectDictionaryForKey("themeSpecificChatWallpapers", keyDecoder: { decoder in + return decoder.decodeInt64ForKey("k", orElse: 0) + }, valueDecoder: { decoder in + return TelegramWallpaper(decoder: decoder) + }) + self.themeSpecificAccentColors = decoder.decodeObjectDictionaryForKey("themeSpecificAccentColors", keyDecoder: { decoder in return decoder.decodeInt64ForKey("k", orElse: 0) }, valueDecoder: { decoder in return PresentationThemeAccentColor(decoder: decoder) }) - self.themeSpecificChatWallpapers = decoder.decodeObjectDictionaryForKey("themeSpecificChatWallpapers", keyDecoder: { decoder in - return decoder.decodeInt64ForKey("k", orElse: 0) - }, valueDecoder: { decoder in - return TelegramWallpaper(decoder: decoder) - }) + if self.themeSpecificAccentColors[PresentationThemeReference.builtin(.day).index] == nil, let themeAccentColor = decoder.decodeOptionalInt32ForKey("themeAccentColor") { + let baseColor: PresentationThemeBaseColor + switch themeAccentColor { + case 0xf83b4c: + baseColor = .red + case 0xff7519: + baseColor = .orange + case 0xeba239: + baseColor = .yellow + case 0x29b327: + baseColor = .green + case 0x00c2ed: + baseColor = .cyan + case 0x007ee5: + baseColor = .blue + case 0x7748ff: + baseColor = .purple + case 0xff5da2: + baseColor = .pink + default: + baseColor = .blue + } + self.themeSpecificAccentColors[PresentationThemeReference.builtin(.day).index] = PresentationThemeAccentColor(baseColor: baseColor, value: 0.5) + } + self.fontSize = PresentationFontSize(rawValue: decoder.decodeInt32ForKey("f", orElse: PresentationFontSize.regular.rawValue)) ?? .regular self.automaticThemeSwitchSetting = (decoder.decodeObjectForKey("automaticThemeSwitchSetting", decoder: { AutomaticThemeSwitchSetting(decoder: $0) }) as? AutomaticThemeSwitchSetting) ?? AutomaticThemeSwitchSetting(trigger: .none, theme: .nightAccent) self.largeEmoji = decoder.decodeBoolForKey("largeEmoji", orElse: true) @@ -323,11 +347,6 @@ public struct PresentationThemeSettings: PreferencesEntry { public func encode(_ encoder: PostboxEncoder) { encoder.encodeObject(self.chatWallpaper, forKey: "w") encoder.encodeObject(self.theme, forKey: "t") -// if let themeAccentColor = self.themeAccentColor { -// encoder.encodeInt32(themeAccentColor, forKey: "themeAccentColor") -// } else { -// encoder.encodeNil(forKey: "themeAccentColor") -// } encoder.encodeObjectDictionary(self.themeSpecificAccentColors, forKey: "themeSpecificAccentColors", keyEncoder: { key, encoder in encoder.encodeInt64(key, forKey: "k") }) From 13e192eaa9874d5f9405ef82af17b7b2989509c0 Mon Sep 17 00:00:00 2001 From: overtake <> Date: Wed, 26 Jun 2019 17:09:11 +0200 Subject: [PATCH 09/16] typo fix --- submodules/TelegramUI/TelegramUI/ChatListItem.swift | 2 +- submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatListItem.swift b/submodules/TelegramUI/TelegramUI/ChatListItem.swift index d3e85c5400..72d78992b3 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListItem.swift @@ -534,7 +534,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { } } else { if self.highlightedBackgroundNode.supernode != nil { - transition.updateAlpha(layer: self.highlightedBackgroundNode.layer, alpha: highlightProgress, completion: { [weak self] completed in + transition.updateAlpha(layer: self.highlightedBackgroundNode.layer, alpha: 1.0 - highlightProgress, completion: { [weak self] completed in if let strongSelf = self { if completed { strongSelf.highlightedBackgroundNode.removeFromSupernode() diff --git a/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift b/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift index 8f7b80d930..81c532b0a2 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsPeerItem.swift @@ -424,7 +424,7 @@ class ContactsPeerItemNode: ItemListRevealOptionsItemNode { transition.updateAlpha(layer: self.highlightedBackgroundNode.layer, alpha: highlightProgress) } else { if self.highlightedBackgroundNode.supernode != nil { - transition.updateAlpha(layer: self.highlightedBackgroundNode.layer, alpha: highlightProgress, completion: { [weak self] completed in + transition.updateAlpha(layer: self.highlightedBackgroundNode.layer, alpha: 1.0 - highlightProgress, completion: { [weak self] completed in if let strongSelf = self { if completed { strongSelf.highlightedBackgroundNode.removeFromSupernode() From 1b4a4ce1a9dcf66887b92441f998ea8693b42588 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 17:08:07 +0200 Subject: [PATCH 10/16] Fixed call rating alert title layout --- .../TelegramUI/CallRatingController.swift | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/CallRatingController.swift b/submodules/TelegramUI/TelegramUI/CallRatingController.swift index 19404151b7..be97c259b4 100644 --- a/submodules/TelegramUI/TelegramUI/CallRatingController.swift +++ b/submodules/TelegramUI/TelegramUI/CallRatingController.swift @@ -34,7 +34,7 @@ private final class CallRatingAlertContentNode: AlertContentNode { self.apply = apply self.titleNode = ASTextNode() - self.titleNode.maximumNumberOfLines = 2 + self.titleNode.maximumNumberOfLines = 3 var starNodes: [ASButtonNode] = [] for _ in 0 ..< 5 { @@ -110,7 +110,7 @@ private final class CallRatingAlertContentNode: AlertContentNode { } override func updateTheme(_ theme: AlertControllerTheme) { - self.titleNode.attributedText = NSAttributedString(string: strings.Calls_RatingTitle, font: Font.bold(17.0), textColor: theme.primaryColor, paragraphAlignment: .center) + self.titleNode.attributedText = NSAttributedString(string: self.strings.Calls_RatingTitle, font: Font.bold(17.0), textColor: theme.primaryColor, paragraphAlignment: .center) for node in self.starNodes { node.setImage(generateTintedImage(image: UIImage(bundleImageName: "Call/Star"), color: theme.accentColor), for: []) @@ -140,7 +140,7 @@ private final class CallRatingAlertContentNode: AlertContentNode { var origin: CGPoint = CGPoint(x: 0.0, y: 20.0) - let titleSize = self.titleNode.measure(size) + let titleSize = self.titleNode.measure(CGSize(width: size.width - 32.0, height: size.height)) transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: origin.y), size: titleSize)) origin.y += titleSize.height + 13.0 @@ -156,10 +156,10 @@ private final class CallRatingAlertContentNode: AlertContentNode { effectiveActionLayout = .vertical } switch effectiveActionLayout { - case .horizontal: - minActionsWidth += actionTitleSize.width + actionTitleInsets - case .vertical: - minActionsWidth = max(minActionsWidth, actionTitleSize.width + actionTitleInsets) + case .horizontal: + minActionsWidth += actionTitleSize.width + actionTitleInsets + case .vertical: + minActionsWidth = max(minActionsWidth, actionTitleSize.width + actionTitleInsets) } } @@ -198,24 +198,24 @@ private final class CallRatingAlertContentNode: AlertContentNode { if separatorIndex >= 0 { let separatorNode = self.actionVerticalSeparators[separatorIndex] switch effectiveActionLayout { - case .horizontal: - transition.updateFrame(node: separatorNode, frame: CGRect(origin: CGPoint(x: actionOffset - UIScreenPixel, y: resultSize.height - actionsHeight), size: CGSize(width: UIScreenPixel, height: actionsHeight - UIScreenPixel))) - case .vertical: - transition.updateFrame(node: separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: resultSize.height - actionsHeight + actionOffset - UIScreenPixel), size: CGSize(width: resultSize.width, height: UIScreenPixel))) + case .horizontal: + transition.updateFrame(node: separatorNode, frame: CGRect(origin: CGPoint(x: actionOffset - UIScreenPixel, y: resultSize.height - actionsHeight), size: CGSize(width: UIScreenPixel, height: actionsHeight - UIScreenPixel))) + case .vertical: + transition.updateFrame(node: separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: resultSize.height - actionsHeight + actionOffset - UIScreenPixel), size: CGSize(width: resultSize.width, height: UIScreenPixel))) } } separatorIndex += 1 let currentActionWidth: CGFloat switch effectiveActionLayout { - case .horizontal: - if nodeIndex == self.actionNodes.count - 1 { - currentActionWidth = resultSize.width - actionOffset - } else { - currentActionWidth = actionWidth - } - case .vertical: - currentActionWidth = resultSize.width + case .horizontal: + if nodeIndex == self.actionNodes.count - 1 { + currentActionWidth = resultSize.width - actionOffset + } else { + currentActionWidth = actionWidth + } + case .vertical: + currentActionWidth = resultSize.width } let actionNodeFrame: CGRect From 712b99360c34759da8a4897cef4c140f36986841 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 17:09:49 +0200 Subject: [PATCH 11/16] Added strikethrough & underline formatting options in the context menu --- Telegram-iOS/en.lproj/Localizable.strings | 2 + .../Sources/PresentationStrings.swift | 5386 +++++++++-------- .../TelegramUI/ChatTextInputMenu.swift | 8 +- .../Resources/PresentationStrings.mapping | Bin 117832 -> 117900 bytes 4 files changed, 2703 insertions(+), 2693 deletions(-) diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index 471ae87449..d792bcc33c 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -4328,6 +4328,8 @@ Any member of this group will be able to see messages in the channel."; "Conversation.OpenBotLinkOpen" = "Open"; "TextFormat.Link" = "Link"; +"TextFormat.Strikethrough" = "Strikethrough"; +"TextFormat.Underline" = "Underline"; "TextFormat.AddLinkTitle" = "Add Link"; "TextFormat.AddLinkText" = "The link will be displayed as \"%@\"."; diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index ad36131c21..a5fa0b76d3 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -1055,3393 +1055,3395 @@ public final class PresentationStrings { public func PUSH_CHANNEL_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[811]!, self._r[811]!, [_1]) } + public var TextFormat_Underline: String { return self._s[812]! } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[812]!, self._r[812]!, [_1, _2]) + return formatWithArgumentRanges(self._s[813]!, self._r[813]!, [_1, _2]) } public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[813]!, self._r[813]!, [_0]) + return formatWithArgumentRanges(self._s[814]!, self._r[814]!, [_0]) } public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[814]!, self._r[814]!, [_1, _2]) + return formatWithArgumentRanges(self._s[815]!, self._r[815]!, [_1, _2]) } - public var GroupPermission_Delete: String { return self._s[815]! } - public var Passport_Language_uk: String { return self._s[816]! } - public var StickerPack_HideStickers: String { return self._s[818]! } - public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[819]! } + public var GroupPermission_Delete: String { return self._s[816]! } + public var Passport_Language_uk: String { return self._s[817]! } + public var StickerPack_HideStickers: String { return self._s[819]! } + public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[820]! } public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[820]!, self._r[820]!, [_1, _2]) + return formatWithArgumentRanges(self._s[821]!, self._r[821]!, [_1, _2]) } - public var Activity_UploadingVideoMessage: String { return self._s[821]! } + public var Activity_UploadingVideoMessage: String { return self._s[822]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[822]!, self._r[822]!, [_0]) + return formatWithArgumentRanges(self._s[823]!, self._r[823]!, [_0]) } - public var Channel_TitleInfo: String { return self._s[823]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[824]! } - public var Settings_CallSettings: String { return self._s[825]! } - public var Camera_SquareMode: String { return self._s[826]! } - public var GroupInfo_SharedMediaNone: String { return self._s[827]! } + public var Channel_TitleInfo: String { return self._s[824]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[825]! } + public var Settings_CallSettings: String { return self._s[826]! } + public var Camera_SquareMode: String { return self._s[827]! } + public var GroupInfo_SharedMediaNone: String { return self._s[828]! } public func PUSH_MESSAGE_VIDEO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[828]!, self._r[828]!, [_1]) + return formatWithArgumentRanges(self._s[829]!, self._r[829]!, [_1]) } - public var Bot_GenericBotStatus: String { return self._s[829]! } - public var Application_Update: String { return self._s[831]! } - public var Month_ShortJanuary: String { return self._s[832]! } - public var Contacts_PermissionsKeepDisabled: String { return self._s[833]! } - public var Channel_AdminLog_BanReadMessages: String { return self._s[834]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[835]! } - public var Passport_Address_Street2Placeholder: String { return self._s[836]! } + public var Bot_GenericBotStatus: String { return self._s[830]! } + public var Application_Update: String { return self._s[832]! } + public var Month_ShortJanuary: String { return self._s[833]! } + public var Contacts_PermissionsKeepDisabled: String { return self._s[834]! } + public var Channel_AdminLog_BanReadMessages: String { return self._s[835]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[836]! } + public var Passport_Address_Street2Placeholder: String { return self._s[837]! } public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[837]!, self._r[837]!, [_0]) + return formatWithArgumentRanges(self._s[838]!, self._r[838]!, [_0]) } - public var NetworkUsageSettings_Cellular: String { return self._s[838]! } - public var Appearance_PreviewOutgoingText: String { return self._s[839]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[840]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[842]! } - public var Map_Directions: String { return self._s[843]! } - public var Passport_FieldIdentityTranslationHelp: String { return self._s[845]! } - public var Appearance_ThemeDay: String { return self._s[846]! } - public var LogoutOptions_LogOut: String { return self._s[847]! } - public var Group_PublicLink_Title: String { return self._s[849]! } - public var Channel_AddBotErrorNoRights: String { return self._s[850]! } - public var Passport_Identity_AddPassport: String { return self._s[851]! } - public var LocalGroup_ButtonTitle: String { return self._s[852]! } - public var Call_Message: String { return self._s[853]! } - public var PhotoEditor_ExposureTool: String { return self._s[854]! } - public var Passport_FieldOneOf_Delimeter: String { return self._s[856]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[858]! } - public var Appearance_Preview: String { return self._s[859]! } - public var Compose_ChannelMembers: String { return self._s[860]! } - public var Conversation_DeleteManyMessages: String { return self._s[861]! } - public var ReportPeer_ReasonOther_Title: String { return self._s[862]! } - public var Checkout_ErrorProviderAccountTimeout: String { return self._s[863]! } - public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[864]! } - public var Channel_Stickers_CreateYourOwn: String { return self._s[867]! } - public var Conversation_UpdateTelegram: String { return self._s[868]! } + public var NetworkUsageSettings_Cellular: String { return self._s[839]! } + public var Appearance_PreviewOutgoingText: String { return self._s[840]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[841]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[843]! } + public var Map_Directions: String { return self._s[844]! } + public var Passport_FieldIdentityTranslationHelp: String { return self._s[846]! } + public var Appearance_ThemeDay: String { return self._s[847]! } + public var LogoutOptions_LogOut: String { return self._s[848]! } + public var Group_PublicLink_Title: String { return self._s[850]! } + public var Channel_AddBotErrorNoRights: String { return self._s[851]! } + public var Passport_Identity_AddPassport: String { return self._s[852]! } + public var LocalGroup_ButtonTitle: String { return self._s[853]! } + public var Call_Message: String { return self._s[854]! } + public var PhotoEditor_ExposureTool: String { return self._s[855]! } + public var Passport_FieldOneOf_Delimeter: String { return self._s[857]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[859]! } + public var Appearance_Preview: String { return self._s[860]! } + public var Compose_ChannelMembers: String { return self._s[861]! } + public var Conversation_DeleteManyMessages: String { return self._s[862]! } + public var ReportPeer_ReasonOther_Title: String { return self._s[863]! } + public var Checkout_ErrorProviderAccountTimeout: String { return self._s[864]! } + public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[865]! } + public var Channel_Stickers_CreateYourOwn: String { return self._s[868]! } + public var Conversation_UpdateTelegram: String { return self._s[869]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[869]!, self._r[869]!, [_0]) + return formatWithArgumentRanges(self._s[870]!, self._r[870]!, [_0]) } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[870]!, self._r[870]!, [_1]) + return formatWithArgumentRanges(self._s[871]!, self._r[871]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[871]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[872]! } + public var GroupInfo_Administrators_Title: String { return self._s[872]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[873]! } public func PrivacySettings_LastSeenNobodyPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[873]!, self._r[873]!, [_0]) + return formatWithArgumentRanges(self._s[874]!, self._r[874]!, [_0]) } - public var Tour_Title3: String { return self._s[874]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[875]! } - public var Clipboard_SendPhoto: String { return self._s[879]! } - public var MediaPicker_Videos: String { return self._s[880]! } - public var Passport_Email_Title: String { return self._s[881]! } + public var Tour_Title3: String { return self._s[875]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[876]! } + public var Clipboard_SendPhoto: String { return self._s[880]! } + public var MediaPicker_Videos: String { return self._s[881]! } + public var Passport_Email_Title: String { return self._s[882]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[882]!, self._r[882]!, [_0]) + return formatWithArgumentRanges(self._s[883]!, self._r[883]!, [_0]) } - public var StickerPacksSettings_Title: String { return self._s[883]! } - public var Conversation_MessageDialogDelete: String { return self._s[884]! } - public var Privacy_Calls_CustomHelp: String { return self._s[886]! } - public var Message_Wallpaper: String { return self._s[887]! } - public var MemberSearch_BotSection: String { return self._s[888]! } - public var GroupInfo_SetSound: String { return self._s[889]! } - public var Core_ServiceUserStatus: String { return self._s[890]! } - public var LiveLocationUpdated_JustNow: String { return self._s[891]! } - public var Call_StatusFailed: String { return self._s[892]! } - public var TwoStepAuth_SetupPasswordDescription: String { return self._s[893]! } - public var TwoStepAuth_SetPassword: String { return self._s[894]! } - public var Permissions_PeopleNearbyText_v0: String { return self._s[895]! } + public var StickerPacksSettings_Title: String { return self._s[884]! } + public var Conversation_MessageDialogDelete: String { return self._s[885]! } + public var Privacy_Calls_CustomHelp: String { return self._s[887]! } + public var Message_Wallpaper: String { return self._s[888]! } + public var MemberSearch_BotSection: String { return self._s[889]! } + public var GroupInfo_SetSound: String { return self._s[890]! } + public var Core_ServiceUserStatus: String { return self._s[891]! } + public var LiveLocationUpdated_JustNow: String { return self._s[892]! } + public var Call_StatusFailed: String { return self._s[893]! } + public var TwoStepAuth_SetupPasswordDescription: String { return self._s[894]! } + public var TwoStepAuth_SetPassword: String { return self._s[895]! } + public var Permissions_PeopleNearbyText_v0: String { return self._s[896]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[897]!, self._r[897]!, [_0]) + return formatWithArgumentRanges(self._s[898]!, self._r[898]!, [_0]) } - public var Calls_SubmitRating: String { return self._s[898]! } - public var Profile_Username: String { return self._s[899]! } - public var Bot_DescriptionTitle: String { return self._s[900]! } - public var MaskStickerSettings_Title: String { return self._s[901]! } - public var SharedMedia_CategoryOther: String { return self._s[902]! } - public var GroupInfo_SetGroupPhoto: String { return self._s[903]! } - public var Common_NotNow: String { return self._s[904]! } - public var CallFeedback_IncludeLogsInfo: String { return self._s[905]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[906]! } - public var Map_Location: String { return self._s[907]! } - public var Invitation_JoinGroup: String { return self._s[908]! } - public var AutoDownloadSettings_Title: String { return self._s[910]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[911]! } - public var Channel_ErrorAddBlocked: String { return self._s[912]! } - public var Conversation_UnblockUser: String { return self._s[913]! } - public var Watch_Bot_Restart: String { return self._s[914]! } - public var TwoStepAuth_Title: String { return self._s[915]! } - public var Channel_AdminLog_BanSendMessages: String { return self._s[916]! } - public var Checkout_ShippingMethod: String { return self._s[917]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[918]! } + public var Calls_SubmitRating: String { return self._s[899]! } + public var Profile_Username: String { return self._s[900]! } + public var Bot_DescriptionTitle: String { return self._s[901]! } + public var MaskStickerSettings_Title: String { return self._s[902]! } + public var SharedMedia_CategoryOther: String { return self._s[903]! } + public var GroupInfo_SetGroupPhoto: String { return self._s[904]! } + public var Common_NotNow: String { return self._s[905]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[906]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[907]! } + public var Map_Location: String { return self._s[908]! } + public var Invitation_JoinGroup: String { return self._s[909]! } + public var AutoDownloadSettings_Title: String { return self._s[911]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[912]! } + public var Channel_ErrorAddBlocked: String { return self._s[913]! } + public var Conversation_UnblockUser: String { return self._s[914]! } + public var Watch_Bot_Restart: String { return self._s[915]! } + public var TwoStepAuth_Title: String { return self._s[916]! } + public var Channel_AdminLog_BanSendMessages: String { return self._s[917]! } + public var Checkout_ShippingMethod: String { return self._s[918]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[919]! } public func PUSH_CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[919]!, self._r[919]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[920]!, self._r[920]!, [_1, _2, _3]) } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[921]!, self._r[921]!, [_0]) - } - public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[922]!, self._r[922]!, [_0]) } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[923]! } - public var AuthSessions_TerminateOtherSessions: String { return self._s[924]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[925]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[926]! } - public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[927]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[928]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[929]! } - public var Checkout_PaymentMethod_Title: String { return self._s[930]! } - public var SocksProxySetup_Connection: String { return self._s[931]! } - public var Group_MessagePhotoRemoved: String { return self._s[932]! } - public var Channel_Stickers_NotFound: String { return self._s[934]! } - public var Group_About_Help: String { return self._s[935]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[936]! } - public var PeopleNearby_Title: String { return self._s[938]! } - public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[939]!, self._r[939]!, [_1]) + public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[923]!, self._r[923]!, [_0]) } - public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[941]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[942]! } - public var SocksProxySetup_Password: String { return self._s[943]! } - public var Notifications_PermissionsEnable: String { return self._s[944]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[946]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[924]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[925]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[926]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[927]! } + public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[928]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[929]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[930]! } + public var Checkout_PaymentMethod_Title: String { return self._s[931]! } + public var SocksProxySetup_Connection: String { return self._s[932]! } + public var Group_MessagePhotoRemoved: String { return self._s[933]! } + public var Channel_Stickers_NotFound: String { return self._s[935]! } + public var Group_About_Help: String { return self._s[936]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[937]! } + public var PeopleNearby_Title: String { return self._s[939]! } + public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[940]!, self._r[940]!, [_1]) + } + public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[942]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[943]! } + public var SocksProxySetup_Password: String { return self._s[944]! } + public var Notifications_PermissionsEnable: String { return self._s[945]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[947]! } public func Channel_AdminLog_MessageInvitedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[947]!, self._r[947]!, [_1]) + return formatWithArgumentRanges(self._s[948]!, self._r[948]!, [_1]) } public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[949]!, self._r[949]!, [_0]) + return formatWithArgumentRanges(self._s[950]!, self._r[950]!, [_0]) } - public var Passport_Identity_TypeDriversLicense: String { return self._s[950]! } - public var ArchivedPacksAlert_Title: String { return self._s[951]! } + public var Passport_Identity_TypeDriversLicense: String { return self._s[951]! } + public var ArchivedPacksAlert_Title: String { return self._s[952]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[952]!, self._r[952]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[953]!, self._r[953]!, [_1, _2, _3]) } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[953]! } - public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[955]! } - public var Conversation_StatusTyping: String { return self._s[956]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[957]! } - public var Notification_PassportValueProofOfAddress: String { return self._s[958]! } - public var UserInfo_CreateNewContact: String { return self._s[959]! } - public var Passport_Identity_FrontSide: String { return self._s[960]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[961]! } - public var Calls_CallTabTitle: String { return self._s[962]! } - public var Channel_AdminLog_ChannelEmptyText: String { return self._s[963]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[954]! } + public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[956]! } + public var Conversation_StatusTyping: String { return self._s[957]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[958]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[959]! } + public var UserInfo_CreateNewContact: String { return self._s[960]! } + public var Passport_Identity_FrontSide: String { return self._s[961]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[962]! } + public var Calls_CallTabTitle: String { return self._s[963]! } + public var Channel_AdminLog_ChannelEmptyText: String { return self._s[964]! } public func Login_BannedPhoneBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[964]!, self._r[964]!, [_0]) + return formatWithArgumentRanges(self._s[965]!, self._r[965]!, [_0]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[965]! } - public var SharedMedia_EmptyMusicText: String { return self._s[966]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[967]! } - public var Paint_Stickers: String { return self._s[968]! } - public var Privacy_GroupsAndChannels: String { return self._s[969]! } - public var UserInfo_AddContact: String { return self._s[971]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[966]! } + public var SharedMedia_EmptyMusicText: String { return self._s[967]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[968]! } + public var Paint_Stickers: String { return self._s[969]! } + public var Privacy_GroupsAndChannels: String { return self._s[970]! } + public var UserInfo_AddContact: String { return self._s[972]! } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[972]!, self._r[972]!, [_0]) + return formatWithArgumentRanges(self._s[973]!, self._r[973]!, [_0]) } - public var PhoneNumberHelp_ChangeNumber: String { return self._s[974]! } + public var PhoneNumberHelp_ChangeNumber: String { return self._s[975]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[976]!, self._r[976]!, [_0]) + return formatWithArgumentRanges(self._s[977]!, self._r[977]!, [_0]) } - public var DialogList_NoMessagesTitle: String { return self._s[977]! } - public var EditProfile_NameAndPhotoHelp: String { return self._s[978]! } - public var BlockedUsers_BlockUser: String { return self._s[979]! } - public var Notifications_PermissionsOpenSettings: String { return self._s[980]! } - public var MediaPicker_UngroupDescription: String { return self._s[981]! } - public var Watch_NoConnection: String { return self._s[982]! } - public var Month_GenSeptember: String { return self._s[983]! } - public var Conversation_ViewGroup: String { return self._s[984]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[987]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[988]! } - public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[989]! } - public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[990]! } - public var MediaPicker_CameraRoll: String { return self._s[992]! } - public var Month_GenAugust: String { return self._s[993]! } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[994]! } - public var SharedMedia_EmptyText: String { return self._s[995]! } - public var Map_ShareLiveLocation: String { return self._s[996]! } - public var Calls_All: String { return self._s[997]! } - public var Appearance_ThemeNight: String { return self._s[1000]! } - public var Conversation_HoldForAudio: String { return self._s[1001]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[1004]! } - public var GroupInfo_GroupHistoryHidden: String { return self._s[1005]! } - public var SocksProxySetup_Secret: String { return self._s[1006]! } + public var DialogList_NoMessagesTitle: String { return self._s[978]! } + public var EditProfile_NameAndPhotoHelp: String { return self._s[979]! } + public var BlockedUsers_BlockUser: String { return self._s[980]! } + public var Notifications_PermissionsOpenSettings: String { return self._s[981]! } + public var MediaPicker_UngroupDescription: String { return self._s[982]! } + public var Watch_NoConnection: String { return self._s[983]! } + public var Month_GenSeptember: String { return self._s[984]! } + public var Conversation_ViewGroup: String { return self._s[985]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[988]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[989]! } + public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[990]! } + public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[991]! } + public var MediaPicker_CameraRoll: String { return self._s[993]! } + public var Month_GenAugust: String { return self._s[994]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[995]! } + public var SharedMedia_EmptyText: String { return self._s[996]! } + public var Map_ShareLiveLocation: String { return self._s[997]! } + public var Calls_All: String { return self._s[998]! } + public var Appearance_ThemeNight: String { return self._s[1001]! } + public var Conversation_HoldForAudio: String { return self._s[1002]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[1005]! } + public var GroupInfo_GroupHistoryHidden: String { return self._s[1006]! } + public var SocksProxySetup_Secret: String { return self._s[1007]! } public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1007]!, self._r[1007]!, [_0]) + return formatWithArgumentRanges(self._s[1008]!, self._r[1008]!, [_0]) } - public var Channel_BanList_RestrictedTitle: String { return self._s[1009]! } - public var Conversation_Location: String { return self._s[1010]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[1010]! } + public var Conversation_Location: String { return self._s[1011]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1011]!, self._r[1011]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1012]!, self._r[1012]!, [_1, _2]) } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[1013]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1014]! } - public var Notifications_PermissionsText: String { return self._s[1015]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1016]! } - public var Call_Flip: String { return self._s[1017]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1018]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1020]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1022]! } - public var Passport_DeletePassportConfirmation: String { return self._s[1024]! } - public var Login_InvalidCodeError: String { return self._s[1025]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[1026]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[1014]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1015]! } + public var Notifications_PermissionsText: String { return self._s[1016]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1017]! } + public var Call_Flip: String { return self._s[1018]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1019]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1021]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1023]! } + public var Passport_DeletePassportConfirmation: String { return self._s[1025]! } + public var Login_InvalidCodeError: String { return self._s[1026]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[1027]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1027]!, self._r[1027]!, [_0]) - } - public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1028]!, self._r[1028]!, [_0]) } - public var Call_CallInProgressTitle: String { return self._s[1029]! } - public var Month_ShortSeptember: String { return self._s[1030]! } - public var Watch_ChannelInfo_Title: String { return self._s[1031]! } - public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1034]! } - public var DialogList_PasscodeLockHelp: String { return self._s[1035]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[1036]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1037]! } - public var PhotoEditor_CropReset: String { return self._s[1038]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1040]! } - public var Channel_Management_LabelEditor: String { return self._s[1041]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[1043]! } - public var PhotoEditor_HighlightsTool: String { return self._s[1044]! } - public var UserInfo_Title: String { return self._s[1045]! } - public var ChatList_HideAction: String { return self._s[1046]! } - public var AccessDenied_Title: String { return self._s[1047]! } - public var DialogList_SearchLabel: String { return self._s[1048]! } - public var Group_Setup_HistoryHidden: String { return self._s[1049]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1050]! } - public var State_Updating: String { return self._s[1052]! } - public var Contacts_TabTitle: String { return self._s[1053]! } - public var Notifications_Badge_CountUnreadMessages: String { return self._s[1055]! } - public var GroupInfo_GroupHistory: String { return self._s[1056]! } - public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1057]! } - public var Wallpaper_SetColor: String { return self._s[1058]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1059]! } - public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1060]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1061]! } - public var Contacts_NotRegisteredSection: String { return self._s[1062]! } + public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1029]!, self._r[1029]!, [_0]) + } + public var Call_CallInProgressTitle: String { return self._s[1030]! } + public var Month_ShortSeptember: String { return self._s[1031]! } + public var Watch_ChannelInfo_Title: String { return self._s[1032]! } + public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1035]! } + public var DialogList_PasscodeLockHelp: String { return self._s[1036]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[1037]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1038]! } + public var PhotoEditor_CropReset: String { return self._s[1039]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1041]! } + public var Channel_Management_LabelEditor: String { return self._s[1042]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[1044]! } + public var PhotoEditor_HighlightsTool: String { return self._s[1045]! } + public var UserInfo_Title: String { return self._s[1046]! } + public var ChatList_HideAction: String { return self._s[1047]! } + public var AccessDenied_Title: String { return self._s[1048]! } + public var DialogList_SearchLabel: String { return self._s[1049]! } + public var Group_Setup_HistoryHidden: String { return self._s[1050]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1051]! } + public var State_Updating: String { return self._s[1053]! } + public var Contacts_TabTitle: String { return self._s[1054]! } + public var Notifications_Badge_CountUnreadMessages: String { return self._s[1056]! } + public var GroupInfo_GroupHistory: String { return self._s[1057]! } + public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1058]! } + public var Wallpaper_SetColor: String { return self._s[1059]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1060]! } + public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1061]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1062]! } + public var Contacts_NotRegisteredSection: String { return self._s[1063]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1063]!, self._r[1063]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1064]!, self._r[1064]!, [_1, _2, _3]) } - public var Paint_Clear: String { return self._s[1064]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[1065]! } - public var SocksProxySetup_Connecting: String { return self._s[1066]! } - public var ExplicitContent_AlertChannel: String { return self._s[1067]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[1068]! } - public var Conversation_Contact: String { return self._s[1069]! } - public var Login_CodeExpired: String { return self._s[1070]! } - public var Passport_DiscardMessageAction: String { return self._s[1071]! } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1072]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[1073]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1074]! } - public var Month_ShortApril: String { return self._s[1075]! } - public var AuthSessions_CurrentSession: String { return self._s[1076]! } - public var WallpaperPreview_CropTopText: String { return self._s[1080]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1081]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1082]! } - public var Channel_Setup_TypePrivate: String { return self._s[1084]! } - public var Forward_ChannelReadOnly: String { return self._s[1087]! } - public var PhotoEditor_CurvesBlue: String { return self._s[1088]! } - public var AddContact_SharedContactException: String { return self._s[1089]! } - public var UserInfo_BotPrivacy: String { return self._s[1090]! } - public var Notification_PassportValueEmail: String { return self._s[1091]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[1092]! } - public var GroupPermission_NewTitle: String { return self._s[1093]! } - public var CallFeedback_ReasonDropped: String { return self._s[1094]! } - public var GroupInfo_Permissions_AddException: String { return self._s[1095]! } - public var Channel_SignMessages_Help: String { return self._s[1097]! } - public var Undo_ChatDeleted: String { return self._s[1099]! } - public var Conversation_ChatBackground: String { return self._s[1100]! } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1101]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1102]! } - public var Passport_Language_pt: String { return self._s[1103]! } - public var NotificationsSound_Popcorn: String { return self._s[1106]! } - public var AutoNightTheme_Disabled: String { return self._s[1107]! } - public var BlockedUsers_LeavePrefix: String { return self._s[1108]! } - public var WallpaperPreview_CustomColorTopText: String { return self._s[1109]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[1110]! } - public var WallpaperSearch_ColorBlue: String { return self._s[1111]! } + public var Paint_Clear: String { return self._s[1065]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[1066]! } + public var SocksProxySetup_Connecting: String { return self._s[1067]! } + public var ExplicitContent_AlertChannel: String { return self._s[1068]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[1069]! } + public var Conversation_Contact: String { return self._s[1070]! } + public var Login_CodeExpired: String { return self._s[1071]! } + public var Passport_DiscardMessageAction: String { return self._s[1072]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1073]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[1074]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1075]! } + public var Month_ShortApril: String { return self._s[1076]! } + public var AuthSessions_CurrentSession: String { return self._s[1077]! } + public var WallpaperPreview_CropTopText: String { return self._s[1081]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1082]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1083]! } + public var Channel_Setup_TypePrivate: String { return self._s[1085]! } + public var Forward_ChannelReadOnly: String { return self._s[1088]! } + public var PhotoEditor_CurvesBlue: String { return self._s[1089]! } + public var AddContact_SharedContactException: String { return self._s[1090]! } + public var UserInfo_BotPrivacy: String { return self._s[1091]! } + public var Notification_PassportValueEmail: String { return self._s[1092]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[1093]! } + public var GroupPermission_NewTitle: String { return self._s[1094]! } + public var CallFeedback_ReasonDropped: String { return self._s[1095]! } + public var GroupInfo_Permissions_AddException: String { return self._s[1096]! } + public var Channel_SignMessages_Help: String { return self._s[1098]! } + public var Undo_ChatDeleted: String { return self._s[1100]! } + public var Conversation_ChatBackground: String { return self._s[1101]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1102]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1103]! } + public var Passport_Language_pt: String { return self._s[1104]! } + public var NotificationsSound_Popcorn: String { return self._s[1107]! } + public var AutoNightTheme_Disabled: String { return self._s[1108]! } + public var BlockedUsers_LeavePrefix: String { return self._s[1109]! } + public var WallpaperPreview_CustomColorTopText: String { return self._s[1110]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[1111]! } + public var WallpaperSearch_ColorBlue: String { return self._s[1112]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1112]!, self._r[1112]!, [_0]) + return formatWithArgumentRanges(self._s[1113]!, self._r[1113]!, [_0]) } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1113]! } - public var SocksProxySetup_UseForCalls: String { return self._s[1114]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[1116]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1114]! } + public var SocksProxySetup_UseForCalls: String { return self._s[1115]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[1117]! } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1117]!, self._r[1117]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1118]!, self._r[1118]!, ["\(_0)"]) } - public var SocksProxySetup_Hostname: String { return self._s[1120]! } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1121]! } - public var Compose_NewEncryptedChat: String { return self._s[1122]! } - public var Login_CodeFloodError: String { return self._s[1123]! } - public var Calls_TabTitle: String { return self._s[1124]! } - public var Privacy_ProfilePhoto: String { return self._s[1125]! } - public var Passport_Language_he: String { return self._s[1126]! } - public var GroupPermission_Title: String { return self._s[1127]! } + public var SocksProxySetup_Hostname: String { return self._s[1121]! } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1122]! } + public var Compose_NewEncryptedChat: String { return self._s[1123]! } + public var Login_CodeFloodError: String { return self._s[1124]! } + public var Calls_TabTitle: String { return self._s[1125]! } + public var Privacy_ProfilePhoto: String { return self._s[1126]! } + public var Passport_Language_he: String { return self._s[1127]! } + public var GroupPermission_Title: String { return self._s[1128]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1128]!, self._r[1128]!, [_0]) + return formatWithArgumentRanges(self._s[1129]!, self._r[1129]!, [_0]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1129]! } - public var ChatList_DeleteForCurrentUser: String { return self._s[1130]! } - public var Tour_Text1: String { return self._s[1131]! } - public var Channel_EditAdmin_TransferOwnership: String { return self._s[1132]! } - public var Month_ShortFebruary: String { return self._s[1133]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1134]! } - public var NotificationsSound_Glass: String { return self._s[1135]! } - public var Appearance_ThemeNightBlue: String { return self._s[1136]! } - public var CheckoutInfo_Pay: String { return self._s[1137]! } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1139]! } - public var Call_CallAgain: String { return self._s[1141]! } - public var AttachmentMenu_SendAsFile: String { return self._s[1142]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[1143]! } - public var Passport_InvalidPasswordError: String { return self._s[1144]! } - public var Watch_Message_Game: String { return self._s[1145]! } - public var Stickers_Install: String { return self._s[1146]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1147]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[1149]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1150]! } - public var AuthSessions_OtherSessions: String { return self._s[1151]! } - public var Channel_Username_Help: String { return self._s[1152]! } - public var Camera_Title: String { return self._s[1153]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1155]! } - public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1156]! } - public var Channel_AdminLog_SendPolls: String { return self._s[1157]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1158]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1159]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1160]! } - public var Conversation_RestrictedStickers: String { return self._s[1161]! } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[1163]! } - public var UserInfo_TelegramCall: String { return self._s[1165]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1166]! } - public var CreatePoll_OptionsHeader: String { return self._s[1167]! } - public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1168]! } - public var ArchivedChats_IntroTitle1: String { return self._s[1169]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1170]! } - public var Passport_Identity_EditPersonalDetails: String { return self._s[1171]! } + public var GroupPermission_NoChangeInfo: String { return self._s[1130]! } + public var ChatList_DeleteForCurrentUser: String { return self._s[1131]! } + public var Tour_Text1: String { return self._s[1132]! } + public var Channel_EditAdmin_TransferOwnership: String { return self._s[1133]! } + public var Month_ShortFebruary: String { return self._s[1134]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1135]! } + public var NotificationsSound_Glass: String { return self._s[1136]! } + public var Appearance_ThemeNightBlue: String { return self._s[1137]! } + public var CheckoutInfo_Pay: String { return self._s[1138]! } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1140]! } + public var Call_CallAgain: String { return self._s[1142]! } + public var AttachmentMenu_SendAsFile: String { return self._s[1143]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[1144]! } + public var Passport_InvalidPasswordError: String { return self._s[1145]! } + public var Watch_Message_Game: String { return self._s[1146]! } + public var Stickers_Install: String { return self._s[1147]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1148]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[1150]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1151]! } + public var AuthSessions_OtherSessions: String { return self._s[1152]! } + public var Channel_Username_Help: String { return self._s[1153]! } + public var Camera_Title: String { return self._s[1154]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1156]! } + public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1157]! } + public var Channel_AdminLog_SendPolls: String { return self._s[1158]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1159]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1160]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1161]! } + public var Conversation_RestrictedStickers: String { return self._s[1162]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[1164]! } + public var UserInfo_TelegramCall: String { return self._s[1166]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1167]! } + public var CreatePoll_OptionsHeader: String { return self._s[1168]! } + public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1169]! } + public var ArchivedChats_IntroTitle1: String { return self._s[1170]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1171]! } + public var Passport_Identity_EditPersonalDetails: String { return self._s[1172]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1172]!, self._r[1172]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1173]!, self._r[1173]!, [_1, _2, _3]) } - public var Settings_SaveEditedPhotos: String { return self._s[1173]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[1174]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1175]! } - public var Conversation_MessageDialogRetry: String { return self._s[1176]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[1177]! } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1178]! } - public var Group_Setup_TypeHeader: String { return self._s[1179]! } - public var Paint_RecentStickers: String { return self._s[1180]! } - public var PhotoEditor_GrainTool: String { return self._s[1181]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[1182]! } - public var EmptyGroupInfo_Line4: String { return self._s[1183]! } - public var Watch_AuthRequired: String { return self._s[1185]! } + public var Settings_SaveEditedPhotos: String { return self._s[1174]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[1175]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1176]! } + public var Conversation_MessageDialogRetry: String { return self._s[1177]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[1178]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1179]! } + public var Group_Setup_TypeHeader: String { return self._s[1180]! } + public var Paint_RecentStickers: String { return self._s[1181]! } + public var PhotoEditor_GrainTool: String { return self._s[1182]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[1183]! } + public var EmptyGroupInfo_Line4: String { return self._s[1184]! } + public var Watch_AuthRequired: String { return self._s[1186]! } public func Passport_Email_UseTelegramEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1186]!, self._r[1186]!, [_0]) + return formatWithArgumentRanges(self._s[1187]!, self._r[1187]!, [_0]) } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1187]! } - public var ChannelIntro_Text: String { return self._s[1188]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[1189]! } - public var GroupPermission_NoSendMedia: String { return self._s[1190]! } - public var Calls_AddTab: String { return self._s[1191]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[1192]! } - public var Channel_AdminLog_EmptyFilterText: String { return self._s[1193]! } - public var Notification_MessageLifetime1d: String { return self._s[1194]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1195]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1196]! } - public var Passport_Identity_GenderFemale: String { return self._s[1197]! } - public var BlockedUsers_BlockTitle: String { return self._s[1198]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1188]! } + public var ChannelIntro_Text: String { return self._s[1189]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[1190]! } + public var GroupPermission_NoSendMedia: String { return self._s[1191]! } + public var Calls_AddTab: String { return self._s[1192]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[1193]! } + public var Channel_AdminLog_EmptyFilterText: String { return self._s[1194]! } + public var Notification_MessageLifetime1d: String { return self._s[1195]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1196]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1197]! } + public var Passport_Identity_GenderFemale: String { return self._s[1198]! } + public var BlockedUsers_BlockTitle: String { return self._s[1199]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1199]!, self._r[1199]!, [_1]) + return formatWithArgumentRanges(self._s[1200]!, self._r[1200]!, [_1]) } - public var Weekday_Yesterday: String { return self._s[1200]! } - public var WallpaperSearch_ColorBlack: String { return self._s[1201]! } - public var ChatList_ArchiveAction: String { return self._s[1202]! } - public var AutoNightTheme_Scheduled: String { return self._s[1203]! } + public var Weekday_Yesterday: String { return self._s[1201]! } + public var WallpaperSearch_ColorBlack: String { return self._s[1202]! } + public var ChatList_ArchiveAction: String { return self._s[1203]! } + public var AutoNightTheme_Scheduled: String { return self._s[1204]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1204]!, self._r[1204]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[1205]!, self._r[1205]!, [_1, _2, _3, _4, _5, _6]) } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1205]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1206]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1206]!, self._r[1206]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1207]!, self._r[1207]!, [_1, _2]) } - public var CreatePoll_Create: String { return self._s[1207]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1208]! } + public var CreatePoll_Create: String { return self._s[1208]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1209]! } public func Notification_CallFormat(_ _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 Checkout_ErrorProviderAccountInvalid: String { return self._s[1210]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[1212]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1211]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[1213]! } public func PUSH_PINNED_GAME_SCORE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1213]!, self._r[1213]!, [_1]) + return formatWithArgumentRanges(self._s[1214]!, self._r[1214]!, [_1]) } - public var Preview_OpenInInstagram: String { return self._s[1214]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1215]! } + public var Preview_OpenInInstagram: String { return self._s[1215]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1216]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1216]!, self._r[1216]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1217]!, self._r[1217]!, [_1, _2, _3]) } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1217]!, self._r[1217]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1218]!, self._r[1218]!, [_1, _2]) } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1218]! } - public var ArchivedChats_IntroText3: String { return self._s[1219]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[1220]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1221]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1222]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1219]! } + public var ArchivedChats_IntroText3: String { return self._s[1220]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[1221]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1222]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1223]! } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1223]!, self._r[1223]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1224]!, self._r[1224]!, [_1, _2, _3]) } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1225]! } - public var FastTwoStepSetup_HintSection: String { return self._s[1226]! } - public var Wallpaper_PhotoLibrary: String { return self._s[1227]! } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1228]! } - public var Gif_NoGifsFound: String { return self._s[1229]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[1230]! } - public var GroupInfo_ActionPromote: String { return self._s[1231]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[1232]! } - public var GroupInfo_Permissions_Title: String { return self._s[1233]! } - public var Permissions_ContactsText_v0: String { return self._s[1234]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1235]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1238]! } - public var Passport_FieldEmailHelp: String { return self._s[1239]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1226]! } + public var FastTwoStepSetup_HintSection: String { return self._s[1227]! } + public var Wallpaper_PhotoLibrary: String { return self._s[1228]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1229]! } + public var Gif_NoGifsFound: String { return self._s[1230]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[1231]! } + public var GroupInfo_ActionPromote: String { return self._s[1232]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[1233]! } + public var GroupInfo_Permissions_Title: String { return self._s[1234]! } + public var Permissions_ContactsText_v0: String { return self._s[1235]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1236]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1239]! } + public var Passport_FieldEmailHelp: String { return self._s[1240]! } public func Activity_RemindAboutUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1240]!, self._r[1240]!, [_0]) + return formatWithArgumentRanges(self._s[1241]!, self._r[1241]!, [_0]) } - public var Passport_Identity_GenderPlaceholder: String { return self._s[1241]! } - public var Weekday_ShortSaturday: String { return self._s[1242]! } - public var ContactInfo_PhoneLabelMain: String { return self._s[1243]! } - public var Watch_Conversation_UserInfo: String { return self._s[1244]! } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1245]! } - public var PrivacyLastSeenSettings_Title: String { return self._s[1246]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[1247]! } - public var PhotoEditor_VignetteTool: String { return self._s[1248]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1249]! } - public var Passport_Language_et: String { return self._s[1250]! } - public var AppUpgrade_Running: String { return self._s[1251]! } - public var Channel_DiscussionGroup_Info: String { return self._s[1253]! } - public var Passport_Language_bg: String { return self._s[1254]! } - public var Stickers_NoStickersFound: String { return self._s[1256]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[1242]! } + public var Weekday_ShortSaturday: String { return self._s[1243]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[1244]! } + public var Watch_Conversation_UserInfo: String { return self._s[1245]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1246]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[1247]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[1248]! } + public var PhotoEditor_VignetteTool: String { return self._s[1249]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1250]! } + public var Passport_Language_et: String { return self._s[1251]! } + public var AppUpgrade_Running: String { return self._s[1252]! } + public var Channel_DiscussionGroup_Info: String { return self._s[1254]! } + public var Passport_Language_bg: String { return self._s[1255]! } + public var Stickers_NoStickersFound: String { return self._s[1257]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1258]!, self._r[1258]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1259]!, self._r[1259]!, [_1, _2]) } - public var Settings_About: String { return self._s[1259]! } + public var Settings_About: String { return self._s[1260]! } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1260]!, self._r[1260]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1261]!, self._r[1261]!, [_0, _1, _2]) } - public var KeyCommand_NewMessage: String { return self._s[1262]! } - public var Group_ErrorAddBlocked: String { return self._s[1263]! } + public var KeyCommand_NewMessage: String { return self._s[1263]! } + public var Group_ErrorAddBlocked: String { return self._s[1264]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1264]!, self._r[1264]!, [_0]) + return formatWithArgumentRanges(self._s[1265]!, self._r[1265]!, [_0]) } - public var Map_LocationTitle: String { return self._s[1265]! } - public var ReportGroupLocation_Title: String { return self._s[1266]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1267]! } - public var Cache_ClearProgress: String { return self._s[1268]! } + public var Map_LocationTitle: String { return self._s[1266]! } + public var ReportGroupLocation_Title: String { return self._s[1267]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1268]! } + public var Cache_ClearProgress: String { return self._s[1269]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1269]!, self._r[1269]!, [_0]) + return formatWithArgumentRanges(self._s[1270]!, self._r[1270]!, [_0]) } - public var GroupRemoved_AddToGroup: String { return self._s[1270]! } - public var Passport_UpdateRequiredError: String { return self._s[1271]! } + public var GroupRemoved_AddToGroup: String { return self._s[1271]! } + public var Passport_UpdateRequiredError: String { return self._s[1272]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1272]!, self._r[1272]!, [_1]) + return formatWithArgumentRanges(self._s[1273]!, self._r[1273]!, [_1]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[1274]! } - public var Passport_Identity_MainPageHelp: String { return self._s[1275]! } - public var Conversation_StatusKickedFromGroup: String { return self._s[1276]! } - public var Passport_Language_ka: String { return self._s[1277]! } - public var Call_Decline: String { return self._s[1278]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[1279]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[1275]! } + public var Passport_Identity_MainPageHelp: String { return self._s[1276]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[1277]! } + public var Passport_Language_ka: String { return self._s[1278]! } + public var Call_Decline: String { return self._s[1279]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[1280]! } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1282]!, self._r[1282]!, [_0]) + return formatWithArgumentRanges(self._s[1283]!, self._r[1283]!, [_0]) } - public var CallFeedback_Send: String { return self._s[1283]! } + public var CallFeedback_Send: String { return self._s[1284]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1285]!, self._r[1285]!, [_1, _2]) } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1285]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1287]! } - public var Passport_DeletePassport: String { return self._s[1288]! } - public var Appearance_AppIconFilled: String { return self._s[1289]! } - public var Privacy_Calls_P2PAlways: String { return self._s[1290]! } - public var Month_ShortDecember: String { return self._s[1291]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1293]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1286]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1288]! } + public var Passport_DeletePassport: String { return self._s[1289]! } + public var Appearance_AppIconFilled: String { return self._s[1290]! } + public var Privacy_Calls_P2PAlways: String { return self._s[1291]! } + public var Month_ShortDecember: String { return self._s[1292]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1294]! } public func Contacts_AccessDeniedHelpLandscape(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1294]!, self._r[1294]!, [_0]) + return formatWithArgumentRanges(self._s[1295]!, self._r[1295]!, [_0]) } - public var Channel_Stickers_Searching: String { return self._s[1295]! } - public var Conversation_EncryptedDescription1: String { return self._s[1296]! } - public var Conversation_EncryptedDescription2: String { return self._s[1297]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[1298]! } - public var Conversation_EncryptedDescription3: String { return self._s[1299]! } - public var PhotoEditor_SharpenTool: String { return self._s[1300]! } + public var Channel_Stickers_Searching: String { return self._s[1296]! } + public var Conversation_EncryptedDescription1: String { return self._s[1297]! } + public var Conversation_EncryptedDescription2: String { return self._s[1298]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[1299]! } + public var Conversation_EncryptedDescription3: String { return self._s[1300]! } + public var PhotoEditor_SharpenTool: String { return self._s[1301]! } public func Conversation_AddNameToContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1301]!, self._r[1301]!, [_0]) + return formatWithArgumentRanges(self._s[1302]!, self._r[1302]!, [_0]) } - public var Conversation_EncryptedDescription4: String { return self._s[1303]! } - public var Channel_Members_AddMembers: String { return self._s[1304]! } - public var Wallpaper_Search: String { return self._s[1305]! } - public var Weekday_Friday: String { return self._s[1306]! } - public var Privacy_ContactsSync: String { return self._s[1307]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1308]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1309]! } + public var Conversation_EncryptedDescription4: String { return self._s[1304]! } + public var Channel_Members_AddMembers: String { return self._s[1305]! } + public var Wallpaper_Search: String { return self._s[1306]! } + public var Weekday_Friday: String { return self._s[1307]! } + public var Privacy_ContactsSync: String { return self._s[1308]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1309]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1310]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1310]!, self._r[1310]!, [_0]) + return formatWithArgumentRanges(self._s[1311]!, self._r[1311]!, [_0]) } - public var GroupInfo_Permissions_Removed: String { return self._s[1311]! } - public var Passport_Identity_GenderMale: String { return self._s[1312]! } + public var GroupInfo_Permissions_Removed: String { return self._s[1312]! } + public var Passport_Identity_GenderMale: String { return self._s[1313]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1313]!, self._r[1313]!, [_0]) + return formatWithArgumentRanges(self._s[1314]!, self._r[1314]!, [_0]) } - public var Notifications_PermissionsKeepDisabled: String { return self._s[1314]! } - public var Conversation_JumpToDate: String { return self._s[1315]! } - public var Contacts_GlobalSearch: String { return self._s[1316]! } - public var AutoDownloadSettings_ResetHelp: String { return self._s[1317]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[1318]! } - public var Profile_MessageLifetime1d: String { return self._s[1319]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[1315]! } + public var Conversation_JumpToDate: String { return self._s[1316]! } + public var Contacts_GlobalSearch: String { return self._s[1317]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[1318]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[1319]! } + public var Profile_MessageLifetime1d: String { return self._s[1320]! } public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1320]!, self._r[1320]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1321]!, self._r[1321]!, [_1, _2]) } - public var StickerPack_BuiltinPackName: String { return self._s[1323]! } + public var StickerPack_BuiltinPackName: String { return self._s[1324]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1324]!, self._r[1324]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1325]!, self._r[1325]!, [_1, _2]) } - public var Passport_InfoTitle: String { return self._s[1326]! } - public var Notifications_PermissionsUnreachableText: String { return self._s[1327]! } + public var Passport_InfoTitle: String { return self._s[1327]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[1328]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1331]!, self._r[1331]!, [_0]) + return formatWithArgumentRanges(self._s[1332]!, self._r[1332]!, [_0]) } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1332]!, self._r[1332]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1333]!, self._r[1333]!, [_1, _2]) } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1333]! } - public var Profile_BotInfo: String { return self._s[1334]! } - public var Watch_Compose_CreateMessage: String { return self._s[1335]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1336]! } - public var Month_ShortNovember: String { return self._s[1337]! } - public var Conversation_ScamWarning: String { return self._s[1338]! } - public var Wallpaper_SetCustomBackground: String { return self._s[1339]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1340]! } - public var NotificationsSound_Chime: String { return self._s[1341]! } - public var Passport_Language_ko: String { return self._s[1343]! } - public var InviteText_URL: String { return self._s[1344]! } - public var TextFormat_Monospace: String { return self._s[1345]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1334]! } + public var Profile_BotInfo: String { return self._s[1335]! } + public var Watch_Compose_CreateMessage: String { return self._s[1336]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1337]! } + public var Month_ShortNovember: String { return self._s[1338]! } + public var Conversation_ScamWarning: String { return self._s[1339]! } + public var Wallpaper_SetCustomBackground: String { return self._s[1340]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1341]! } + public var NotificationsSound_Chime: String { return self._s[1342]! } + public var Passport_Language_ko: String { return self._s[1344]! } + public var InviteText_URL: String { return self._s[1345]! } + public var TextFormat_Monospace: String { return self._s[1346]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1346]!, self._r[1346]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1347]!, self._r[1347]!, [_1, _2, _3]) } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1347]!, self._r[1347]!, [_0]) + return formatWithArgumentRanges(self._s[1348]!, self._r[1348]!, [_0]) } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1348]!, self._r[1348]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1349]!, self._r[1349]!, [_1, _2]) } - public var Passport_InfoLearnMore: String { return self._s[1350]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[1351]! } - public var Passport_Identity_AddIdentityCard: String { return self._s[1352]! } - public var Your_card_has_expired: String { return self._s[1353]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[1354]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1355]! } - public var Conversation_Report: String { return self._s[1359]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1360]! } - public var Notification_MessageLifetime1m: String { return self._s[1361]! } - public var Privacy_ContactsTitle: String { return self._s[1362]! } - public var Conversation_ShareMyContactInfo: String { return self._s[1363]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1364]! } - public var Channel_Members_Title: String { return self._s[1365]! } - public var Map_OpenInWaze: String { return self._s[1366]! } - public var Login_PhoneBannedError: String { return self._s[1367]! } + public var Passport_InfoLearnMore: String { return self._s[1351]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[1352]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[1353]! } + public var Your_card_has_expired: String { return self._s[1354]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[1355]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1356]! } + public var Conversation_Report: String { return self._s[1360]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1361]! } + public var Notification_MessageLifetime1m: String { return self._s[1362]! } + public var Privacy_ContactsTitle: String { return self._s[1363]! } + public var Conversation_ShareMyContactInfo: String { return self._s[1364]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1365]! } + public var Channel_Members_Title: String { return self._s[1366]! } + public var Map_OpenInWaze: String { return self._s[1367]! } + public var Login_PhoneBannedError: String { return self._s[1368]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1368]!, self._r[1368]!, [_0]) + return formatWithArgumentRanges(self._s[1369]!, self._r[1369]!, [_0]) } - public var Group_Management_AddModeratorHelp: String { return self._s[1369]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[1370]! } - public var Common_OK: String { return self._s[1371]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1372]! } - public var Cache_Music: String { return self._s[1373]! } - public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1374]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1375]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1376]! } + public var Group_Management_AddModeratorHelp: String { return self._s[1370]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[1371]! } + public var Common_OK: String { return self._s[1372]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1373]! } + public var Cache_Music: String { return self._s[1374]! } + public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1375]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1376]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1377]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1377]!, self._r[1377]!, [_1]) + return formatWithArgumentRanges(self._s[1378]!, self._r[1378]!, [_1]) } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1378]!, self._r[1378]!, [_0]) + return formatWithArgumentRanges(self._s[1379]!, self._r[1379]!, [_0]) } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1380]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[1381]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1383]! } - public var State_ConnectingToProxyInfo: String { return self._s[1384]! } - public var Message_VideoMessage: String { return self._s[1386]! } - public var ChannelInfo_DeleteChannel: String { return self._s[1387]! } - public var ContactInfo_PhoneLabelOther: String { return self._s[1388]! } - public var Channel_EditAdmin_CannotEdit: String { return self._s[1389]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[1390]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[1391]! } - public var Activity_RecordingAudio: String { return self._s[1392]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[1393]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1394]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1381]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[1382]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1384]! } + public var State_ConnectingToProxyInfo: String { return self._s[1385]! } + public var Message_VideoMessage: String { return self._s[1387]! } + public var ChannelInfo_DeleteChannel: String { return self._s[1388]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[1389]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[1390]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[1391]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[1392]! } + public var Activity_RecordingAudio: String { return self._s[1393]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[1394]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1395]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1396]!, self._r[1396]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1397]!, self._r[1397]!, [_0, _1]) } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1400]!, self._r[1400]!, [_0]) + return formatWithArgumentRanges(self._s[1401]!, self._r[1401]!, [_0]) } - public var Conversation_ApplyLocalization: String { return self._s[1401]! } - public var UserInfo_AddPhone: String { return self._s[1402]! } - public var Map_ShareLiveLocationHelp: String { return self._s[1403]! } + public var Conversation_ApplyLocalization: String { return self._s[1402]! } + public var UserInfo_AddPhone: String { return self._s[1403]! } + public var Map_ShareLiveLocationHelp: String { return self._s[1404]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1404]!, self._r[1404]!, [_0]) + return formatWithArgumentRanges(self._s[1405]!, self._r[1405]!, [_0]) } - public var Passport_Scans: String { return self._s[1406]! } - public var BlockedUsers_Unblock: String { return self._s[1407]! } + public var Passport_Scans: String { return self._s[1407]! } + public var BlockedUsers_Unblock: String { return self._s[1408]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1408]!, self._r[1408]!, [_1]) + return formatWithArgumentRanges(self._s[1409]!, self._r[1409]!, [_1]) } - public var Channel_Management_LabelCreator: String { return self._s[1409]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[1410]! } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1411]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1412]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1413]! } + public var Channel_Management_LabelCreator: String { return self._s[1410]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[1411]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1412]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1413]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1414]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1414]!, self._r[1414]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1415]!, self._r[1415]!, [_0, _1, _2]) } - public var Login_PhoneNumberHelp: String { return self._s[1415]! } - public var LastSeen_ALongTimeAgo: String { return self._s[1416]! } - public var Channel_AdminLog_CanPinMessages: String { return self._s[1417]! } - public var ChannelIntro_CreateChannel: String { return self._s[1418]! } - public var Conversation_UnreadMessages: String { return self._s[1419]! } - public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1420]! } - public var Channel_AdminLog_EmptyText: String { return self._s[1421]! } - public var Notification_GroupActivated: String { return self._s[1422]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[1423]! } + public var Login_PhoneNumberHelp: String { return self._s[1416]! } + public var LastSeen_ALongTimeAgo: String { return self._s[1417]! } + public var Channel_AdminLog_CanPinMessages: String { return self._s[1418]! } + public var ChannelIntro_CreateChannel: String { return self._s[1419]! } + public var Conversation_UnreadMessages: String { return self._s[1420]! } + public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1421]! } + public var Channel_AdminLog_EmptyText: String { return self._s[1422]! } + public var Notification_GroupActivated: String { return self._s[1423]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[1424]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1424]!, self._r[1424]!, [_0]) + return formatWithArgumentRanges(self._s[1425]!, self._r[1425]!, [_0]) } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1425]!, self._r[1425]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1426]!, self._r[1426]!, [_0, _1]) } - public var GroupInfo_ConvertToSupergroup: String { return self._s[1427]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[1428]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1428]!, self._r[1428]!, [_0]) + return formatWithArgumentRanges(self._s[1429]!, self._r[1429]!, [_0]) } - public var Undo_DeletedChannel: String { return self._s[1429]! } - public var CallFeedback_AddComment: String { return self._s[1430]! } + public var Undo_DeletedChannel: String { return self._s[1430]! } + public var CallFeedback_AddComment: String { return self._s[1431]! } public func Conversation_OpenBotLinkAllowMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1431]!, self._r[1431]!, [_0]) + return formatWithArgumentRanges(self._s[1432]!, self._r[1432]!, [_0]) } - public var Document_TargetConfirmationFormat: String { return self._s[1432]! } + public var Document_TargetConfirmationFormat: String { return self._s[1433]! } public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1433]!, self._r[1433]!, [_0]) + return formatWithArgumentRanges(self._s[1434]!, self._r[1434]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[1434]! } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[1435]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1435]!, self._r[1435]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[1436]!, self._r[1436]!, [_1, _2, _3, _4]) } - public var Contacts_SortByName: String { return self._s[1436]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1437]! } + public var Contacts_SortByName: String { return self._s[1437]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1438]! } public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1439]!, self._r[1439]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1440]!, self._r[1440]!, [_1, _2, _3]) } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1440]! } - public var Conversation_ClearSelfHistory: String { return self._s[1441]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1442]! } - public var PasscodeSettings_DoNotMatch: String { return self._s[1443]! } - public var Stickers_SuggestNone: String { return self._s[1444]! } - public var ChatSettings_Cache: String { return self._s[1445]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1446]! } - public var Media_ShareThisPhoto: String { return self._s[1447]! } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[1448]! } - public var Conversation_ContextMenuCopyLink: String { return self._s[1449]! } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1450]! } - public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1451]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1452]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[1453]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1455]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1456]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[1457]! } - public var Map_OpenIn: String { return self._s[1458]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1441]! } + public var Conversation_ClearSelfHistory: String { return self._s[1442]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1443]! } + public var PasscodeSettings_DoNotMatch: String { return self._s[1444]! } + public var Stickers_SuggestNone: String { return self._s[1445]! } + public var ChatSettings_Cache: String { return self._s[1446]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1447]! } + public var Media_ShareThisPhoto: String { return self._s[1448]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[1449]! } + public var Conversation_ContextMenuCopyLink: String { return self._s[1450]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1451]! } + public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1452]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1453]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[1454]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1456]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1457]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[1458]! } + public var Map_OpenIn: String { return self._s[1459]! } public func PUSH_PHONE_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1461]!, self._r[1461]!, [_1]) + return formatWithArgumentRanges(self._s[1462]!, self._r[1462]!, [_1]) } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1462]!, self._r[1462]!, [_0]) + return formatWithArgumentRanges(self._s[1463]!, self._r[1463]!, [_0]) } - public var MessagePoll_LabelClosed: String { return self._s[1463]! } - public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1465]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1466]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[1467]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1468]! } - public var Login_SelectCountry_Title: String { return self._s[1469]! } - public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1470]! } + public var MessagePoll_LabelClosed: String { return self._s[1464]! } + public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1466]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1467]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[1468]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1469]! } + public var Login_SelectCountry_Title: String { return self._s[1470]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1471]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1471]!, self._r[1471]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1472]!, self._r[1472]!, [_1, _2]) } - public var Channel_AdminLog_ChangeInfo: String { return self._s[1472]! } - public var Watch_Suggestion_BRB: String { return self._s[1473]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[1474]! } - public var Contacts_PermissionsTitle: String { return self._s[1475]! } - public var Conversation_RestrictedInline: String { return self._s[1476]! } - public var StickerPack_ViewPack: String { return self._s[1478]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[1473]! } + public var Watch_Suggestion_BRB: String { return self._s[1474]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[1475]! } + public var Contacts_PermissionsTitle: String { return self._s[1476]! } + public var Conversation_RestrictedInline: String { return self._s[1477]! } + public var StickerPack_ViewPack: String { return self._s[1479]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1479]!, self._r[1479]!, [_0]) + return formatWithArgumentRanges(self._s[1480]!, self._r[1480]!, [_0]) } - public var Compose_NewChannel: String { return self._s[1481]! } - public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1484]! } - public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1486]! } - public var Channel_Info_Stickers: String { return self._s[1487]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[1488]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1489]! } - public var Passport_DeletePersonalDetails: String { return self._s[1490]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[1491]! } - public var Channel_DiscussionGroupInfo: String { return self._s[1492]! } - public var Conversation_SearchNoResults: String { return self._s[1494]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1495]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1496]! } - public var Login_Code: String { return self._s[1497]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1498]! } - public var Weekday_ShortThursday: String { return self._s[1499]! } - public var Resolve_ErrorNotFound: String { return self._s[1501]! } - public var LastSeen_Offline: String { return self._s[1502]! } - public var PeopleNearby_NoMembers: String { return self._s[1503]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[1504]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1505]! } - public var GroupInfo_Title: String { return self._s[1506]! } - public var NotificationsSound_Note: String { return self._s[1507]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[1508]! } - public var Watch_Message_Poll: String { return self._s[1509]! } - public var Privacy_Calls: String { return self._s[1510]! } - public var Month_ShortAugust: String { return self._s[1511]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[1512]! } - public var Notifications_Reset: String { return self._s[1513]! } - public var Conversation_Pin: String { return self._s[1514]! } - public var Passport_Language_lv: String { return self._s[1515]! } - public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1516]! } - public var BlockedUsers_Info: String { return self._s[1517]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1519]! } - public var Watch_Conversation_Unblock: String { return self._s[1521]! } + public var Compose_NewChannel: String { return self._s[1482]! } + public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1485]! } + public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1487]! } + public var Channel_Info_Stickers: String { return self._s[1488]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[1489]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1490]! } + public var Passport_DeletePersonalDetails: String { return self._s[1491]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[1492]! } + public var Channel_DiscussionGroupInfo: String { return self._s[1493]! } + public var Conversation_SearchNoResults: String { return self._s[1495]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1496]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1497]! } + public var Login_Code: String { return self._s[1498]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1499]! } + public var Weekday_ShortThursday: String { return self._s[1500]! } + public var Resolve_ErrorNotFound: String { return self._s[1502]! } + public var LastSeen_Offline: String { return self._s[1503]! } + public var PeopleNearby_NoMembers: String { return self._s[1504]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[1505]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1506]! } + public var GroupInfo_Title: String { return self._s[1507]! } + public var NotificationsSound_Note: String { return self._s[1508]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[1509]! } + public var Watch_Message_Poll: String { return self._s[1510]! } + public var Privacy_Calls: String { return self._s[1511]! } + public var Month_ShortAugust: String { return self._s[1512]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[1513]! } + public var Notifications_Reset: String { return self._s[1514]! } + public var Conversation_Pin: String { return self._s[1515]! } + public var Passport_Language_lv: String { return self._s[1516]! } + public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1517]! } + public var BlockedUsers_Info: String { return self._s[1518]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1520]! } + public var Watch_Conversation_Unblock: String { return self._s[1522]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1522]!, self._r[1522]!, [_0]) + return formatWithArgumentRanges(self._s[1523]!, self._r[1523]!, [_0]) } - public var CloudStorage_Title: String { return self._s[1523]! } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1524]! } + public var CloudStorage_Title: String { return self._s[1524]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1525]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1525]!, self._r[1525]!, [_0]) + return formatWithArgumentRanges(self._s[1526]!, self._r[1526]!, [_0]) } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1526]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[1527]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1528]! } - public var Passport_Address_EditBankStatement: String { return self._s[1529]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1527]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[1528]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1529]! } + public var Passport_Address_EditBankStatement: String { return self._s[1530]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1530]!, self._r[1530]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1531]!, self._r[1531]!, [_1, _2]) } - public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1531]! } - public var ShareMenu_Comment: String { return self._s[1532]! } - public var Permissions_ContactsTitle_v0: String { return self._s[1533]! } - public var Notifications_PermissionsTitle: String { return self._s[1534]! } - public var GroupPermission_NoSendLinks: String { return self._s[1535]! } - public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1536]! } - public var Settings_Support: String { return self._s[1537]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1538]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1539]! } - public var Privacy_Forwards_Preview: String { return self._s[1540]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[1541]! } - public var Watch_Stickers_StickerPacks: String { return self._s[1542]! } - public var Common_Select: String { return self._s[1544]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1545]! } - public var WallpaperSearch_ColorGray: String { return self._s[1547]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1548]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1549]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[1550]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1551]! } - public var Widget_AuthRequired: String { return self._s[1552]! } - public var Camera_FlashOn: String { return self._s[1553]! } - public var Channel_Stickers_NotFoundHelp: String { return self._s[1554]! } - public var Watch_Suggestion_OK: String { return self._s[1555]! } + public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1532]! } + public var ShareMenu_Comment: String { return self._s[1533]! } + public var Permissions_ContactsTitle_v0: String { return self._s[1534]! } + public var Notifications_PermissionsTitle: String { return self._s[1535]! } + public var GroupPermission_NoSendLinks: String { return self._s[1536]! } + public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1537]! } + public var Settings_Support: String { return self._s[1538]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1539]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1540]! } + public var Privacy_Forwards_Preview: String { return self._s[1541]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[1542]! } + public var Watch_Stickers_StickerPacks: String { return self._s[1543]! } + public var Common_Select: String { return self._s[1545]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1546]! } + public var WallpaperSearch_ColorGray: String { return self._s[1548]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1549]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1550]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[1551]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1552]! } + public var Widget_AuthRequired: String { return self._s[1553]! } + public var Camera_FlashOn: String { return self._s[1554]! } + public var Channel_Stickers_NotFoundHelp: String { return self._s[1555]! } + public var Watch_Suggestion_OK: String { return self._s[1556]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1557]!, self._r[1557]!, [_0]) + return formatWithArgumentRanges(self._s[1558]!, self._r[1558]!, [_0]) } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1559]!, self._r[1559]!, [_0]) + return formatWithArgumentRanges(self._s[1560]!, self._r[1560]!, [_0]) } - public var DialogList_AdLabel: String { return self._s[1560]! } - public var WatchRemote_NotificationText: String { return self._s[1561]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1562]! } - public var Conversation_ReportSpam: String { return self._s[1563]! } - public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1564]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[1566]! } - public var PhoneLabel_Title: String { return self._s[1567]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[1568]! } - public var Settings_ChangePhoneNumber: String { return self._s[1569]! } - public var Notifications_ExceptionsTitle: String { return self._s[1570]! } - public var Notifications_AlertTones: String { return self._s[1571]! } - public var Call_ReportIncludeLogDescription: String { return self._s[1572]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1573]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1574]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[1576]! } - public var ReportPeer_ReasonOther: String { return self._s[1577]! } - public var KeyCommand_ScrollDown: String { return self._s[1579]! } + public var TextFormat_Strikethrough: String { return self._s[1561]! } + public var DialogList_AdLabel: String { return self._s[1562]! } + public var WatchRemote_NotificationText: String { return self._s[1563]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1564]! } + public var Conversation_ReportSpam: String { return self._s[1565]! } + public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1566]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[1568]! } + public var PhoneLabel_Title: String { return self._s[1569]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[1570]! } + public var Settings_ChangePhoneNumber: String { return self._s[1571]! } + public var Notifications_ExceptionsTitle: String { return self._s[1572]! } + public var Notifications_AlertTones: String { return self._s[1573]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1574]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1575]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1576]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[1578]! } + public var ReportPeer_ReasonOther: String { return self._s[1579]! } + public var KeyCommand_ScrollDown: String { return self._s[1581]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1580]!, self._r[1580]!, [_0]) + return formatWithArgumentRanges(self._s[1582]!, self._r[1582]!, [_0]) } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1581]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1582]! } - public var AuthSessions_LogOut: String { return self._s[1583]! } - public var Passport_Identity_TypeInternalPassport: String { return self._s[1584]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1585]! } - public var Passport_Phone_Title: String { return self._s[1586]! } - public var Settings_PhoneNumber: String { return self._s[1587]! } - public var NotificationsSound_Alert: String { return self._s[1588]! } - public var WebSearch_SearchNoResults: String { return self._s[1589]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1591]! } - public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1592]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[1593]! } - public var PhotoEditor_CurvesTool: String { return self._s[1594]! } - public var Checkout_PaymentMethod: String { return self._s[1596]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1583]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1584]! } + public var AuthSessions_LogOut: String { return self._s[1585]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[1586]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1587]! } + public var Passport_Phone_Title: String { return self._s[1588]! } + public var Settings_PhoneNumber: String { return self._s[1589]! } + public var NotificationsSound_Alert: String { return self._s[1590]! } + public var WebSearch_SearchNoResults: String { return self._s[1591]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1593]! } + public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1594]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[1595]! } + public var PhotoEditor_CurvesTool: String { return self._s[1596]! } + public var Checkout_PaymentMethod: String { return self._s[1598]! } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1597]!, self._r[1597]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1599]!, self._r[1599]!, [_1, _2]) } - public var Contacts_AccessDeniedError: String { return self._s[1598]! } - public var Camera_PhotoMode: String { return self._s[1601]! } - public var Passport_Address_AddUtilityBill: String { return self._s[1602]! } - public var CallSettings_OnMobile: String { return self._s[1603]! } - public var Tour_Text2: String { return self._s[1604]! } + public var Contacts_AccessDeniedError: String { return self._s[1600]! } + public var Camera_PhotoMode: String { return self._s[1603]! } + public var Passport_Address_AddUtilityBill: String { return self._s[1604]! } + public var CallSettings_OnMobile: String { return self._s[1605]! } + public var Tour_Text2: String { return self._s[1606]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1605]!, self._r[1605]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1607]!, self._r[1607]!, [_1, _2]) } - public var DialogList_EncryptionProcessing: String { return self._s[1607]! } - public var Permissions_Skip: String { return self._s[1608]! } - public var SecretImage_Title: String { return self._s[1609]! } - public var Watch_MessageView_Title: String { return self._s[1610]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1611]! } - public var AttachmentMenu_Poll: String { return self._s[1612]! } + public var DialogList_EncryptionProcessing: String { return self._s[1609]! } + public var Permissions_Skip: String { return self._s[1610]! } + public var SecretImage_Title: String { return self._s[1611]! } + public var Watch_MessageView_Title: String { return self._s[1612]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1613]! } + public var AttachmentMenu_Poll: String { return self._s[1614]! } public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1613]!, self._r[1613]!, [_0]) + return formatWithArgumentRanges(self._s[1615]!, self._r[1615]!, [_0]) } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1614]!, self._r[1614]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1616]!, self._r[1616]!, [_1, _2]) } - public var Notification_CallCanceled: String { return self._s[1615]! } - public var WallpaperPreview_Title: String { return self._s[1616]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1617]! } - public var Settings_ProxyConnecting: String { return self._s[1618]! } - public var Settings_CheckPhoneNumberText: String { return self._s[1620]! } - public var Profile_MessageLifetime5s: String { return self._s[1621]! } - public var Username_InvalidCharacters: String { return self._s[1622]! } - public var WallpaperPreview_CropBottomText: String { return self._s[1623]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[1624]! } - public var Settings_AddAccount: String { return self._s[1625]! } - public var Notification_CreatedChannel: String { return self._s[1628]! } + public var Notification_CallCanceled: String { return self._s[1617]! } + public var WallpaperPreview_Title: String { return self._s[1618]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1619]! } + public var Settings_ProxyConnecting: String { return self._s[1620]! } + public var Settings_CheckPhoneNumberText: String { return self._s[1622]! } + public var Profile_MessageLifetime5s: String { return self._s[1623]! } + public var Username_InvalidCharacters: String { return self._s[1624]! } + public var WallpaperPreview_CropBottomText: String { return self._s[1625]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[1626]! } + public var Settings_AddAccount: String { return self._s[1627]! } + public var Notification_CreatedChannel: String { return self._s[1630]! } public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1629]!, self._r[1629]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1631]!, self._r[1631]!, [_1, _2, _3]) } - public var Passcode_AppLockedAlert: String { return self._s[1631]! } - public var Contacts_TopSection: String { return self._s[1632]! } + public var Passcode_AppLockedAlert: String { return self._s[1633]! } + public var Contacts_TopSection: String { return self._s[1634]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1633]!, self._r[1633]!, [_0]) + return formatWithArgumentRanges(self._s[1635]!, self._r[1635]!, [_0]) } - public var ReportPeer_ReasonSpam: String { return self._s[1634]! } - public var UserInfo_TapToCall: String { return self._s[1635]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1637]! } - public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1638]! } - public var Common_Search: String { return self._s[1639]! } + public var ReportPeer_ReasonSpam: String { return self._s[1636]! } + public var UserInfo_TapToCall: String { return self._s[1637]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1639]! } + public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1640]! } + public var Common_Search: String { return self._s[1641]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1640]!, self._r[1640]!, [_0]) + return formatWithArgumentRanges(self._s[1642]!, self._r[1642]!, [_0]) } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1641]! } - public var Message_InvoiceLabel: String { return self._s[1642]! } - public var Conversation_InputTextPlaceholder: String { return self._s[1643]! } - public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1644]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1643]! } + public var Message_InvoiceLabel: String { return self._s[1644]! } + public var Conversation_InputTextPlaceholder: String { return self._s[1645]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1646]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1645]!, self._r[1645]!, [_0]) + return formatWithArgumentRanges(self._s[1647]!, self._r[1647]!, [_0]) } - public var Conversation_Info: String { return self._s[1646]! } - public var Login_InfoDeletePhoto: String { return self._s[1647]! } - public var Passport_Language_vi: String { return self._s[1649]! } - public var UserInfo_ScamUserWarning: String { return self._s[1650]! } - public var Conversation_Search: String { return self._s[1651]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1652]! } - public var ReportPeer_ReasonPornography: String { return self._s[1653]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1654]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1655]! } - public var Map_LiveLocationGroupDescription: String { return self._s[1656]! } - public var Channel_Setup_TypeHeader: String { return self._s[1657]! } - public var AuthSessions_LoggedIn: String { return self._s[1658]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1659]! } - public var Login_SmsRequestState3: String { return self._s[1660]! } - public var Passport_Address_EditUtilityBill: String { return self._s[1661]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1662]! } - public var Channel_Edit_LinkItem: String { return self._s[1663]! } - public var Privacy_Calls_P2PNever: String { return self._s[1664]! } - public var Conversation_AddToReadingList: String { return self._s[1666]! } - public var Message_Animation: String { return self._s[1667]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1668]! } - public var Map_Unknown: String { return self._s[1669]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[1670]! } + public var Conversation_Info: String { return self._s[1648]! } + public var Login_InfoDeletePhoto: String { return self._s[1649]! } + public var Passport_Language_vi: String { return self._s[1651]! } + public var UserInfo_ScamUserWarning: String { return self._s[1652]! } + public var Conversation_Search: String { return self._s[1653]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1654]! } + public var ReportPeer_ReasonPornography: String { return self._s[1655]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1656]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1657]! } + public var Map_LiveLocationGroupDescription: String { return self._s[1658]! } + public var Channel_Setup_TypeHeader: String { return self._s[1659]! } + public var AuthSessions_LoggedIn: String { return self._s[1660]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1661]! } + public var Login_SmsRequestState3: String { return self._s[1662]! } + public var Passport_Address_EditUtilityBill: String { return self._s[1663]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1664]! } + public var Channel_Edit_LinkItem: String { return self._s[1665]! } + public var Privacy_Calls_P2PNever: String { return self._s[1666]! } + public var Conversation_AddToReadingList: String { return self._s[1668]! } + public var Message_Animation: String { return self._s[1669]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1670]! } + public var Map_Unknown: String { return self._s[1671]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[1672]! } public func PUSH_PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1671]!, self._r[1671]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1673]!, self._r[1673]!, [_1, _2]) } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1672]!, self._r[1672]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1674]!, self._r[1674]!, [_1, _2]) } - public var Call_StatusRequesting: String { return self._s[1673]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1674]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1675]! } + public var Call_StatusRequesting: String { return self._s[1675]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1676]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1677]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1678]!, self._r[1678]!, [_1, _2]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1677]!, self._r[1677]!, [_0]) + return formatWithArgumentRanges(self._s[1679]!, self._r[1679]!, [_0]) } - public var Update_Skip: String { return self._s[1678]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1679]! } - public var Message_PinnedPollMessage: String { return self._s[1680]! } - public var BlockedUsers_Title: String { return self._s[1681]! } + public var Update_Skip: String { return self._s[1680]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1681]! } + public var Message_PinnedPollMessage: String { return self._s[1682]! } + public var BlockedUsers_Title: String { return self._s[1683]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_1]) + return formatWithArgumentRanges(self._s[1684]!, self._r[1684]!, [_1]) } - public var Username_CheckingUsername: String { return self._s[1683]! } - public var NotificationsSound_Bell: String { return self._s[1684]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1685]! } - public var Weekday_Monday: String { return self._s[1686]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1687]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1688]! } - public var ChatSettings_Groups: String { return self._s[1689]! } - public var Your_card_was_declined: String { return self._s[1690]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1692]! } - public var ChatList_Unmute: String { return self._s[1693]! } - public var PhotoEditor_CurvesAll: String { return self._s[1694]! } - public var Weekday_ShortTuesday: String { return self._s[1695]! } - public var DialogList_Read: String { return self._s[1696]! } - public var Appearance_AppIconClassic: String { return self._s[1697]! } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1698]! } - public var Passport_Identity_Gender: String { return self._s[1699]! } + public var Username_CheckingUsername: String { return self._s[1685]! } + public var NotificationsSound_Bell: String { return self._s[1686]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1687]! } + public var Weekday_Monday: String { return self._s[1688]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1689]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1690]! } + public var ChatSettings_Groups: String { return self._s[1691]! } + public var Your_card_was_declined: String { return self._s[1692]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1694]! } + public var ChatList_Unmute: String { return self._s[1695]! } + public var PhotoEditor_CurvesAll: String { return self._s[1696]! } + public var Weekday_ShortTuesday: String { return self._s[1697]! } + public var DialogList_Read: String { return self._s[1698]! } + public var Appearance_AppIconClassic: String { return self._s[1699]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1700]! } + public var Passport_Identity_Gender: String { return self._s[1701]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1700]!, self._r[1700]!, [_0]) + return formatWithArgumentRanges(self._s[1702]!, self._r[1702]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1701]! } + public var Target_SelectGroup: String { return self._s[1703]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1703]!, self._r[1703]!, [_0]) + return formatWithArgumentRanges(self._s[1705]!, self._r[1705]!, [_0]) } - public var Passport_Language_en: String { return self._s[1704]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1705]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1706]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1707]! } - public var Checkout_NewCard_PaymentCard: String { return self._s[1709]! } - public var Login_InfoHelp: String { return self._s[1710]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1711]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1712]! } + public var Passport_Language_en: String { return self._s[1706]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1707]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1708]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1709]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1711]! } + public var Login_InfoHelp: String { return self._s[1712]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1713]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1714]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1713]!, self._r[1713]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1715]!, self._r[1715]!, [_1, _2]) } - public var SocksProxySetup_AddProxy: String { return self._s[1716]! } - public var CreatePoll_Title: String { return self._s[1717]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1718]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1719]! } - public var UserInfo_GroupsInCommon: String { return self._s[1720]! } - public var Call_AudioRouteHide: String { return self._s[1721]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1723]! } + public var SocksProxySetup_AddProxy: String { return self._s[1718]! } + public var CreatePoll_Title: String { return self._s[1719]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1720]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1721]! } + public var UserInfo_GroupsInCommon: String { return self._s[1722]! } + public var Call_AudioRouteHide: String { return self._s[1723]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1725]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1724]!, self._r[1724]!, [_0]) + return formatWithArgumentRanges(self._s[1726]!, self._r[1726]!, [_0]) } - public var TextFormat_Bold: String { return self._s[1725]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1726]! } - public var Notifications_Title: String { return self._s[1727]! } - public var Group_Username_InvalidTooShort: String { return self._s[1728]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1729]! } + public var TextFormat_Bold: String { return self._s[1727]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1728]! } + public var Notifications_Title: String { return self._s[1729]! } + public var Group_Username_InvalidTooShort: String { return self._s[1730]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1731]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1730]!, self._r[1730]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1732]!, self._r[1732]!, ["\(_0)"]) } - public var Stickers_SuggestAdded: String { return self._s[1732]! } - public var Login_CountryCode: String { return self._s[1733]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1734]! } - public var Map_GetDirections: String { return self._s[1735]! } - public var Login_PhoneFloodError: String { return self._s[1736]! } + public var Stickers_SuggestAdded: String { return self._s[1734]! } + public var Login_CountryCode: String { return self._s[1735]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1736]! } + public var Map_GetDirections: String { return self._s[1737]! } + public var Login_PhoneFloodError: String { return self._s[1738]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1737]!, self._r[1737]!, [_0]) + return formatWithArgumentRanges(self._s[1739]!, self._r[1739]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1739]! } - public var Group_Location_ChangeLocation: String { return self._s[1740]! } - public var Notification_GroupInviterSelf: String { return self._s[1741]! } - public var InstantPage_TapToOpenLink: String { return self._s[1742]! } + public var Settings_SetUsername: String { return self._s[1741]! } + public var Group_Location_ChangeLocation: String { return self._s[1742]! } + public var Notification_GroupInviterSelf: String { return self._s[1743]! } + public var InstantPage_TapToOpenLink: String { return self._s[1744]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1743]!, self._r[1743]!, [_0]) + return formatWithArgumentRanges(self._s[1745]!, self._r[1745]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1744]! } - public var SecretChat_Title: String { return self._s[1745]! } - public var Group_UpgradeNoticeText1: String { return self._s[1746]! } - public var AuthSessions_Title: String { return self._s[1747]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1746]! } + public var SecretChat_Title: String { return self._s[1747]! } + public var Group_UpgradeNoticeText1: String { return self._s[1748]! } + public var AuthSessions_Title: String { return self._s[1749]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1748]!, self._r[1748]!, [_0]) + return formatWithArgumentRanges(self._s[1750]!, self._r[1750]!, [_0]) } - public var PhotoEditor_CropAuto: String { return self._s[1749]! } - public var Channel_About_Title: String { return self._s[1750]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1751]! } + public var PhotoEditor_CropAuto: String { return self._s[1751]! } + public var Channel_About_Title: String { return self._s[1752]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1753]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1753]!, self._r[1753]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1755]!, self._r[1755]!, ["\(_0)"]) } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1755]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1756]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1757]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1758]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_1]) + return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, [_1]) } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, [_0]) + return formatWithArgumentRanges(self._s[1761]!, self._r[1761]!, [_0]) } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1760]!, self._r[1760]!, [_0]) + return formatWithArgumentRanges(self._s[1762]!, self._r[1762]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1761]! } - public var Presence_online: String { return self._s[1763]! } - public var PasscodeSettings_Title: String { return self._s[1764]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1765]! } - public var Web_OpenExternal: String { return self._s[1766]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[1768]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1769]! } - public var LocalGroup_Title: String { return self._s[1770]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1763]! } + public var Presence_online: String { return self._s[1765]! } + public var PasscodeSettings_Title: String { return self._s[1766]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1767]! } + public var Web_OpenExternal: String { return self._s[1768]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[1770]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1771]! } + public var LocalGroup_Title: String { return self._s[1772]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1771]!, self._r[1771]!, [_0]) + return formatWithArgumentRanges(self._s[1773]!, self._r[1773]!, [_0]) } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1772]! } - public var Map_YouAreHere: String { return self._s[1773]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1774]! } + public var Map_YouAreHere: String { return self._s[1775]! } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1774]!, self._r[1774]!, [_0]) + return formatWithArgumentRanges(self._s[1776]!, self._r[1776]!, [_0]) } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1775]!, self._r[1775]!, [_0]) + return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1776]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1777]! } + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1778]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1779]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1778]!, self._r[1778]!, [_0]) + return formatWithArgumentRanges(self._s[1780]!, self._r[1780]!, [_0]) } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1779]!, self._r[1779]!, [_0]) + return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[1780]! } - public var Bot_Start: String { return self._s[1781]! } + public var SocksProxySetup_Username: String { return self._s[1782]! } + public var Bot_Start: String { return self._s[1783]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1782]!, self._r[1782]!, [_0]) + return formatWithArgumentRanges(self._s[1784]!, self._r[1784]!, [_0]) } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1783]!, self._r[1783]!, [_0]) + return formatWithArgumentRanges(self._s[1785]!, self._r[1785]!, [_0]) } - public var Contacts_SortByPresence: String { return self._s[1784]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1786]! } + public var Contacts_SortByPresence: String { return self._s[1786]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1788]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_1, _2]) - } - public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1788]!, self._r[1788]!, [_0]) - } - public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_1, _2]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1790]! } - public var Login_InfoAvatarPhoto: String { return self._s[1791]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1792]! } - public var Tour_Title4: String { return self._s[1793]! } - public var Passport_Identity_Translation: String { return self._s[1794]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1795]! } - public var Login_TermsOfServiceLabel: String { return self._s[1797]! } - public var Passport_Language_it: String { return self._s[1798]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1799]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1800]! } - public var Conversation_ClearAll: String { return self._s[1802]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1804]! } - public var TwoStepAuth_FloodError: String { return self._s[1805]! } + public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1790]!, self._r[1790]!, [_0]) + } + public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1791]!, self._r[1791]!, [_1, _2]) + } + public var Passport_Email_EnterOtherEmail: String { return self._s[1792]! } + public var Login_InfoAvatarPhoto: String { return self._s[1793]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1794]! } + public var Tour_Title4: String { return self._s[1795]! } + public var Passport_Identity_Translation: String { return self._s[1796]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1797]! } + public var Login_TermsOfServiceLabel: String { return self._s[1799]! } + public var Passport_Language_it: String { return self._s[1800]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1801]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1802]! } + public var Conversation_ClearAll: String { return self._s[1804]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1806]! } + public var TwoStepAuth_FloodError: String { return self._s[1807]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1806]!, self._r[1806]!, [_1]) + return formatWithArgumentRanges(self._s[1808]!, self._r[1808]!, [_1]) } - public var Paint_Delete: String { return self._s[1807]! } - public var Privacy_AddNewPeer: String { return self._s[1808]! } - public var LogoutOptions_SetPasscodeText: String { return self._s[1809]! } + public var Paint_Delete: String { return self._s[1809]! } + public var Privacy_AddNewPeer: String { return self._s[1810]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1811]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1810]!, self._r[1810]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1812]!, self._r[1812]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1811]! } + public var Message_PinnedAudioMessage: String { return self._s[1813]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1812]!, self._r[1812]!, [_0]) + return formatWithArgumentRanges(self._s[1814]!, self._r[1814]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1813]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1814]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1815]! } - public var Conversation_MessageEditedLabel: String { return self._s[1816]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1817]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1818]! } + public var Notification_Mute1hMin: String { return self._s[1815]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1816]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1817]! } + public var Conversation_MessageEditedLabel: String { return self._s[1818]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1819]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1820]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1819]!, self._r[1819]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1821]!, self._r[1821]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1820]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1822]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1821]!, self._r[1821]!, [_1]) + return formatWithArgumentRanges(self._s[1823]!, self._r[1823]!, [_1]) } - public var AccessDenied_LocationTracking: String { return self._s[1822]! } - public var Month_GenOctober: String { return self._s[1823]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1824]! } - public var EnterPasscode_EnterPasscode: String { return self._s[1825]! } - public var MediaPicker_TimerTooltip: String { return self._s[1827]! } - public var SharedMedia_TitleAll: String { return self._s[1828]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1831]! } - public var Conversation_RestrictedMedia: String { return self._s[1832]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1833]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[1835]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1836]! } + public var AccessDenied_LocationTracking: String { return self._s[1824]! } + public var Month_GenOctober: String { return self._s[1825]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1826]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1827]! } + public var MediaPicker_TimerTooltip: String { return self._s[1829]! } + public var SharedMedia_TitleAll: String { return self._s[1830]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1833]! } + public var Conversation_RestrictedMedia: String { return self._s[1834]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1835]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[1837]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1838]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1837]!, self._r[1837]!, [_0]) + return formatWithArgumentRanges(self._s[1839]!, self._r[1839]!, [_0]) } - public var Conversation_SavedMessages: String { return self._s[1840]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1842]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1843]! } + public var Conversation_SavedMessages: String { return self._s[1842]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1844]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1845]! } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1845]!, self._r[1845]!, [_0]) + return formatWithArgumentRanges(self._s[1847]!, self._r[1847]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1846]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1847]! } + public var ReportPeer_AlertSuccess: String { return self._s[1848]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1849]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1848]!, self._r[1848]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1850]!, self._r[1850]!, [_1, _2]) } - public var Checkout_PasswordEntry_Title: String { return self._s[1849]! } - public var PhotoEditor_FadeTool: String { return self._s[1850]! } - public var Privacy_ContactsReset: String { return self._s[1851]! } + public var Checkout_PasswordEntry_Title: String { return self._s[1851]! } + public var PhotoEditor_FadeTool: String { return self._s[1852]! } + public var Privacy_ContactsReset: String { return self._s[1853]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1853]!, self._r[1853]!, [_0]) + return formatWithArgumentRanges(self._s[1855]!, self._r[1855]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1854]! } - public var ChatList_Mute: String { return self._s[1855]! } - public var Permissions_CellularDataText_v0: String { return self._s[1856]! } - public var ShareMenu_SelectChats: String { return self._s[1858]! } - public var MusicPlayer_VoiceNote: String { return self._s[1859]! } - public var Conversation_RestrictedText: String { return self._s[1860]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1861]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[1862]! } - public var Cache_Videos: String { return self._s[1863]! } - public var PrivacySettings_PhoneNumber: String { return self._s[1864]! } - public var FeatureDisabled_Oops: String { return self._s[1866]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1867]! } + public var Message_PinnedVideoMessage: String { return self._s[1856]! } + public var ChatList_Mute: String { return self._s[1857]! } + public var Permissions_CellularDataText_v0: String { return self._s[1858]! } + public var ShareMenu_SelectChats: String { return self._s[1860]! } + public var MusicPlayer_VoiceNote: String { return self._s[1861]! } + public var Conversation_RestrictedText: String { return self._s[1862]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1863]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[1864]! } + public var Cache_Videos: String { return self._s[1865]! } + public var PrivacySettings_PhoneNumber: String { return self._s[1866]! } + public var FeatureDisabled_Oops: String { return self._s[1868]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1869]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1868]!, self._r[1868]!, [_0]) + return formatWithArgumentRanges(self._s[1870]!, self._r[1870]!, [_0]) } - public var Stickers_GroupStickersHelp: String { return self._s[1869]! } - public var GroupPermission_NoSendPolls: String { return self._s[1870]! } - public var Message_VideoExpired: String { return self._s[1872]! } - public var Notifications_Badge: String { return self._s[1873]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1874]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[1875]! } - public var Username_InvalidTooShort: String { return self._s[1876]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1877]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1878]! } - public var ArchivedChats_IntroTitle3: String { return self._s[1879]! } + public var Stickers_GroupStickersHelp: String { return self._s[1871]! } + public var GroupPermission_NoSendPolls: String { return self._s[1872]! } + public var Message_VideoExpired: String { return self._s[1874]! } + public var Notifications_Badge: String { return self._s[1875]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1876]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[1877]! } + public var Username_InvalidTooShort: String { return self._s[1878]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1879]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1880]! } + public var ArchivedChats_IntroTitle3: String { return self._s[1881]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1880]!, self._r[1880]!, [_1]) + return formatWithArgumentRanges(self._s[1882]!, self._r[1882]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[1881]! } - public var Conversation_DefaultRestrictedText: String { return self._s[1882]! } - public var SharedMedia_CategoryDocs: String { return self._s[1885]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[1883]! } + public var Conversation_DefaultRestrictedText: String { return self._s[1884]! } + public var SharedMedia_CategoryDocs: String { return self._s[1887]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1886]!, self._r[1886]!, [_1]) + return formatWithArgumentRanges(self._s[1888]!, self._r[1888]!, [_1]) } - public var Privacy_Forwards_NeverLink: String { return self._s[1888]! } + public var Privacy_Forwards_NeverLink: String { return self._s[1890]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1889]!, self._r[1889]!, [_1]) + return formatWithArgumentRanges(self._s[1891]!, self._r[1891]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1890]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1892]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1891]!, self._r[1891]!, [_0]) + return formatWithArgumentRanges(self._s[1893]!, self._r[1893]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[1892]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1893]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[1894]! } - public var Channel_UpdatePhotoItem: String { return self._s[1895]! } - public var GroupInfo_LeftStatus: String { return self._s[1896]! } - public var Watch_MessageView_Forward: String { return self._s[1898]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[1899]! } - public var Cache_ClearEmpty: String { return self._s[1901]! } - public var Localization_LanguageName: String { return self._s[1902]! } - public var WebSearch_GIFs: String { return self._s[1903]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1904]! } - public var Username_InvalidStartsWithNumber: String { return self._s[1905]! } - public var Common_Back: String { return self._s[1906]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1907]! } + public var ChatSettings_PrivateChats: String { return self._s[1894]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1895]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[1896]! } + public var Channel_UpdatePhotoItem: String { return self._s[1897]! } + public var GroupInfo_LeftStatus: String { return self._s[1898]! } + public var Watch_MessageView_Forward: String { return self._s[1900]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[1901]! } + public var Cache_ClearEmpty: String { return self._s[1903]! } + public var Localization_LanguageName: String { return self._s[1904]! } + public var WebSearch_GIFs: String { return self._s[1905]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1906]! } + public var Username_InvalidStartsWithNumber: String { return self._s[1907]! } + public var Common_Back: String { return self._s[1908]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1909]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1908]!, self._r[1908]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1910]!, self._r[1910]!, [_1, _2]) } - public var Passport_Email_Help: String { return self._s[1909]! } - public var Watch_Conversation_Reply: String { return self._s[1911]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[1913]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1914]! } - public var Channel_BanUser_Unban: String { return self._s[1916]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1917]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[1918]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1920]! } - public var Passport_Identity_Name: String { return self._s[1921]! } + public var Passport_Email_Help: String { return self._s[1911]! } + public var Watch_Conversation_Reply: String { return self._s[1913]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[1915]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1916]! } + public var Channel_BanUser_Unban: String { return self._s[1918]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1919]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[1920]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1922]! } + public var Passport_Identity_Name: String { return self._s[1923]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1922]!, self._r[1922]!, [_0]) + return formatWithArgumentRanges(self._s[1924]!, self._r[1924]!, [_0]) } - public var GroupRemoved_ViewUserInfo: String { return self._s[1923]! } - public var Conversation_BlockUser: String { return self._s[1924]! } - public var Month_GenJanuary: String { return self._s[1925]! } - public var ChatSettings_TextSize: String { return self._s[1926]! } - public var Notification_PassportValuePhone: String { return self._s[1927]! } - public var Passport_Language_ne: String { return self._s[1928]! } - public var Notification_CallBack: String { return self._s[1929]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1930]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[1925]! } + public var Conversation_BlockUser: String { return self._s[1926]! } + public var Month_GenJanuary: String { return self._s[1927]! } + public var ChatSettings_TextSize: String { return self._s[1928]! } + public var Notification_PassportValuePhone: String { return self._s[1929]! } + public var Passport_Language_ne: String { return self._s[1930]! } + public var Notification_CallBack: String { return self._s[1931]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1932]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1931]!, self._r[1931]!, [_0]) + return formatWithArgumentRanges(self._s[1933]!, self._r[1933]!, [_0]) } - public var Channel_Info_Management: String { return self._s[1932]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[1933]! } - public var Stickers_FrequentlyUsed: String { return self._s[1934]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[1935]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1937]! } + public var Channel_Info_Management: String { return self._s[1934]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[1935]! } + public var Stickers_FrequentlyUsed: String { return self._s[1936]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[1937]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1939]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1938]!, self._r[1938]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[1940]!, self._r[1940]!, [_1, "\(_2)"]) } - public var Passport_Address_EditResidentialAddress: String { return self._s[1939]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[1940]! } - public var CreatePoll_TextHeader: String { return self._s[1941]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[1941]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[1942]! } + public var CreatePoll_TextHeader: String { return self._s[1943]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1942]!, self._r[1942]!, [_0]) + return formatWithArgumentRanges(self._s[1944]!, self._r[1944]!, [_0]) } - public var PhotoEditor_QualityMedium: String { return self._s[1943]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1944]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1946]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1947]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[1948]! } + public var PhotoEditor_QualityMedium: String { return self._s[1945]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1946]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1948]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1949]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[1950]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1949]!, self._r[1949]!, [_0]) + return formatWithArgumentRanges(self._s[1951]!, self._r[1951]!, [_0]) } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1950]!, self._r[1950]!, [_1]) + return formatWithArgumentRanges(self._s[1952]!, self._r[1952]!, [_1]) } - public var Conversation_LinkDialogOpen: String { return self._s[1952]! } - public var Settings_Username: String { return self._s[1953]! } - public var Conversation_Block: String { return self._s[1955]! } - public var Wallpaper_Wallpaper: String { return self._s[1956]! } - public var SocksProxySetup_UseProxy: String { return self._s[1958]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[1959]! } - public var MessageTimer_Forever: String { return self._s[1960]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1961]! } - public var PhotoEditor_DiscardChanges: String { return self._s[1962]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1963]! } - public var Passport_Language_da: String { return self._s[1964]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[1965]! } + public var Conversation_LinkDialogOpen: String { return self._s[1954]! } + public var Settings_Username: String { return self._s[1955]! } + public var Conversation_Block: String { return self._s[1957]! } + public var Wallpaper_Wallpaper: String { return self._s[1958]! } + public var SocksProxySetup_UseProxy: String { return self._s[1960]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[1961]! } + public var MessageTimer_Forever: String { return self._s[1962]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1963]! } + public var PhotoEditor_DiscardChanges: String { return self._s[1964]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1965]! } + public var Passport_Language_da: String { return self._s[1966]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[1967]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1966]!, self._r[1966]!, [_0]) + return formatWithArgumentRanges(self._s[1968]!, self._r[1968]!, [_0]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[1967]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[1969]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1969]!, self._r[1969]!, [_0]) + return formatWithArgumentRanges(self._s[1971]!, self._r[1971]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1971]! } - public var Conversation_SearchByName_Prefix: String { return self._s[1972]! } - public var Conversation_PinnedPoll: String { return self._s[1973]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1974]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1973]! } + public var Conversation_SearchByName_Prefix: String { return self._s[1974]! } + public var Conversation_PinnedPoll: String { return self._s[1975]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1976]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1975]!, self._r[1975]!, [_1]) + return formatWithArgumentRanges(self._s[1977]!, self._r[1977]!, [_1]) } - public var WallpaperSearch_ColorPurple: String { return self._s[1976]! } - public var Cache_ByPeerHeader: String { return self._s[1977]! } + public var WallpaperSearch_ColorPurple: String { return self._s[1978]! } + public var Cache_ByPeerHeader: String { return self._s[1979]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1978]!, self._r[1978]!, [_0]) + return formatWithArgumentRanges(self._s[1980]!, self._r[1980]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[1979]! } - public var Notification_PinnedMessage: String { return self._s[1982]! } - public var Contacts_SortBy: String { return self._s[1984]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[1981]! } + public var Notification_PinnedMessage: String { return self._s[1984]! } + public var Contacts_SortBy: String { return self._s[1986]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1985]!, self._r[1985]!, [_1]) + return formatWithArgumentRanges(self._s[1987]!, self._r[1987]!, [_1]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1987]!, self._r[1987]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1989]!, self._r[1989]!, [_1, _2]) } - public var Call_EncryptionKey_Title: String { return self._s[1988]! } - public var Watch_UserInfo_Service: String { return self._s[1989]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1991]! } - public var Conversation_Unpin: String { return self._s[1993]! } - public var CancelResetAccount_Title: String { return self._s[1994]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1995]! } + public var Call_EncryptionKey_Title: String { return self._s[1990]! } + public var Watch_UserInfo_Service: String { return self._s[1991]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1993]! } + public var Conversation_Unpin: String { return self._s[1995]! } + public var CancelResetAccount_Title: String { return self._s[1996]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1997]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1997]!, self._r[1997]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1999]!, self._r[1999]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1998]! } - public var CallSettings_Title: String { return self._s[1999]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2000]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[2002]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2003]! } - public var Passport_Identity_DocumentDetails: String { return self._s[2004]! } - public var LoginPassword_PasswordHelp: String { return self._s[2005]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2006]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2007]! } - public var Checkout_TotalPaidAmount: String { return self._s[2008]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2000]! } + public var CallSettings_Title: String { return self._s[2001]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2002]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[2004]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2005]! } + public var Passport_Identity_DocumentDetails: String { return self._s[2006]! } + public var LoginPassword_PasswordHelp: String { return self._s[2007]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2008]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2009]! } + public var Checkout_TotalPaidAmount: String { return self._s[2010]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2009]!, self._r[2009]!, [_0]) + return formatWithArgumentRanges(self._s[2011]!, self._r[2011]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[2010]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[2012]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[2013]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[2012]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[2014]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[2015]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2014]!, self._r[2014]!, [_1]) + return formatWithArgumentRanges(self._s[2016]!, self._r[2016]!, [_1]) } - public var Contacts_InviteFriends: String { return self._s[2016]! } - public var Map_ChooseLocationTitle: String { return self._s[2017]! } - public var Conversation_StopPoll: String { return self._s[2019]! } + public var Contacts_InviteFriends: String { return self._s[2018]! } + public var Map_ChooseLocationTitle: String { return self._s[2019]! } + public var Conversation_StopPoll: String { return self._s[2021]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2020]!, self._r[2020]!, [_0]) + return formatWithArgumentRanges(self._s[2022]!, self._r[2022]!, [_0]) } - public var Call_Camera: String { return self._s[2021]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2022]! } - public var Calls_RatingFeedback: String { return self._s[2023]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2024]! } - public var NotificationsSound_Pulse: String { return self._s[2025]! } - public var Watch_LastSeen_Lately: String { return self._s[2026]! } - public var ReportGroupLocation_Report: String { return self._s[2029]! } - public var Widget_NoUsers: String { return self._s[2030]! } - public var Conversation_UnvotePoll: String { return self._s[2031]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2033]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2034]! } - public var NotificationsSound_Circles: String { return self._s[2035]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2037]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2038]! } - public var Proxy_TooltipUnavailable: String { return self._s[2039]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[2041]! } - public var Conversation_FileDropbox: String { return self._s[2043]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[2044]! } - public var Tour_Text3: String { return self._s[2046]! } - public var Login_ResetAccountProtected_Title: String { return self._s[2048]! } - public var GroupPermission_NoSendMessages: String { return self._s[2049]! } - public var WallpaperSearch_ColorTitle: String { return self._s[2050]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2051]! } + public var Call_Camera: String { return self._s[2023]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2024]! } + public var Calls_RatingFeedback: String { return self._s[2025]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2026]! } + public var NotificationsSound_Pulse: String { return self._s[2027]! } + public var Watch_LastSeen_Lately: String { return self._s[2028]! } + public var ReportGroupLocation_Report: String { return self._s[2031]! } + public var Widget_NoUsers: String { return self._s[2032]! } + public var Conversation_UnvotePoll: String { return self._s[2033]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2035]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2036]! } + public var NotificationsSound_Circles: String { return self._s[2037]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2039]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2040]! } + public var Proxy_TooltipUnavailable: String { return self._s[2041]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[2043]! } + public var Conversation_FileDropbox: String { return self._s[2045]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[2046]! } + public var Tour_Text3: String { return self._s[2048]! } + public var Login_ResetAccountProtected_Title: String { return self._s[2050]! } + public var GroupPermission_NoSendMessages: String { return self._s[2051]! } + public var WallpaperSearch_ColorTitle: String { return self._s[2052]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2053]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2053]!, self._r[2053]!, [_0]) + return formatWithArgumentRanges(self._s[2055]!, self._r[2055]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[2054]! } - public var Checkout_ShippingOption_Title: String { return self._s[2055]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2056]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[2056]! } + public var Checkout_ShippingOption_Title: String { return self._s[2057]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2058]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2057]!, self._r[2057]!, [_0]) + return formatWithArgumentRanges(self._s[2059]!, self._r[2059]!, [_0]) } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2058]!, self._r[2058]!, [_0]) + return formatWithArgumentRanges(self._s[2060]!, self._r[2060]!, [_0]) } - public var Channel_Management_LabelAdministrator: String { return self._s[2059]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[2060]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2061]! } - public var AutoDownloadSettings_Photos: String { return self._s[2063]! } - public var Appearance_PreviewIncomingText: String { return self._s[2064]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[2065]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2066]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2067]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2068]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2069]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2070]! } - public var Notification_SecretChatScreenshot: String { return self._s[2071]! } - public var AccessDenied_Wallpapers: String { return self._s[2072]! } - public var Passport_Address_City: String { return self._s[2074]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2075]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[2076]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2077]! } - public var AccessDenied_LocationDisabled: String { return self._s[2078]! } - public var Group_Location_Title: String { return self._s[2079]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2081]! } - public var GroupInfo_Sound: String { return self._s[2082]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[2083]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2084]! } - public var Contacts_Title: String { return self._s[2085]! } - public var Passport_Language_fr: String { return self._s[2086]! } - public var Notifications_ResetAllNotifications: String { return self._s[2087]! } - public var PrivacySettings_SecurityTitle: String { return self._s[2090]! } - public var Checkout_NewCard_Title: String { return self._s[2091]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[2092]! } - public var Conversation_ForwardChats: String { return self._s[2093]! } - public var PasscodeSettings_4DigitCode: String { return self._s[2095]! } - public var Settings_FAQ: String { return self._s[2097]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2098]! } - public var Conversation_ContextMenuForward: String { return self._s[2099]! } - public var PrivacyPolicy_Title: String { return self._s[2104]! } - public var Notifications_TextTone: String { return self._s[2105]! } - public var Profile_CreateNewContact: String { return self._s[2106]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2107]! } - public var Call_Speaker: String { return self._s[2109]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[2110]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2112]! } - public var Channel_Username_InvalidCharacters: String { return self._s[2113]! } + public var Channel_Management_LabelAdministrator: String { return self._s[2061]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[2062]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2063]! } + public var AutoDownloadSettings_Photos: String { return self._s[2065]! } + public var Appearance_PreviewIncomingText: String { return self._s[2066]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[2067]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2068]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2069]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2070]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2071]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2072]! } + public var Notification_SecretChatScreenshot: String { return self._s[2073]! } + public var AccessDenied_Wallpapers: String { return self._s[2074]! } + public var Passport_Address_City: String { return self._s[2076]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2077]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[2078]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2079]! } + public var AccessDenied_LocationDisabled: String { return self._s[2080]! } + public var Group_Location_Title: String { return self._s[2081]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2083]! } + public var GroupInfo_Sound: String { return self._s[2084]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[2085]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2086]! } + public var Contacts_Title: String { return self._s[2087]! } + public var Passport_Language_fr: String { return self._s[2088]! } + public var Notifications_ResetAllNotifications: String { return self._s[2089]! } + public var PrivacySettings_SecurityTitle: String { return self._s[2092]! } + public var Checkout_NewCard_Title: String { return self._s[2093]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[2094]! } + public var Conversation_ForwardChats: String { return self._s[2095]! } + public var PasscodeSettings_4DigitCode: String { return self._s[2097]! } + public var Settings_FAQ: String { return self._s[2099]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2100]! } + public var Conversation_ContextMenuForward: String { return self._s[2101]! } + public var PrivacyPolicy_Title: String { return self._s[2106]! } + public var Notifications_TextTone: String { return self._s[2107]! } + public var Profile_CreateNewContact: String { return self._s[2108]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2109]! } + public var Call_Speaker: String { return self._s[2111]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[2112]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2114]! } + public var Channel_Username_InvalidCharacters: String { return self._s[2115]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2114]!, self._r[2114]!, [_0]) + return formatWithArgumentRanges(self._s[2116]!, self._r[2116]!, [_0]) } - public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2115]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[2116]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[2117]! } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2118]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[2119]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[2120]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[2121]! } - public var Bot_Unblock: String { return self._s[2122]! } - public var TextFormat_Italic: String { return self._s[2123]! } - public var WallpaperSearch_ColorPink: String { return self._s[2124]! } - public var Settings_About_Help: String { return self._s[2125]! } - public var SearchImages_Title: String { return self._s[2126]! } - public var Weekday_Wednesday: String { return self._s[2127]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[2128]! } - public var ExplicitContent_AlertTitle: String { return self._s[2129]! } + public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2117]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[2118]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[2119]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2120]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[2121]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[2122]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[2123]! } + public var Bot_Unblock: String { return self._s[2124]! } + public var TextFormat_Italic: String { return self._s[2125]! } + public var WallpaperSearch_ColorPink: String { return self._s[2126]! } + public var Settings_About_Help: String { return self._s[2127]! } + public var SearchImages_Title: String { return self._s[2128]! } + public var Weekday_Wednesday: String { return self._s[2129]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[2130]! } + public var ExplicitContent_AlertTitle: String { return self._s[2131]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2130]!, self._r[2130]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2132]!, self._r[2132]!, [_1, _2, _3]) } - public var Channel_DiscussionGroup_Create: String { return self._s[2131]! } - public var Weekday_Thursday: String { return self._s[2132]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2133]! } - public var Channel_Members_AddMembersHelp: String { return self._s[2134]! } + public var Channel_DiscussionGroup_Create: String { return self._s[2133]! } + public var Weekday_Thursday: String { return self._s[2134]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2135]! } + public var Channel_Members_AddMembersHelp: String { return self._s[2136]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2135]!, self._r[2135]!, [_0]) + return formatWithArgumentRanges(self._s[2137]!, self._r[2137]!, [_0]) } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2136]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2137]! } - public var Passport_RequestedInformation: String { return self._s[2138]! } - public var Login_PhoneAndCountryHelp: String { return self._s[2139]! } - public var Conversation_EncryptionProcessing: String { return self._s[2141]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2142]! } - public var PhotoEditor_EnhanceTool: String { return self._s[2144]! } - public var Channel_Setup_Title: String { return self._s[2145]! } - public var Conversation_SearchPlaceholder: String { return self._s[2146]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2147]! } - public var Checkout_ErrorGeneric: String { return self._s[2148]! } - public var Passport_Language_hu: String { return self._s[2149]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2138]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2139]! } + public var Passport_RequestedInformation: String { return self._s[2140]! } + public var Login_PhoneAndCountryHelp: String { return self._s[2141]! } + public var Conversation_EncryptionProcessing: String { return self._s[2143]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2144]! } + public var PhotoEditor_EnhanceTool: String { return self._s[2146]! } + public var Channel_Setup_Title: String { return self._s[2147]! } + public var Conversation_SearchPlaceholder: String { return self._s[2148]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2149]! } + public var Checkout_ErrorGeneric: String { return self._s[2150]! } + public var Passport_Language_hu: String { return self._s[2151]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2151]!, self._r[2151]!, [_0]) + return formatWithArgumentRanges(self._s[2153]!, self._r[2153]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2154]!, self._r[2154]!, [_1]) + return formatWithArgumentRanges(self._s[2156]!, self._r[2156]!, [_1]) } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2155]!, self._r[2155]!, [_0]) + return formatWithArgumentRanges(self._s[2157]!, self._r[2157]!, [_0]) } - public var Group_Location_Info: String { return self._s[2156]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[2157]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2158]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2159]! } + public var Group_Location_Info: String { return self._s[2158]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[2159]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2160]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2161]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2160]!, self._r[2160]!, [_0]) + return formatWithArgumentRanges(self._s[2162]!, self._r[2162]!, [_0]) } - public var Conversation_ClearPrivateHistory: String { return self._s[2161]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[2162]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[2163]! } + public var Conversation_ClearPrivateHistory: String { return self._s[2163]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[2164]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[2165]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2164]!, self._r[2164]!, [_0]) + return formatWithArgumentRanges(self._s[2166]!, self._r[2166]!, [_0]) } - public var Passport_Language_cs: String { return self._s[2165]! } - public var Message_PinnedAnimationMessage: String { return self._s[2167]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[2169]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2170]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2172]! } - public var Embed_PlayingInPIP: String { return self._s[2173]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[2174]! } + public var Passport_Language_cs: String { return self._s[2167]! } + public var Message_PinnedAnimationMessage: String { return self._s[2169]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[2171]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2172]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2174]! } + public var Embed_PlayingInPIP: String { return self._s[2175]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[2176]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2175]!, self._r[2175]!, [_0]) + return formatWithArgumentRanges(self._s[2177]!, self._r[2177]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[2176]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[2178]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2177]!, self._r[2177]!, [_1]) + return formatWithArgumentRanges(self._s[2179]!, self._r[2179]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[2178]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2179]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2180]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[2181]! } - public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2182]! } + public var Notification_PaymentSent: String { return self._s[2180]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2181]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2182]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[2183]! } + public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2184]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2185]!, self._r[2185]!, [_1]) - } - public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2186]!, self._r[2186]!, [_1]) - } - public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2187]!, self._r[2187]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2189]! } - public var PasscodeSettings_HelpTop: String { return self._s[2190]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2191]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2192]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2193]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2194]! } - public var Call_Accept: String { return self._s[2196]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2197]! } - public var Month_GenMarch: String { return self._s[2199]! } - public var PhotoEditor_ShadowsTool: String { return self._s[2200]! } - public var LoginPassword_Title: String { return self._s[2201]! } - public var Call_End: String { return self._s[2202]! } - public var Watch_Conversation_GroupInfo: String { return self._s[2203]! } - public var CallSettings_Always: String { return self._s[2204]! } - public var CallFeedback_Success: String { return self._s[2205]! } - public var TwoStepAuth_SetupHint: String { return self._s[2206]! } + public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2188]!, self._r[2188]!, [_1]) + } + public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2189]!, self._r[2189]!, [_1]) + } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2191]! } + public var PasscodeSettings_HelpTop: String { return self._s[2192]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2193]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2194]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2195]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2196]! } + public var Call_Accept: String { return self._s[2198]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2199]! } + public var Month_GenMarch: String { return self._s[2201]! } + public var PhotoEditor_ShadowsTool: String { return self._s[2202]! } + public var LoginPassword_Title: String { return self._s[2203]! } + public var Call_End: String { return self._s[2204]! } + public var Watch_Conversation_GroupInfo: String { return self._s[2205]! } + public var CallSettings_Always: String { return self._s[2206]! } + public var CallFeedback_Success: String { return self._s[2207]! } + public var TwoStepAuth_SetupHint: String { return self._s[2208]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2207]!, self._r[2207]!, [_1]) + return formatWithArgumentRanges(self._s[2209]!, self._r[2209]!, [_1]) } - public var ConversationProfile_UsersTooMuchError: String { return self._s[2208]! } - public var Login_PhoneTitle: String { return self._s[2209]! } - public var Passport_FieldPhoneHelp: String { return self._s[2210]! } - public var Weekday_ShortSunday: String { return self._s[2211]! } - public var Passport_InfoFAQ_URL: String { return self._s[2212]! } - public var ContactInfo_Job: String { return self._s[2214]! } - public var UserInfo_InviteBotToGroup: String { return self._s[2215]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[2216]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2217]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2218]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2219]! } - public var CallFeedback_ReasonNoise: String { return self._s[2220]! } - public var Appearance_AppIconDefault: String { return self._s[2222]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[2223]! } - public var MediaPicker_AddCaption: String { return self._s[2224]! } - public var CallSettings_TabIconDescription: String { return self._s[2225]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2226]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2227]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[2228]! } - public var DialogList_SearchSectionRecent: String { return self._s[2229]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[2230]! } - public var LogoutOptions_ClearCacheText: String { return self._s[2233]! } - public var LastSeen_WithinAWeek: String { return self._s[2234]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[2235]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[2237]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[2210]! } + public var Login_PhoneTitle: String { return self._s[2211]! } + public var Passport_FieldPhoneHelp: String { return self._s[2212]! } + public var Weekday_ShortSunday: String { return self._s[2213]! } + public var Passport_InfoFAQ_URL: String { return self._s[2214]! } + public var ContactInfo_Job: String { return self._s[2216]! } + public var UserInfo_InviteBotToGroup: String { return self._s[2217]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[2218]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2219]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2220]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2221]! } + public var CallFeedback_ReasonNoise: String { return self._s[2222]! } + public var Appearance_AppIconDefault: String { return self._s[2224]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[2225]! } + public var MediaPicker_AddCaption: String { return self._s[2226]! } + public var CallSettings_TabIconDescription: String { return self._s[2227]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2228]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2229]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[2230]! } + public var DialogList_SearchSectionRecent: String { return self._s[2231]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[2232]! } + public var LogoutOptions_ClearCacheText: String { return self._s[2235]! } + public var LastSeen_WithinAWeek: String { return self._s[2236]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[2237]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[2239]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2238]!, self._r[2238]!, [_0]) + return formatWithArgumentRanges(self._s[2240]!, self._r[2240]!, [_0]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2239]! } - public var Conversation_StatusLeftGroup: String { return self._s[2240]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2241]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2243]! } - public var GroupPermission_AddSuccess: String { return self._s[2244]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2246]! } - public var Conversation_ContextMenuCopy: String { return self._s[2247]! } - public var AccessDenied_CallMicrophone: String { return self._s[2248]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2241]! } + public var Conversation_StatusLeftGroup: String { return self._s[2242]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2243]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2245]! } + public var GroupPermission_AddSuccess: String { return self._s[2246]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2248]! } + public var Conversation_ContextMenuCopy: String { return self._s[2249]! } + public var AccessDenied_CallMicrophone: String { return self._s[2250]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2249]!, self._r[2249]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2251]!, self._r[2251]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[2250]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2251]! } - public var Checkout_PaymentMethod_New: String { return self._s[2252]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[2253]! } - public var PhotoEditor_QualityTool: String { return self._s[2254]! } - public var Login_SendCodeViaSms: String { return self._s[2255]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2256]! } - public var Login_EmailNotConfiguredError: String { return self._s[2257]! } - public var SocksProxySetup_Status: String { return self._s[2258]! } - public var PrivacyPolicy_Accept: String { return self._s[2259]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2260]! } - public var Appearance_AppIconClassicX: String { return self._s[2261]! } + public var Login_InvalidFirstNameError: String { return self._s[2252]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2253]! } + public var Checkout_PaymentMethod_New: String { return self._s[2254]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[2255]! } + public var PhotoEditor_QualityTool: String { return self._s[2256]! } + public var Login_SendCodeViaSms: String { return self._s[2257]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2258]! } + public var Login_EmailNotConfiguredError: String { return self._s[2259]! } + public var SocksProxySetup_Status: String { return self._s[2260]! } + public var PrivacyPolicy_Accept: String { return self._s[2261]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2262]! } + public var Appearance_AppIconClassicX: String { return self._s[2263]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2262]!, self._r[2262]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2264]!, self._r[2264]!, [_1, _2, _3]) } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[2263]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2264]! } - public var AutoNightTheme_Automatic: String { return self._s[2265]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2266]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2267]! } - public var Cache_Help: String { return self._s[2268]! } - public var Group_ErrorAccessDenied: String { return self._s[2269]! } - public var Passport_Language_fa: String { return self._s[2270]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2271]! } - public var PrivacySettings_LastSeen: String { return self._s[2272]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[2265]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2266]! } + public var AutoNightTheme_Automatic: String { return self._s[2267]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2268]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2269]! } + public var Cache_Help: String { return self._s[2270]! } + public var Group_ErrorAccessDenied: String { return self._s[2271]! } + public var Passport_Language_fa: String { return self._s[2272]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2273]! } + public var PrivacySettings_LastSeen: String { return self._s[2274]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2273]!, self._r[2273]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2275]!, self._r[2275]!, [_0, _1]) } - public var Preview_SaveGif: String { return self._s[2277]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2278]! } - public var Profile_About: String { return self._s[2279]! } - public var Channel_About_Placeholder: String { return self._s[2280]! } - public var Login_InfoTitle: String { return self._s[2281]! } + public var Preview_SaveGif: String { return self._s[2279]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2280]! } + public var Profile_About: String { return self._s[2281]! } + public var Channel_About_Placeholder: String { return self._s[2282]! } + public var Login_InfoTitle: String { return self._s[2283]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2282]!, self._r[2282]!, [_0]) + return formatWithArgumentRanges(self._s[2284]!, self._r[2284]!, [_0]) } - public var Watch_Suggestion_CantTalk: String { return self._s[2284]! } - public var ContactInfo_Title: String { return self._s[2285]! } - public var Media_ShareThisVideo: String { return self._s[2286]! } - public var Weekday_ShortFriday: String { return self._s[2287]! } - public var AccessDenied_Contacts: String { return self._s[2288]! } - public var Notification_CallIncomingShort: String { return self._s[2289]! } - public var Group_Setup_TypePublic: String { return self._s[2290]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2291]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2292]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2295]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2296]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2297]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2298]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2299]! } - public var DialogList_Typing: String { return self._s[2300]! } - public var CallFeedback_IncludeLogs: String { return self._s[2302]! } - public var Checkout_Phone: String { return self._s[2304]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2307]! } - public var Privacy_Calls_Integration: String { return self._s[2308]! } - public var Notifications_PermissionsAllow: String { return self._s[2309]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2313]! } - public var Settings_ChatSettings: String { return self._s[2314]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2286]! } + public var ContactInfo_Title: String { return self._s[2287]! } + public var Media_ShareThisVideo: String { return self._s[2288]! } + public var Weekday_ShortFriday: String { return self._s[2289]! } + public var AccessDenied_Contacts: String { return self._s[2290]! } + public var Notification_CallIncomingShort: String { return self._s[2291]! } + public var Group_Setup_TypePublic: String { return self._s[2292]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2293]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2294]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2297]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2298]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2299]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2300]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2301]! } + public var DialogList_Typing: String { return self._s[2302]! } + public var CallFeedback_IncludeLogs: String { return self._s[2304]! } + public var Checkout_Phone: String { return self._s[2306]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2309]! } + public var Privacy_Calls_Integration: String { return self._s[2310]! } + public var Notifications_PermissionsAllow: String { return self._s[2311]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2315]! } + public var Settings_ChatSettings: String { return self._s[2316]! } public func PUSH_MESSAGE_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2315]!, self._r[2315]!, [_1]) + return formatWithArgumentRanges(self._s[2317]!, self._r[2317]!, [_1]) } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2316]!, self._r[2316]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2318]!, self._r[2318]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2318]! } + public var GroupRemoved_DeleteUser: String { return self._s[2320]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2319]!, self._r[2319]!, [_0]) + return formatWithArgumentRanges(self._s[2321]!, self._r[2321]!, [_0]) } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2320]!, self._r[2320]!, [_1]) + return formatWithArgumentRanges(self._s[2322]!, self._r[2322]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2321]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2322]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2324]! } - public var Conversation_Unblock: String { return self._s[2325]! } - public var PrivacySettings_DataSettings: String { return self._s[2326]! } - public var Group_PublicLink_Info: String { return self._s[2327]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2328]! } + public var Login_ContinueWithLocalization: String { return self._s[2323]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2324]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2326]! } + public var Conversation_Unblock: String { return self._s[2327]! } + public var PrivacySettings_DataSettings: String { return self._s[2328]! } + public var Group_PublicLink_Info: String { return self._s[2329]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2330]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2329]!, self._r[2329]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2331]!, self._r[2331]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2332]! } - public var Call_Mute: String { return self._s[2333]! } - public var Passport_Language_dz: String { return self._s[2334]! } - public var Passport_Language_tk: String { return self._s[2335]! } + public var PrivacySettings_Passcode: String { return self._s[2334]! } + public var Call_Mute: String { return self._s[2335]! } + public var Passport_Language_dz: String { return self._s[2336]! } + public var Passport_Language_tk: String { return self._s[2337]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_0]) + return formatWithArgumentRanges(self._s[2338]!, self._r[2338]!, [_0]) } - public var Settings_Search: String { return self._s[2337]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2338]! } - public var Conversation_ContextMenuReply: String { return self._s[2339]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2340]! } - public var Tour_Title1: String { return self._s[2341]! } - public var Conversation_ClearGroupHistory: String { return self._s[2343]! } - public var WallpaperPreview_Motion: String { return self._s[2344]! } + public var Settings_Search: String { return self._s[2339]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2340]! } + public var Conversation_ContextMenuReply: String { return self._s[2341]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2342]! } + public var Tour_Title1: String { return self._s[2343]! } + public var Conversation_ClearGroupHistory: String { return self._s[2345]! } + public var WallpaperPreview_Motion: String { return self._s[2346]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2345]!, self._r[2345]!, [_0]) + return formatWithArgumentRanges(self._s[2347]!, self._r[2347]!, [_0]) } - public var Call_RateCall: String { return self._s[2346]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2347]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2348]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2349]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2351]! } + public var Call_RateCall: String { return self._s[2348]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2349]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2350]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2351]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2353]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2353]!, self._r[2353]!, [_0]) + return formatWithArgumentRanges(self._s[2355]!, self._r[2355]!, [_0]) } - public var Compose_Create: String { return self._s[2354]! } - public var Contacts_InviteToTelegram: String { return self._s[2355]! } - public var GroupInfo_Notifications: String { return self._s[2356]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2358]! } - public var Month_GenApril: String { return self._s[2359]! } - public var Appearance_AutoNightTheme: String { return self._s[2360]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2362]! } - public var Login_CodeSentSms: String { return self._s[2364]! } + public var Compose_Create: String { return self._s[2356]! } + public var Contacts_InviteToTelegram: String { return self._s[2357]! } + public var GroupInfo_Notifications: String { return self._s[2358]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2360]! } + public var Month_GenApril: String { return self._s[2361]! } + public var Appearance_AutoNightTheme: String { return self._s[2362]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2364]! } + public var Login_CodeSentSms: String { return self._s[2366]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2365]!, self._r[2365]!, [_0]) + return formatWithArgumentRanges(self._s[2367]!, self._r[2367]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2366]! } - public var LogoutOptions_ContactSupportText: String { return self._s[2367]! } - public var Passport_Language_hr: String { return self._s[2368]! } - public var Common_ActionNotAllowedError: String { return self._s[2369]! } + public var EmptyGroupInfo_Line3: String { return self._s[2368]! } + public var LogoutOptions_ContactSupportText: String { return self._s[2369]! } + public var Passport_Language_hr: String { return self._s[2370]! } + public var Common_ActionNotAllowedError: String { return self._s[2371]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2370]!, self._r[2370]!, [_0]) + return formatWithArgumentRanges(self._s[2372]!, self._r[2372]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2371]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2372]! } - public var Privacy_SecretChatsTitle: String { return self._s[2373]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2375]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2376]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2377]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[2378]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[2379]! } - public var Preview_DeleteGif: String { return self._s[2380]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2381]! } - public var Group_ErrorNotMutualContact: String { return self._s[2382]! } - public var Notification_MessageLifetime5s: String { return self._s[2383]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2373]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2374]! } + public var Privacy_SecretChatsTitle: String { return self._s[2375]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2377]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2378]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2379]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[2380]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[2381]! } + public var Preview_DeleteGif: String { return self._s[2382]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2383]! } + public var Group_ErrorNotMutualContact: String { return self._s[2384]! } + public var Notification_MessageLifetime5s: String { return self._s[2385]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2384]!, self._r[2384]!, [_0]) + return formatWithArgumentRanges(self._s[2386]!, self._r[2386]!, [_0]) } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2386]! } - public var ReportSpam_DeleteThisChat: String { return self._s[2387]! } - public var Passport_Address_AddBankStatement: String { return self._s[2388]! } - public var Notification_CallIncoming: String { return self._s[2389]! } - public var Compose_NewGroupTitle: String { return self._s[2390]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2392]! } - public var Passport_Address_Postcode: String { return self._s[2394]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2388]! } + public var ReportSpam_DeleteThisChat: String { return self._s[2389]! } + public var Passport_Address_AddBankStatement: String { return self._s[2390]! } + public var Notification_CallIncoming: String { return self._s[2391]! } + public var Compose_NewGroupTitle: String { return self._s[2392]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2394]! } + public var Passport_Address_Postcode: String { return self._s[2396]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2395]!, self._r[2395]!, [_0]) + return formatWithArgumentRanges(self._s[2397]!, self._r[2397]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2396]! } - public var WallpaperColors_Title: String { return self._s[2397]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2398]! } - public var GroupPermission_Duration: String { return self._s[2399]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2398]! } + public var WallpaperColors_Title: String { return self._s[2399]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2400]! } + public var GroupPermission_Duration: String { return self._s[2401]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2400]!, self._r[2400]!, [_0]) + return formatWithArgumentRanges(self._s[2402]!, self._r[2402]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2401]! } - public var Username_Placeholder: String { return self._s[2402]! } - public var CallFeedback_WhatWentWrong: String { return self._s[2403]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2404]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2405]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2403]! } + public var Username_Placeholder: String { return self._s[2404]! } + public var CallFeedback_WhatWentWrong: String { return self._s[2405]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2406]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2407]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2407]!, self._r[2407]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2409]!, self._r[2409]!, [_1, _2]) } - public var Passport_PasswordDescription: String { return self._s[2408]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2409]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2410]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2411]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2412]! } - public var Conversation_ContextMenuMore: String { return self._s[2413]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2414]! } - public var CallSettings_TabIcon: String { return self._s[2415]! } - public var KeyCommand_Find: String { return self._s[2416]! } - public var Message_PinnedGame: String { return self._s[2417]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2419]! } - public var Login_CallRequestState2: String { return self._s[2421]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2423]! } + public var Passport_PasswordDescription: String { return self._s[2410]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2411]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2412]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2413]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2414]! } + public var Conversation_ContextMenuMore: String { return self._s[2415]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2416]! } + public var CallSettings_TabIcon: String { return self._s[2417]! } + public var KeyCommand_Find: String { return self._s[2418]! } + public var Message_PinnedGame: String { return self._s[2419]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2421]! } + public var Login_CallRequestState2: String { return self._s[2423]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2425]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2425]!, self._r[2425]!, [_0]) + return formatWithArgumentRanges(self._s[2427]!, self._r[2427]!, [_0]) } - public var WallpaperPreview_Blurred: String { return self._s[2426]! } - public var Conversation_InstantPagePreview: String { return self._s[2427]! } + public var WallpaperPreview_Blurred: String { return self._s[2428]! } + public var Conversation_InstantPagePreview: String { return self._s[2429]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_0]) + return formatWithArgumentRanges(self._s[2430]!, self._r[2430]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2431]! } - public var WallpaperSearch_ColorRed: String { return self._s[2432]! } - public var GroupPermission_NoPinMessages: String { return self._s[2433]! } - public var Passport_Language_es: String { return self._s[2434]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2436]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2437]! } + public var SecretTimer_VideoDescription: String { return self._s[2433]! } + public var WallpaperSearch_ColorRed: String { return self._s[2434]! } + public var GroupPermission_NoPinMessages: String { return self._s[2435]! } + public var Passport_Language_es: String { return self._s[2436]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2438]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2439]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2438]!, self._r[2438]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2440]!, self._r[2440]!, [_1, _2]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[2439]! } - public var WebPreview_GettingLinkInfo: String { return self._s[2440]! } - public var Watch_UserInfo_Unmute: String { return self._s[2441]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2442]! } - public var AccessDenied_CameraRestricted: String { return self._s[2444]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[2441]! } + public var WebPreview_GettingLinkInfo: String { return self._s[2442]! } + public var Watch_UserInfo_Unmute: String { return self._s[2443]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2444]! } + public var AccessDenied_CameraRestricted: String { return self._s[2446]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2445]!, self._r[2445]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2447]!, self._r[2447]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2447]! } - public var Settings_CopyUsername: String { return self._s[2448]! } - public var Contacts_SearchLabel: String { return self._s[2449]! } - public var Map_OpenInYandexNavigator: String { return self._s[2451]! } - public var PasscodeSettings_EncryptData: String { return self._s[2452]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[2453]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2454]! } - public var DialogList_AdNoticeAlert: String { return self._s[2455]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2457]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2458]! } - public var Localization_LanguageCustom: String { return self._s[2459]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2460]! } - public var CallFeedback_Title: String { return self._s[2461]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2464]! } - public var Conversation_InfoGroup: String { return self._s[2465]! } - public var Compose_NewMessage: String { return self._s[2466]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2467]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2468]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2469]! } + public var ChatList_ReadAll: String { return self._s[2449]! } + public var Settings_CopyUsername: String { return self._s[2450]! } + public var Contacts_SearchLabel: String { return self._s[2451]! } + public var Map_OpenInYandexNavigator: String { return self._s[2453]! } + public var PasscodeSettings_EncryptData: String { return self._s[2454]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2455]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2456]! } + public var DialogList_AdNoticeAlert: String { return self._s[2457]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2459]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2460]! } + public var Localization_LanguageCustom: String { return self._s[2461]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2462]! } + public var CallFeedback_Title: String { return self._s[2463]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2466]! } + public var Conversation_InfoGroup: String { return self._s[2467]! } + public var Compose_NewMessage: String { return self._s[2468]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2469]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2470]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2471]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2470]!, self._r[2470]!, [_0]) + return formatWithArgumentRanges(self._s[2472]!, self._r[2472]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2471]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2472]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2473]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2474]! } - public var Channel_BlackList_Title: String { return self._s[2475]! } - public var UserInfo_PhoneCall: String { return self._s[2476]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2478]! } - public var State_connecting: String { return self._s[2479]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2473]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2474]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2475]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2476]! } + public var Channel_BlackList_Title: String { return self._s[2477]! } + public var UserInfo_PhoneCall: String { return self._s[2478]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2480]! } + public var State_connecting: String { return self._s[2481]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2480]!, self._r[2480]!, [_0]) + return formatWithArgumentRanges(self._s[2482]!, self._r[2482]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2481]! } - public var Passport_Identity_EditPassport: String { return self._s[2482]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2484]! } - public var Localization_EnglishLanguageName: String { return self._s[2485]! } - public var Share_AuthDescription: String { return self._s[2486]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2487]! } - public var Passport_Identity_Surname: String { return self._s[2488]! } - public var Compose_TokenListPlaceholder: String { return self._s[2489]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2490]! } - public var Settings_AboutEmpty: String { return self._s[2491]! } - public var Conversation_Unmute: String { return self._s[2492]! } + public var Notifications_GroupNotifications: String { return self._s[2483]! } + public var Passport_Identity_EditPassport: String { return self._s[2484]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2486]! } + public var Localization_EnglishLanguageName: String { return self._s[2487]! } + public var Share_AuthDescription: String { return self._s[2488]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2489]! } + public var Passport_Identity_Surname: String { return self._s[2490]! } + public var Compose_TokenListPlaceholder: String { return self._s[2491]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2492]! } + public var Settings_AboutEmpty: String { return self._s[2493]! } + public var Conversation_Unmute: String { return self._s[2494]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2494]!, self._r[2494]!, [_1]) + return formatWithArgumentRanges(self._s[2496]!, self._r[2496]!, [_1]) } - public var Login_CodeSentCall: String { return self._s[2495]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2497]! } - public var ChatSettings_Appearance: String { return self._s[2498]! } - public var Appearance_PickAccentColor: String { return self._s[2499]! } + public var Login_CodeSentCall: String { return self._s[2497]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2499]! } + public var ChatSettings_Appearance: String { return self._s[2500]! } + public var Appearance_PickAccentColor: String { return self._s[2501]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2500]!, self._r[2500]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_1]) + return formatWithArgumentRanges(self._s[2503]!, self._r[2503]!, [_1]) } - public var Notification_CallMissed: String { return self._s[2502]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2503]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2504]! } - public var ChatAdmins_AdminLabel: String { return self._s[2506]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2507]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2509]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2510]! } - public var Month_GenJune: String { return self._s[2511]! } - public var Watch_Location_Current: String { return self._s[2512]! } - public var Conversation_TitleMute: String { return self._s[2513]! } + public var Notification_CallMissed: String { return self._s[2504]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2505]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2506]! } + public var ChatAdmins_AdminLabel: String { return self._s[2508]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2509]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2511]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2512]! } + public var Month_GenJune: String { return self._s[2513]! } + public var Watch_Location_Current: String { return self._s[2514]! } + public var Conversation_TitleMute: String { return self._s[2515]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2514]!, self._r[2514]!, [_1]) + return formatWithArgumentRanges(self._s[2516]!, self._r[2516]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2515]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2517]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2516]!, self._r[2516]!, [_0]) + return formatWithArgumentRanges(self._s[2518]!, self._r[2518]!, [_0]) } - public var Call_ReportPlaceholder: String { return self._s[2517]! } - public var MaskStickerSettings_Info: String { return self._s[2518]! } + public var Call_ReportPlaceholder: String { return self._s[2519]! } + public var MaskStickerSettings_Info: String { return self._s[2520]! } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2519]!, self._r[2519]!, [_0]) + return formatWithArgumentRanges(self._s[2521]!, self._r[2521]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2520]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2522]! } - public var Contacts_ShareTelegram: String { return self._s[2523]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2524]! } - public var Channel_ErrorAccessDenied: String { return self._s[2525]! } - public var UserInfo_ScamBotWarning: String { return self._s[2527]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2528]! } - public var Call_ConnectionErrorTitle: String { return self._s[2529]! } - public var UserInfo_NotificationsEnable: String { return self._s[2530]! } - public var ArchivedChats_IntroText1: String { return self._s[2531]! } - public var Tour_Text4: String { return self._s[2534]! } - public var WallpaperSearch_Recent: String { return self._s[2535]! } - public var GroupInfo_ScamGroupWarning: String { return self._s[2536]! } - public var Profile_MessageLifetime2s: String { return self._s[2538]! } - public var Notification_MessageLifetime2s: String { return self._s[2539]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2522]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2524]! } + public var Contacts_ShareTelegram: String { return self._s[2525]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2526]! } + public var Channel_ErrorAccessDenied: String { return self._s[2527]! } + public var UserInfo_ScamBotWarning: String { return self._s[2529]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[2530]! } + public var Call_ConnectionErrorTitle: String { return self._s[2531]! } + public var UserInfo_NotificationsEnable: String { return self._s[2532]! } + public var ArchivedChats_IntroText1: String { return self._s[2533]! } + public var Tour_Text4: String { return self._s[2536]! } + public var WallpaperSearch_Recent: String { return self._s[2537]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[2538]! } + public var Profile_MessageLifetime2s: String { return self._s[2540]! } + public var Notification_MessageLifetime2s: String { return self._s[2541]! } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2540]!, self._r[2540]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2542]!, self._r[2542]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[2541]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2542]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2543]! } + public var Cache_ClearCache: String { return self._s[2543]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[2544]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2545]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2547]!, self._r[2547]!, [_0]) - } - public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2549]!, self._r[2549]!, [_0]) } - public var LocalGroup_Text: String { return self._s[2550]! } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2551]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2552]! } - public var ChatList_UnarchiveAction: String { return self._s[2553]! } - public var AutoNightTheme_Title: String { return self._s[2554]! } - public var InstantPage_FeedbackButton: String { return self._s[2555]! } - public var Passport_FieldAddress: String { return self._s[2556]! } - public var Month_ShortMarch: String { return self._s[2557]! } + public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2551]!, self._r[2551]!, [_0]) + } + public var LocalGroup_Text: String { return self._s[2552]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2553]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2554]! } + public var ChatList_UnarchiveAction: String { return self._s[2555]! } + public var AutoNightTheme_Title: String { return self._s[2556]! } + public var InstantPage_FeedbackButton: String { return self._s[2557]! } + public var Passport_FieldAddress: String { return self._s[2558]! } + public var Month_ShortMarch: String { return self._s[2559]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2558]!, self._r[2558]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2560]!, self._r[2560]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2559]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2560]! } - public var Passport_FloodError: String { return self._s[2561]! } - public var SecretGif_Title: String { return self._s[2562]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2563]! } - public var Passport_Language_th: String { return self._s[2565]! } - public var Passport_Address_Address: String { return self._s[2566]! } - public var Login_InvalidLastNameError: String { return self._s[2567]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2568]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2569]! } - public var SettingsSearch_FAQ: String { return self._s[2570]! } - public var ShareMenu_Send: String { return self._s[2571]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2573]! } - public var Month_GenNovember: String { return self._s[2575]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2577]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2561]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2562]! } + public var Passport_FloodError: String { return self._s[2563]! } + public var SecretGif_Title: String { return self._s[2564]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2565]! } + public var Passport_Language_th: String { return self._s[2567]! } + public var Passport_Address_Address: String { return self._s[2568]! } + public var Login_InvalidLastNameError: String { return self._s[2569]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2570]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2571]! } + public var SettingsSearch_FAQ: String { return self._s[2572]! } + public var ShareMenu_Send: String { return self._s[2573]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2575]! } + public var Month_GenNovember: String { return self._s[2577]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2579]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2578]!, self._r[2578]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2580]!, self._r[2580]!, [_1, _2]) } - public var Checkout_Email: String { return self._s[2579]! } - public var NotificationsSound_Tritone: String { return self._s[2580]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2582]! } + public var Checkout_Email: String { return self._s[2581]! } + public var NotificationsSound_Tritone: String { return self._s[2582]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2584]! } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2585]!, self._r[2585]!, [_1]) + return formatWithArgumentRanges(self._s[2587]!, self._r[2587]!, [_1]) } - public var ChangePhoneNumberNumber_Help: String { return self._s[2586]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2588]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2587]!, self._r[2587]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2589]!, self._r[2589]!, [_1, _1, _1, _2]) } - public var ChatList_UndoArchiveTitle: String { return self._s[2588]! } - public var Notification_Exceptions_Add: String { return self._s[2589]! } - public var DialogList_You: String { return self._s[2590]! } - public var MediaPicker_Send: String { return self._s[2593]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2594]! } - public var Call_AudioRouteSpeaker: String { return self._s[2595]! } - public var Watch_UserInfo_Title: String { return self._s[2596]! } - public var Appearance_AccentColor: String { return self._s[2597]! } + public var ChatList_UndoArchiveTitle: String { return self._s[2590]! } + public var Notification_Exceptions_Add: String { return self._s[2591]! } + public var DialogList_You: String { return self._s[2592]! } + public var MediaPicker_Send: String { return self._s[2595]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2596]! } + public var Call_AudioRouteSpeaker: String { return self._s[2597]! } + public var Watch_UserInfo_Title: String { return self._s[2598]! } + public var Appearance_AccentColor: String { return self._s[2599]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2598]!, self._r[2598]!, [_0]) + return formatWithArgumentRanges(self._s[2600]!, self._r[2600]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2599]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2601]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2600]!, self._r[2600]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2602]!, self._r[2602]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2601]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2602]! } - public var Notification_CallOutgoing: String { return self._s[2603]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2604]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2605]! } - public var Call_RecordingDisabledMessage: String { return self._s[2606]! } - public var Message_Game: String { return self._s[2607]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[2608]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2609]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2610]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2611]! } - public var Date_DialogDateFormat: String { return self._s[2612]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2613]! } - public var Notifications_InAppNotifications: String { return self._s[2614]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2603]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2604]! } + public var Notification_CallOutgoing: String { return self._s[2605]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2606]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2607]! } + public var Call_RecordingDisabledMessage: String { return self._s[2608]! } + public var Message_Game: String { return self._s[2609]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[2610]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2611]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2612]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2613]! } + public var Date_DialogDateFormat: String { return self._s[2614]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2615]! } + public var Notifications_InAppNotifications: String { return self._s[2616]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2615]!, self._r[2615]!, [_0]) + return formatWithArgumentRanges(self._s[2617]!, self._r[2617]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2616]!, self._r[2616]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[2617]! } + public var NewContact_Title: String { return self._s[2619]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_0]) + return formatWithArgumentRanges(self._s[2620]!, self._r[2620]!, [_0]) } - public var Conversation_ViewContactDetails: String { return self._s[2619]! } + public var Conversation_ViewContactDetails: String { return self._s[2621]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2621]!, self._r[2621]!, [_1]) + return formatWithArgumentRanges(self._s[2623]!, self._r[2623]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2622]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2623]! } - public var PrivacySettings_Title: String { return self._s[2624]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2627]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2628]! } - public var Contacts_PhoneNumber: String { return self._s[2629]! } - public var Map_ShowPlaces: String { return self._s[2631]! } - public var ChatAdmins_Title: String { return self._s[2632]! } - public var InstantPage_Reference: String { return self._s[2634]! } - public var ReportGroupLocation_Text: String { return self._s[2635]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2624]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2625]! } + public var PrivacySettings_Title: String { return self._s[2626]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2629]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2630]! } + public var Contacts_PhoneNumber: String { return self._s[2631]! } + public var Map_ShowPlaces: String { return self._s[2633]! } + public var ChatAdmins_Title: String { return self._s[2634]! } + public var InstantPage_Reference: String { return self._s[2636]! } + public var ReportGroupLocation_Text: String { return self._s[2637]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2636]!, self._r[2636]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2638]!, self._r[2638]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[2637]! } - public var Watch_UserInfo_Block: String { return self._s[2638]! } - public var ChatSettings_Stickers: String { return self._s[2639]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2640]! } + public var Camera_FlashOff: String { return self._s[2639]! } + public var Watch_UserInfo_Block: String { return self._s[2640]! } + public var ChatSettings_Stickers: String { return self._s[2641]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2642]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2641]!, self._r[2641]!, [_0]) + return formatWithArgumentRanges(self._s[2643]!, self._r[2643]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2642]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2643]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2644]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2645]! } + public var Settings_ViewPhoto: String { return self._s[2644]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2645]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2646]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2647]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2647]!, self._r[2647]!, [_0]) + return formatWithArgumentRanges(self._s[2649]!, self._r[2649]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[2648]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2649]! } + public var Privacy_DeleteDrafts: String { return self._s[2650]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2651]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2650]!, self._r[2650]!, [_0]) + return formatWithArgumentRanges(self._s[2652]!, self._r[2652]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[2651]! } - public var DialogList_SavedMessages: String { return self._s[2652]! } - public var GroupInfo_UpgradeButton: String { return self._s[2653]! } - public var DialogList_Pin: String { return self._s[2655]! } + public var DialogList_SavedMessagesHelp: String { return self._s[2653]! } + public var DialogList_SavedMessages: String { return self._s[2654]! } + public var GroupInfo_UpgradeButton: String { return self._s[2655]! } + public var DialogList_Pin: String { return self._s[2657]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2656]!, self._r[2656]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2657]!, self._r[2657]!, [_0]) + return formatWithArgumentRanges(self._s[2659]!, self._r[2659]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2658]! } - public var UserInfo_NotificationsDisable: String { return self._s[2659]! } - public var Paint_Outlined: String { return self._s[2660]! } - public var Activity_PlayingGame: String { return self._s[2661]! } - public var SearchImages_NoImagesFound: String { return self._s[2662]! } - public var SocksProxySetup_ProxyType: String { return self._s[2663]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2665]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[2666]! } - public var Settings_AppLanguage: String { return self._s[2667]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2668]! } - public var Common_ChoosePhoto: String { return self._s[2669]! } - public var CallFeedback_ReasonEcho: String { return self._s[2670]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2660]! } + public var UserInfo_NotificationsDisable: String { return self._s[2661]! } + public var Paint_Outlined: String { return self._s[2662]! } + public var Activity_PlayingGame: String { return self._s[2663]! } + public var SearchImages_NoImagesFound: String { return self._s[2664]! } + public var SocksProxySetup_ProxyType: String { return self._s[2665]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2667]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[2668]! } + public var Settings_AppLanguage: String { return self._s[2669]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2670]! } + public var Common_ChoosePhoto: String { return self._s[2671]! } + public var CallFeedback_ReasonEcho: String { return self._s[2672]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2671]!, self._r[2671]!, [_1]) + return formatWithArgumentRanges(self._s[2673]!, self._r[2673]!, [_1]) } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2672]! } - public var Activity_UploadingVideo: String { return self._s[2673]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2674]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2675]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2676]! } - public var Checkout_PayWithTouchId: String { return self._s[2677]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2678]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2674]! } + public var Activity_UploadingVideo: String { return self._s[2675]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2676]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2677]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2678]! } + public var Checkout_PayWithTouchId: String { return self._s[2679]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2680]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2680]!, self._r[2680]!, [_1]) + return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_1]) } - public var Notifications_ExceptionsNone: String { return self._s[2681]! } + public var Notifications_ExceptionsNone: String { return self._s[2683]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_0]) + return formatWithArgumentRanges(self._s[2684]!, self._r[2684]!, [_0]) } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2683]!, self._r[2683]!, [_1]) + return formatWithArgumentRanges(self._s[2685]!, self._r[2685]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2685]! } - public var Passport_Address_Region: String { return self._s[2688]! } - public var ChatList_DeleteChat: String { return self._s[2689]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2690]! } - public var PhotoEditor_TiltShift: String { return self._s[2691]! } - public var Settings_FAQ_URL: String { return self._s[2692]! } - public var Passport_Language_sl: String { return self._s[2693]! } - public var Settings_PrivacySettings: String { return self._s[2695]! } - public var SharedMedia_TitleLink: String { return self._s[2696]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2697]! } - public var Settings_SetProfilePhoto: String { return self._s[2698]! } - public var Channel_About_Help: String { return self._s[2699]! } - public var Contacts_PermissionsEnable: String { return self._s[2700]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2701]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2702]! } - public var CallFeedback_ReasonInterruption: String { return self._s[2704]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2705]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2706]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2707]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2708]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2710]! } - public var Map_OpenInYandexMaps: String { return self._s[2712]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2713]! } - public var PhotoEditor_SaturationTool: String { return self._s[2714]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[2687]! } + public var Passport_Address_Region: String { return self._s[2690]! } + public var ChatList_DeleteChat: String { return self._s[2691]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2692]! } + public var PhotoEditor_TiltShift: String { return self._s[2693]! } + public var Settings_FAQ_URL: String { return self._s[2694]! } + public var Passport_Language_sl: String { return self._s[2695]! } + public var Settings_PrivacySettings: String { return self._s[2697]! } + public var SharedMedia_TitleLink: String { return self._s[2698]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2699]! } + public var Settings_SetProfilePhoto: String { return self._s[2700]! } + public var Channel_About_Help: String { return self._s[2701]! } + public var Contacts_PermissionsEnable: String { return self._s[2702]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2703]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[2704]! } + public var CallFeedback_ReasonInterruption: String { return self._s[2706]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[2707]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2708]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2709]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[2710]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2712]! } + public var Map_OpenInYandexMaps: String { return self._s[2714]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2715]! } + public var PhotoEditor_SaturationTool: String { return self._s[2716]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2717]!, self._r[2717]!, [_1, _2]) } - public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2716]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2717]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2718]! } - public var Appearance_TextSize: String { return self._s[2719]! } + public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2718]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2719]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2720]! } + public var Appearance_TextSize: String { return self._s[2721]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2720]!, self._r[2720]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2722]!, self._r[2722]!, [_1, "\(_2)"]) } - public var Channel_Username_InvalidTooShort: String { return self._s[2722]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2724]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2723]!, self._r[2723]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2724]!, self._r[2724]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_1, _2, _3]) } - public var GroupInfo_PublicLinkAdd: String { return self._s[2725]! } - public var Passport_PassportInformation: String { return self._s[2728]! } - public var WatchRemote_AlertTitle: String { return self._s[2729]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2730]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2732]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[2727]! } + public var Passport_PassportInformation: String { return self._s[2730]! } + public var WatchRemote_AlertTitle: String { return self._s[2731]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2732]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2734]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2733]!, self._r[2733]!, [_0]) + return formatWithArgumentRanges(self._s[2735]!, self._r[2735]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2734]!, self._r[2734]!, [_1]) + return formatWithArgumentRanges(self._s[2736]!, self._r[2736]!, [_1]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2735]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2737]! } - public var AccessDenied_CameraDisabled: String { return self._s[2738]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2737]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2739]! } + public var AccessDenied_CameraDisabled: String { return self._s[2740]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2739]!, self._r[2739]!, [_0]) + return formatWithArgumentRanges(self._s[2741]!, self._r[2741]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2742]! } + public var PhotoEditor_ContrastTool: String { return self._s[2744]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2743]!, self._r[2743]!, [_1]) + return formatWithArgumentRanges(self._s[2745]!, self._r[2745]!, [_1]) } - public var DialogList_Draft: String { return self._s[2744]! } - public var Privacy_TopPeersDelete: String { return self._s[2746]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2747]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2748]! } - public var WebSearch_RecentSectionClear: String { return self._s[2749]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2751]! } - public var Common_Done: String { return self._s[2753]! } - public var AuthSessions_EmptyText: String { return self._s[2754]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2755]! } - public var Tour_Title5: String { return self._s[2756]! } + public var DialogList_Draft: String { return self._s[2746]! } + public var Privacy_TopPeersDelete: String { return self._s[2748]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2749]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2750]! } + public var WebSearch_RecentSectionClear: String { return self._s[2751]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2753]! } + public var Common_Done: String { return self._s[2755]! } + public var AuthSessions_EmptyText: String { return self._s[2756]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2757]! } + public var Tour_Title5: String { return self._s[2758]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_0]) + return formatWithArgumentRanges(self._s[2759]!, self._r[2759]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2758]! } - public var Conversation_LinkDialogSave: String { return self._s[2759]! } - public var GroupInfo_ActionRestrict: String { return self._s[2760]! } - public var Checkout_Title: String { return self._s[2761]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2763]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2765]! } - public var Notification_RenamedGroup: String { return self._s[2766]! } - public var PeopleNearby_Groups: String { return self._s[2767]! } - public var Checkout_PayWithFaceId: String { return self._s[2768]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2769]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2771]! } - public var Checkout_WebConfirmation_Title: String { return self._s[2772]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2773]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2760]! } + public var Conversation_LinkDialogSave: String { return self._s[2761]! } + public var GroupInfo_ActionRestrict: String { return self._s[2762]! } + public var Checkout_Title: String { return self._s[2763]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2765]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2767]! } + public var Notification_RenamedGroup: String { return self._s[2768]! } + public var PeopleNearby_Groups: String { return self._s[2769]! } + public var Checkout_PayWithFaceId: String { return self._s[2770]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2771]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2773]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2774]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2775]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2774]!, self._r[2774]!, [_0]) + return formatWithArgumentRanges(self._s[2776]!, self._r[2776]!, [_0]) } - public var Profile_AddToExisting: String { return self._s[2776]! } + public var Profile_AddToExisting: String { return self._s[2778]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2777]!, self._r[2777]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2779]!, self._r[2779]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2779]! } - public var Permissions_PrivacyPolicy: String { return self._s[2780]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2781]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2782]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2784]! } - public var Calls_NoCallsPlaceholder: String { return self._s[2786]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2787]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2789]! } + public var Cache_Files: String { return self._s[2781]! } + public var Permissions_PrivacyPolicy: String { return self._s[2782]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2783]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2784]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2786]! } + public var Calls_NoCallsPlaceholder: String { return self._s[2788]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2789]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2791]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2790]!, self._r[2790]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2791]! } - public var Passport_FieldAddressHelp: String { return self._s[2792]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2793]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2793]! } + public var Passport_FieldAddressHelp: String { return self._s[2794]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2795]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2794]!, self._r[2794]!, [_0]) + return formatWithArgumentRanges(self._s[2796]!, self._r[2796]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[2795]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2797]! } - public var Login_UnknownError: String { return self._s[2798]! } - public var Group_UpgradeNoticeText2: String { return self._s[2800]! } - public var Watch_Compose_AddContact: String { return self._s[2801]! } - public var Web_Error: String { return self._s[2802]! } - public var Gif_Search: String { return self._s[2803]! } - public var Profile_MessageLifetime1h: String { return self._s[2804]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2805]! } - public var Channel_Username_CheckingUsername: String { return self._s[2806]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[2807]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2808]! } - public var Channel_AboutItem: String { return self._s[2809]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2811]! } - public var GroupInfo_SharedMedia: String { return self._s[2812]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[2797]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2799]! } + public var Login_UnknownError: String { return self._s[2800]! } + public var Group_UpgradeNoticeText2: String { return self._s[2802]! } + public var Watch_Compose_AddContact: String { return self._s[2803]! } + public var Web_Error: String { return self._s[2804]! } + public var Gif_Search: String { return self._s[2805]! } + public var Profile_MessageLifetime1h: String { return self._s[2806]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2807]! } + public var Channel_Username_CheckingUsername: String { return self._s[2808]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[2809]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2810]! } + public var Channel_AboutItem: String { return self._s[2811]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2813]! } + public var GroupInfo_SharedMedia: String { return self._s[2814]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2813]!, self._r[2813]!, [_1]) - } - public var Call_PhoneCallInProgressMessage: String { return self._s[2814]! } - public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_1]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[2816]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2817]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[2818]! } - public var CreatePoll_AddOption: String { return self._s[2819]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2820]! } - public var Group_UpgradeNoticeHeader: String { return self._s[2821]! } - public var Channel_Management_AddModerator: String { return self._s[2822]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2823]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[2824]! } - public var NotificationsSound_Hello: String { return self._s[2825]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2826]! } - public var Channel_Stickers_Placeholder: String { return self._s[2828]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[2816]! } + public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_1]) + } + public var ChatList_UndoArchiveRevealedText: String { return self._s[2818]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2819]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[2820]! } + public var CreatePoll_AddOption: String { return self._s[2821]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2822]! } + public var Group_UpgradeNoticeHeader: String { return self._s[2823]! } + public var Channel_Management_AddModerator: String { return self._s[2824]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2825]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[2826]! } + public var NotificationsSound_Hello: String { return self._s[2827]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2828]! } + public var Channel_Stickers_Placeholder: String { return self._s[2830]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2829]!, self._r[2829]!, [_0]) + return formatWithArgumentRanges(self._s[2831]!, self._r[2831]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2830]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[2831]! } - public var ContactInfo_BirthdayLabel: String { return self._s[2832]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2833]! } - public var AutoDownloadSettings_Channels: String { return self._s[2834]! } - public var Passport_Language_mn: String { return self._s[2835]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[2838]! } - public var Passport_Language_ja: String { return self._s[2840]! } - public var Settings_About_Title: String { return self._s[2841]! } - public var Settings_NotificationsAndSounds: String { return self._s[2842]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2843]! } - public var Settings_BlockedUsers: String { return self._s[2844]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2832]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[2833]! } + public var ContactInfo_BirthdayLabel: String { return self._s[2834]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2835]! } + public var AutoDownloadSettings_Channels: String { return self._s[2836]! } + public var Passport_Language_mn: String { return self._s[2837]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[2840]! } + public var Passport_Language_ja: String { return self._s[2842]! } + public var Settings_About_Title: String { return self._s[2843]! } + public var Settings_NotificationsAndSounds: String { return self._s[2844]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2845]! } + public var Settings_BlockedUsers: String { return self._s[2846]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2845]!, self._r[2845]!, [_0]) + return formatWithArgumentRanges(self._s[2847]!, self._r[2847]!, [_0]) } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[2846]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[2847]! } - public var Channel_Username_Title: String { return self._s[2848]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[2848]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[2849]! } + public var Channel_Username_Title: String { return self._s[2850]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2849]!, self._r[2849]!, [_0]) + return formatWithArgumentRanges(self._s[2851]!, self._r[2851]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[2851]! } - public var AppleWatch_Title: String { return self._s[2852]! } - public var Activity_RecordingVideoMessage: String { return self._s[2853]! } + public var AttachmentMenu_File: String { return self._s[2853]! } + public var AppleWatch_Title: String { return self._s[2854]! } + public var Activity_RecordingVideoMessage: String { return self._s[2855]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2854]!, self._r[2854]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2856]!, self._r[2856]!, [_1, _2]) } - public var Weekday_Saturday: String { return self._s[2855]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2856]! } - public var Profile_CreateEncryptedChatError: String { return self._s[2857]! } - public var Common_Next: String { return self._s[2859]! } - public var Channel_Stickers_YourStickers: String { return self._s[2861]! } - public var Call_AudioRouteHeadphones: String { return self._s[2862]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2864]! } - public var Watch_Contacts_NoResults: String { return self._s[2866]! } - public var PhotoEditor_TintTool: String { return self._s[2869]! } - public var LoginPassword_ResetAccount: String { return self._s[2871]! } - public var Settings_SavedMessages: String { return self._s[2872]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2873]! } - public var Bot_GenericSupportStatus: String { return self._s[2874]! } - public var StickerPack_Add: String { return self._s[2875]! } - public var Checkout_TotalAmount: String { return self._s[2876]! } - public var Your_cards_number_is_invalid: String { return self._s[2877]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2878]! } + public var Weekday_Saturday: String { return self._s[2857]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2858]! } + public var Profile_CreateEncryptedChatError: String { return self._s[2859]! } + public var Common_Next: String { return self._s[2861]! } + public var Channel_Stickers_YourStickers: String { return self._s[2863]! } + public var Call_AudioRouteHeadphones: String { return self._s[2864]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2866]! } + public var Watch_Contacts_NoResults: String { return self._s[2868]! } + public var PhotoEditor_TintTool: String { return self._s[2871]! } + public var LoginPassword_ResetAccount: String { return self._s[2873]! } + public var Settings_SavedMessages: String { return self._s[2874]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2875]! } + public var Bot_GenericSupportStatus: String { return self._s[2876]! } + public var StickerPack_Add: String { return self._s[2877]! } + public var Checkout_TotalAmount: String { return self._s[2878]! } + public var Your_cards_number_is_invalid: String { return self._s[2879]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2880]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2879]!, self._r[2879]!, [_0]) + return formatWithArgumentRanges(self._s[2881]!, self._r[2881]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2880]!, self._r[2880]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2882]!, self._r[2882]!, [_1, _2]) } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2881]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2883]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2885]!, self._r[2885]!, [_1, _2]) } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_0]) + return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[2885]! } - public var StickerPack_Share: String { return self._s[2886]! } - public var Passport_DeleteAddress: String { return self._s[2887]! } - public var Settings_Passport: String { return self._s[2888]! } - public var SharedMedia_EmptyFilesText: String { return self._s[2889]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[2890]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2891]! } - public var Contacts_PermissionsText: String { return self._s[2892]! } - public var Group_Setup_HistoryVisible: String { return self._s[2893]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[2895]! } - public var SocksProxySetup_Title: String { return self._s[2896]! } - public var Notification_Mute1h: String { return self._s[2897]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[2887]! } + public var StickerPack_Share: String { return self._s[2888]! } + public var Passport_DeleteAddress: String { return self._s[2889]! } + public var Settings_Passport: String { return self._s[2890]! } + public var SharedMedia_EmptyFilesText: String { return self._s[2891]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[2892]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2893]! } + public var Contacts_PermissionsText: String { return self._s[2894]! } + public var Group_Setup_HistoryVisible: String { return self._s[2895]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[2897]! } + public var SocksProxySetup_Title: String { return self._s[2898]! } + public var Notification_Mute1h: String { return self._s[2899]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2898]!, self._r[2898]!, [_0]) + return formatWithArgumentRanges(self._s[2900]!, self._r[2900]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2899]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2901]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2900]!, self._r[2900]!, [_1]) + return formatWithArgumentRanges(self._s[2902]!, self._r[2902]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[2901]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2904]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2906]! } - public var DialogList_NoMessagesText: String { return self._s[2907]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[2908]! } - public var Privacy_Calls_P2PHelp: String { return self._s[2909]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2911]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[2912]! } - public var Common_TakePhotoOrVideo: String { return self._s[2913]! } - public var Call_StatusBusy: String { return self._s[2914]! } - public var Conversation_PinnedMessage: String { return self._s[2915]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2916]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2917]! } - public var Undo_ChatCleared: String { return self._s[2918]! } - public var AppleWatch_ReplyPresets: String { return self._s[2919]! } - public var Passport_DiscardMessageDescription: String { return self._s[2921]! } - public var Login_NetworkError: String { return self._s[2922]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[2903]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2906]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2908]! } + public var DialogList_NoMessagesText: String { return self._s[2909]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[2910]! } + public var Privacy_Calls_P2PHelp: String { return self._s[2911]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2913]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[2914]! } + public var Common_TakePhotoOrVideo: String { return self._s[2915]! } + public var Call_StatusBusy: String { return self._s[2916]! } + public var Conversation_PinnedMessage: String { return self._s[2917]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2918]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2919]! } + public var Undo_ChatCleared: String { return self._s[2920]! } + public var AppleWatch_ReplyPresets: String { return self._s[2921]! } + public var Passport_DiscardMessageDescription: String { return self._s[2923]! } + public var Login_NetworkError: String { return self._s[2924]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2923]!, self._r[2923]!, [_0]) + return formatWithArgumentRanges(self._s[2925]!, self._r[2925]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2924]!, self._r[2924]!, [_0]) + return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2925]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2927]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2927]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2929]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2929]!, self._r[2929]!, [_0]) + return formatWithArgumentRanges(self._s[2931]!, self._r[2931]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[2930]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2931]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2933]! } - public var ConversationMedia_Title: String { return self._s[2934]! } - public var EncryptionKey_Title: String { return self._s[2936]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2937]! } - public var Notification_Exceptions_AddException: String { return self._s[2938]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2939]! } - public var Profile_MessageLifetime1m: String { return self._s[2940]! } + public var Call_ConnectionErrorMessage: String { return self._s[2932]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2933]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2935]! } + public var ConversationMedia_Title: String { return self._s[2936]! } + public var EncryptionKey_Title: String { return self._s[2938]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2939]! } + public var Notification_Exceptions_AddException: String { return self._s[2940]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2941]! } + public var Profile_MessageLifetime1m: String { return self._s[2942]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2941]!, self._r[2941]!, [_1]) + return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_1]) } - public var Month_GenMay: String { return self._s[2942]! } + public var Month_GenMay: String { return self._s[2944]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_0]) + return formatWithArgumentRanges(self._s[2945]!, self._r[2945]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[2944]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2945]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[2946]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2948]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[2949]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[2950]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2951]! } - public var Camera_TapAndHoldForVideo: String { return self._s[2952]! } - public var Channel_JoinChannel: String { return self._s[2954]! } - public var Appearance_Animations: String { return self._s[2957]! } + public var PeopleNearby_Users: String { return self._s[2946]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2947]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[2948]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2950]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[2951]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[2952]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2953]! } + public var Camera_TapAndHoldForVideo: String { return self._s[2954]! } + public var Channel_JoinChannel: String { return self._s[2956]! } + public var Appearance_Animations: String { return self._s[2959]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2960]!, self._r[2960]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[2960]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[2962]! } - public var Passport_Address_Street: String { return self._s[2963]! } - public var Conversation_AddContact: String { return self._s[2964]! } - public var Login_PhonePlaceholder: String { return self._s[2965]! } - public var Channel_Members_InviteLink: String { return self._s[2967]! } - public var Bot_Stop: String { return self._s[2968]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2970]! } - public var Notification_PassportValueAddress: String { return self._s[2971]! } - public var Month_ShortJuly: String { return self._s[2972]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2973]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[2974]! } - public var Passport_Identity_ReverseSide: String { return self._s[2975]! } - public var Watch_Stickers_Recents: String { return self._s[2978]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2980]! } - public var Map_SendThisLocation: String { return self._s[2981]! } + public var Stickers_GroupStickers: String { return self._s[2962]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[2964]! } + public var Passport_Address_Street: String { return self._s[2965]! } + public var Conversation_AddContact: String { return self._s[2966]! } + public var Login_PhonePlaceholder: String { return self._s[2967]! } + public var Channel_Members_InviteLink: String { return self._s[2969]! } + public var Bot_Stop: String { return self._s[2970]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2972]! } + public var Notification_PassportValueAddress: String { return self._s[2973]! } + public var Month_ShortJuly: String { return self._s[2974]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2975]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[2976]! } + public var Passport_Identity_ReverseSide: String { return self._s[2977]! } + public var Watch_Stickers_Recents: String { return self._s[2980]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2982]! } + public var Map_SendThisLocation: String { return self._s[2983]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2982]!, self._r[2982]!, [_0]) + return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0]) } public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2983]!, self._r[2983]!, [_0]) - } - public var ConvertToSupergroup_Note: String { return self._s[2984]! } - public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2985]!, self._r[2985]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2986]! } + public var ConvertToSupergroup_Note: String { return self._s[2986]! } + public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) + } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2988]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2989]!, self._r[2989]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[2989]! } - public var Wallpaper_SearchShort: String { return self._s[2990]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2992]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2993]! } + public var Login_CallRequestState3: String { return self._s[2991]! } + public var Wallpaper_SearchShort: String { return self._s[2992]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2994]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2995]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2994]!, self._r[2994]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2996]!, self._r[2996]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[2995]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[2999]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2997]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3001]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3000]!, self._r[3000]!, [_0]) - } - public var Passport_CorrectErrors: String { return self._s[3001]! } - public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[3003]! } - public var Channel_DiscussionGroup: String { return self._s[3004]! } + public var Passport_CorrectErrors: String { return self._s[3003]! } + public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_0]) + } + public var Map_SendMyCurrentLocation: String { return self._s[3005]! } + public var Channel_DiscussionGroup: String { return self._s[3006]! } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3005]!, self._r[3005]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[3006]! } - public var Permissions_NotificationsText_v0: String { return self._s[3007]! } - public var Appearance_AppIcon: String { return self._s[3008]! } - public var LoginPassword_FloodError: String { return self._s[3009]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3011]! } + public var SharedMedia_SearchNoResults: String { return self._s[3008]! } + public var Permissions_NotificationsText_v0: String { return self._s[3009]! } + public var Appearance_AppIcon: String { return self._s[3010]! } + public var LoginPassword_FloodError: String { return self._s[3011]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3013]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3012]!, self._r[3012]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[3013]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) } - public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3015]!, self._r[3015]!, [_0]) - } - public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + public var Passport_Language_bn: String { return self._s[3015]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3016]!, self._r[3016]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3019]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3021]! } - public var Contacts_PermissionsAllow: String { return self._s[3022]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3023]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3024]! } - public var WallpaperPreview_Pattern: String { return self._s[3025]! } - public var Paint_Duplicate: String { return self._s[3026]! } - public var Passport_Address_Country: String { return self._s[3027]! } - public var Notification_RenamedChannel: String { return self._s[3029]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3030]! } - public var Group_MessagePhotoUpdated: String { return self._s[3031]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3032]! } - public var Conversation_ContextMenuBan: String { return self._s[3033]! } - public var TwoStepAuth_EmailSent: String { return self._s[3034]! } - public var MessagePoll_NoVotes: String { return self._s[3035]! } - public var Passport_Language_is: String { return self._s[3036]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3038]! } - public var Tour_Text5: String { return self._s[3039]! } + public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3017]!, self._r[3017]!, [_0]) + } + public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3018]!, self._r[3018]!, [_0]) + } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3021]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3023]! } + public var Contacts_PermissionsAllow: String { return self._s[3024]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3025]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3026]! } + public var WallpaperPreview_Pattern: String { return self._s[3027]! } + public var Paint_Duplicate: String { return self._s[3028]! } + public var Passport_Address_Country: String { return self._s[3029]! } + public var Notification_RenamedChannel: String { return self._s[3031]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3032]! } + public var Group_MessagePhotoUpdated: String { return self._s[3033]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3034]! } + public var Conversation_ContextMenuBan: String { return self._s[3035]! } + public var TwoStepAuth_EmailSent: String { return self._s[3036]! } + public var MessagePoll_NoVotes: String { return self._s[3037]! } + public var Passport_Language_is: String { return self._s[3038]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3040]! } + public var Tour_Text5: String { return self._s[3041]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3043]!, self._r[3043]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3042]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3043]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3044]! } - public var Paint_Edit: String { return self._s[3046]! } - public var Undo_DeletedGroup: String { return self._s[3049]! } - public var LoginPassword_ForgotPassword: String { return self._s[3050]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3051]! } + public var Undo_SecretChatDeleted: String { return self._s[3044]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3045]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3046]! } + public var Paint_Edit: String { return self._s[3048]! } + public var Undo_DeletedGroup: String { return self._s[3051]! } + public var LoginPassword_ForgotPassword: String { return self._s[3052]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3053]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3052]!, self._r[3052]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3054]!, self._r[3054]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3053]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3054]! } - public var Passport_Language_uz: String { return self._s[3055]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3056]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3057]! } - public var Map_StopLiveLocation: String { return self._s[3059]! } - public var PasscodeSettings_Help: String { return self._s[3061]! } - public var NotificationsSound_Input: String { return self._s[3062]! } - public var Share_Title: String { return self._s[3065]! } - public var LogoutOptions_Title: String { return self._s[3066]! } - public var Login_TermsOfServiceAgree: String { return self._s[3067]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3068]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3069]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3070]! } - public var EnterPasscode_EnterTitle: String { return self._s[3071]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3055]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3056]! } + public var Passport_Language_uz: String { return self._s[3057]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3058]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3059]! } + public var Map_StopLiveLocation: String { return self._s[3061]! } + public var PasscodeSettings_Help: String { return self._s[3063]! } + public var NotificationsSound_Input: String { return self._s[3064]! } + public var Share_Title: String { return self._s[3067]! } + public var LogoutOptions_Title: String { return self._s[3068]! } + public var Login_TermsOfServiceAgree: String { return self._s[3069]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3070]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3071]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3072]! } + public var EnterPasscode_EnterTitle: String { return self._s[3073]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3072]!, self._r[3072]!, [_0]) + return formatWithArgumentRanges(self._s[3074]!, self._r[3074]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3073]! } - public var Conversation_AddToContacts: String { return self._s[3074]! } - public var NotificationsSound_Keys: String { return self._s[3075]! } + public var Settings_CopyPhoneNumber: String { return self._s[3075]! } + public var Conversation_AddToContacts: String { return self._s[3076]! } + public var NotificationsSound_Keys: String { return self._s[3077]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3076]!, self._r[3076]!, [_0]) + return formatWithArgumentRanges(self._s[3078]!, self._r[3078]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3077]! } - public var Message_Video: String { return self._s[3078]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3079]! } + public var Notification_MessageLifetime1w: String { return self._s[3079]! } + public var Message_Video: String { return self._s[3080]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3081]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3080]!, self._r[3080]!, [_1]) + return formatWithArgumentRanges(self._s[3082]!, self._r[3082]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3083]!, self._r[3083]!, [_0]) + return formatWithArgumentRanges(self._s[3085]!, self._r[3085]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3084]!, self._r[3084]!, [_0]) + return formatWithArgumentRanges(self._s[3086]!, self._r[3086]!, [_0]) } - public var Passport_Language_mk: String { return self._s[3085]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3086]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3088]! } - public var PrivacyPolicy_Decline: String { return self._s[3089]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3090]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3091]! } - public var Permissions_SiriAllow_v0: String { return self._s[3093]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3094]! } + public var Passport_Language_mk: String { return self._s[3087]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3088]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3090]! } + public var PrivacyPolicy_Decline: String { return self._s[3091]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3092]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3093]! } + public var Permissions_SiriAllow_v0: String { return self._s[3095]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3096]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3095]!, self._r[3095]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3097]!, self._r[3097]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3096]!, self._r[3096]!, [_0]) + return formatWithArgumentRanges(self._s[3098]!, self._r[3098]!, [_0]) } - public var Paint_Regular: String { return self._s[3097]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3098]! } - public var SocksProxySetup_ShareLink: String { return self._s[3099]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3100]! } - public var GroupInfo_InviteByLink: String { return self._s[3102]! } - public var MessageTimer_Custom: String { return self._s[3103]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3104]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3106]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3107]! } - public var Channel_Username_InvalidTaken: String { return self._s[3108]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3109]! } - public var Settings_ChatBackground: String { return self._s[3110]! } - public var Channel_Subscribers_Title: String { return self._s[3111]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3112]! } - public var Watch_ConnectionDescription: String { return self._s[3113]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3117]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3118]! } - public var EditProfile_Title: String { return self._s[3119]! } - public var NotificationsSound_Bamboo: String { return self._s[3121]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3123]! } - public var Login_SmsRequestState2: String { return self._s[3124]! } - public var Passport_Language_ar: String { return self._s[3125]! } + public var Paint_Regular: String { return self._s[3099]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3100]! } + public var SocksProxySetup_ShareLink: String { return self._s[3101]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3102]! } + public var GroupInfo_InviteByLink: String { return self._s[3104]! } + public var MessageTimer_Custom: String { return self._s[3105]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3106]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3108]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3109]! } + public var Channel_Username_InvalidTaken: String { return self._s[3110]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3111]! } + public var Settings_ChatBackground: String { return self._s[3112]! } + public var Channel_Subscribers_Title: String { return self._s[3113]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3114]! } + public var Watch_ConnectionDescription: String { return self._s[3115]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3119]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3120]! } + public var EditProfile_Title: String { return self._s[3121]! } + public var NotificationsSound_Bamboo: String { return self._s[3123]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3125]! } + public var Login_SmsRequestState2: String { return self._s[3126]! } + public var Passport_Language_ar: String { return self._s[3127]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3126]!, self._r[3126]!, [_0]) + return formatWithArgumentRanges(self._s[3128]!, self._r[3128]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3127]! } - public var Conversation_MessageDialogEdit: String { return self._s[3128]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3129]! } + public var Conversation_MessageDialogEdit: String { return self._s[3130]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3129]!, self._r[3129]!, [_1]) + return formatWithArgumentRanges(self._s[3131]!, self._r[3131]!, [_1]) } - public var Common_Close: String { return self._s[3130]! } - public var GroupInfo_PublicLink: String { return self._s[3131]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3132]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3133]! } + public var Common_Close: String { return self._s[3132]! } + public var GroupInfo_PublicLink: String { return self._s[3133]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3134]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3135]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3137]!, self._r[3137]!, [_0]) - } - public var UserInfo_About_Placeholder: String { return self._s[3138]! } - public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3139]!, self._r[3139]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3140]! } - public var Channel_Info_Banned: String { return self._s[3142]! } + public var UserInfo_About_Placeholder: String { return self._s[3140]! } + public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3141]!, self._r[3141]!, [_0]) + } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3142]! } + public var Channel_Info_Banned: String { return self._s[3144]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3143]!, self._r[3143]!, [_0]) + return formatWithArgumentRanges(self._s[3145]!, self._r[3145]!, [_0]) } - public var Appearance_Other: String { return self._s[3144]! } - public var Passport_Language_my: String { return self._s[3145]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3146]! } + public var Appearance_Other: String { return self._s[3146]! } + public var Passport_Language_my: String { return self._s[3147]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3148]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3147]!, self._r[3147]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3149]!, self._r[3149]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3148]! } - public var Preview_CopyAddress: String { return self._s[3149]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3150]! } + public var Preview_CopyAddress: String { return self._s[3151]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3150]!, self._r[3150]!, [_0]) + return formatWithArgumentRanges(self._s[3152]!, self._r[3152]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3151]! } - public var UserInfo_BotSettings: String { return self._s[3152]! } - public var LiveLocation_MenuStopAll: String { return self._s[3154]! } - public var Passport_PasswordCreate: String { return self._s[3155]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3156]! } - public var Message_PinnedLocationMessage: String { return self._s[3157]! } - public var Map_Satellite: String { return self._s[3158]! } - public var Watch_Message_Unsupported: String { return self._s[3159]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3160]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3161]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3153]! } + public var UserInfo_BotSettings: String { return self._s[3154]! } + public var LiveLocation_MenuStopAll: String { return self._s[3156]! } + public var Passport_PasswordCreate: String { return self._s[3157]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3158]! } + public var Message_PinnedLocationMessage: String { return self._s[3159]! } + public var Map_Satellite: String { return self._s[3160]! } + public var Watch_Message_Unsupported: String { return self._s[3161]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3162]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3163]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3162]!, self._r[3162]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3164]!, self._r[3164]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3163]!, self._r[3163]!, [_0]) + return formatWithArgumentRanges(self._s[3165]!, self._r[3165]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3164]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3165]! } - public var NotificationsSound_None: String { return self._s[3166]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3168]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3169]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3166]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3167]! } + public var NotificationsSound_None: String { return self._s[3168]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3170]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3171]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3170]!, self._r[3170]!, [_1]) + return formatWithArgumentRanges(self._s[3172]!, self._r[3172]!, [_1]) } - public var Cache_Indexing: String { return self._s[3171]! } - public var DialogList_RecentTitlePeople: String { return self._s[3173]! } - public var DialogList_EncryptionRejected: String { return self._s[3174]! } - public var GroupInfo_Administrators: String { return self._s[3175]! } - public var Passport_ScanPassportHelp: String { return self._s[3176]! } - public var Application_Name: String { return self._s[3177]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3178]! } - public var Appearance_ThemeCarouselDay: String { return self._s[3180]! } - public var Passport_Identity_TranslationHelp: String { return self._s[3181]! } + public var Cache_Indexing: String { return self._s[3173]! } + public var DialogList_RecentTitlePeople: String { return self._s[3175]! } + public var DialogList_EncryptionRejected: String { return self._s[3176]! } + public var GroupInfo_Administrators: String { return self._s[3177]! } + public var Passport_ScanPassportHelp: String { return self._s[3178]! } + public var Application_Name: String { return self._s[3179]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3180]! } + public var Appearance_ThemeCarouselDay: String { return self._s[3182]! } + public var Passport_Identity_TranslationHelp: String { return self._s[3183]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3182]!, self._r[3182]!, [_0]) + return formatWithArgumentRanges(self._s[3184]!, self._r[3184]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3183]!, self._r[3183]!, [_0]) + return formatWithArgumentRanges(self._s[3185]!, self._r[3185]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3184]! } - public var Privacy_ChatsTitle: String { return self._s[3185]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[3186]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3187]! } - public var Watch_Suggestion_HoldOn: String { return self._s[3188]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3189]! } - public var Group_LinkedChannel: String { return self._s[3190]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[3191]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3192]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[3193]! } - public var Channel_Setup_TypePublic: String { return self._s[3196]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3186]! } + public var Privacy_ChatsTitle: String { return self._s[3187]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[3188]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3189]! } + public var Watch_Suggestion_HoldOn: String { return self._s[3190]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3191]! } + public var Group_LinkedChannel: String { return self._s[3192]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[3193]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3194]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[3195]! } + public var Channel_Setup_TypePublic: String { return self._s[3198]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3197]!, self._r[3197]!, [_0]) + return formatWithArgumentRanges(self._s[3199]!, self._r[3199]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[3199]! } - public var Map_OpenInMaps: String { return self._s[3201]! } + public var Channel_TypeSetup_Title: String { return self._s[3201]! } + public var Map_OpenInMaps: String { return self._s[3203]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3202]!, self._r[3202]!, [_1]) + return formatWithArgumentRanges(self._s[3204]!, self._r[3204]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[3204]! } + public var NotificationsSound_Tremolo: String { return self._s[3206]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3205]!, self._r[3205]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3207]!, self._r[3207]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3206]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3207]! } - public var Passport_PasswordHelp: String { return self._s[3208]! } - public var Login_CodeExpiredError: String { return self._s[3209]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3210]! } - public var Conversation_TitleUnmute: String { return self._s[3211]! } - public var Passport_Identity_ScansHelp: String { return self._s[3212]! } - public var Passport_Language_lo: String { return self._s[3213]! } - public var Camera_FlashAuto: String { return self._s[3214]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3215]! } - public var Common_Cancel: String { return self._s[3216]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[3217]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3218]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3208]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3209]! } + public var Passport_PasswordHelp: String { return self._s[3210]! } + public var Login_CodeExpiredError: String { return self._s[3211]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3212]! } + public var Conversation_TitleUnmute: String { return self._s[3213]! } + public var Passport_Identity_ScansHelp: String { return self._s[3214]! } + public var Passport_Language_lo: String { return self._s[3215]! } + public var Camera_FlashAuto: String { return self._s[3216]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3217]! } + public var Common_Cancel: String { return self._s[3218]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[3219]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3220]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3219]!, self._r[3219]!, [_1]) + return formatWithArgumentRanges(self._s[3221]!, self._r[3221]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[3220]! } - public var ChatSettings_Title: String { return self._s[3222]! } - public var Passport_PasswordReset: String { return self._s[3223]! } - public var SocksProxySetup_TypeNone: String { return self._s[3224]! } - public var PhoneNumberHelp_Help: String { return self._s[3226]! } - public var Checkout_EnterPassword: String { return self._s[3227]! } - public var Share_AuthTitle: String { return self._s[3229]! } - public var Activity_UploadingDocument: String { return self._s[3230]! } - public var State_Connecting: String { return self._s[3231]! } - public var Profile_MessageLifetime1w: String { return self._s[3232]! } - public var Conversation_ContextMenuReport: String { return self._s[3233]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3234]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3235]! } - public var AuthSessions_Terminate: String { return self._s[3236]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3237]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3238]! } - public var PhotoEditor_Set: String { return self._s[3239]! } - public var EmptyGroupInfo_Title: String { return self._s[3240]! } - public var Login_PadPhoneHelp: String { return self._s[3241]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3243]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3245]! } - public var NotificationsSound_Complete: String { return self._s[3246]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3247]! } - public var Group_Info_AdminLog: String { return self._s[3248]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3249]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3250]! } - public var Conversation_Admin: String { return self._s[3252]! } - public var Conversation_GifTooltip: String { return self._s[3253]! } - public var Passport_NotLoggedInMessage: String { return self._s[3254]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[3222]! } + public var ChatSettings_Title: String { return self._s[3224]! } + public var Passport_PasswordReset: String { return self._s[3225]! } + public var SocksProxySetup_TypeNone: String { return self._s[3226]! } + public var PhoneNumberHelp_Help: String { return self._s[3228]! } + public var Checkout_EnterPassword: String { return self._s[3229]! } + public var Share_AuthTitle: String { return self._s[3231]! } + public var Activity_UploadingDocument: String { return self._s[3232]! } + public var State_Connecting: String { return self._s[3233]! } + public var Profile_MessageLifetime1w: String { return self._s[3234]! } + public var Conversation_ContextMenuReport: String { return self._s[3235]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3236]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3237]! } + public var AuthSessions_Terminate: String { return self._s[3238]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3239]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3240]! } + public var PhotoEditor_Set: String { return self._s[3241]! } + public var EmptyGroupInfo_Title: String { return self._s[3242]! } + public var Login_PadPhoneHelp: String { return self._s[3243]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3245]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3247]! } + public var NotificationsSound_Complete: String { return self._s[3248]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3249]! } + public var Group_Info_AdminLog: String { return self._s[3250]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3251]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3252]! } + public var Conversation_Admin: String { return self._s[3254]! } + public var Conversation_GifTooltip: String { return self._s[3255]! } + public var Passport_NotLoggedInMessage: String { return self._s[3256]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3255]!, self._r[3255]!, [_0]) + return formatWithArgumentRanges(self._s[3257]!, self._r[3257]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[3256]! } - public var SharedMedia_EmptyTitle: String { return self._s[3258]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3260]! } - public var Username_Help: String { return self._s[3261]! } - public var DialogList_LanguageTooltip: String { return self._s[3263]! } - public var Map_LoadError: String { return self._s[3264]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3265]! } - public var Channel_AdminLog_AddMembers: String { return self._s[3266]! } - public var ArchivedChats_IntroTitle2: String { return self._s[3267]! } - public var Notification_Exceptions_NewException: String { return self._s[3268]! } - public var TwoStepAuth_EmailTitle: String { return self._s[3269]! } - public var WatchRemote_AlertText: String { return self._s[3270]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[3273]! } + public var Profile_MessageLifetimeForever: String { return self._s[3258]! } + public var SharedMedia_EmptyTitle: String { return self._s[3260]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3262]! } + public var Username_Help: String { return self._s[3263]! } + public var DialogList_LanguageTooltip: String { return self._s[3265]! } + public var Map_LoadError: String { return self._s[3266]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3267]! } + public var Channel_AdminLog_AddMembers: String { return self._s[3268]! } + public var ArchivedChats_IntroTitle2: String { return self._s[3269]! } + public var Notification_Exceptions_NewException: String { return self._s[3270]! } + public var TwoStepAuth_EmailTitle: String { return self._s[3271]! } + public var WatchRemote_AlertText: String { return self._s[3272]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[3275]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3274]!, self._r[3274]!, [_0]) + return formatWithArgumentRanges(self._s[3276]!, self._r[3276]!, [_0]) } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3275]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[3276]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3277]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[3278]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3277]!, self._r[3277]!, [_0]) + return formatWithArgumentRanges(self._s[3279]!, self._r[3279]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3278]!, self._r[3278]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3280]!, self._r[3280]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[3279]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3280]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[3282]! } - public var ChatList_UndoArchiveText1: String { return self._s[3283]! } - public var AccessDenied_VideoMicrophone: String { return self._s[3284]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3285]! } - public var Cache_ClearNone: String { return self._s[3286]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[3287]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[3288]! } + public var Group_AdminLog_EmptyText: String { return self._s[3281]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3282]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[3284]! } + public var ChatList_UndoArchiveText1: String { return self._s[3285]! } + public var AccessDenied_VideoMicrophone: String { return self._s[3286]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3287]! } + public var Cache_ClearNone: String { return self._s[3288]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[3289]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[3290]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3289]!, self._r[3289]!, [_0]) - } - public var Passport_Identity_Country: String { return self._s[3290]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3291]!, self._r[3291]!, [_0]) } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3292]!, self._r[3292]!, [_0]) + public var Passport_Identity_Country: String { return self._s[3292]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3293]!, self._r[3293]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[3293]! } - public var AccessDenied_Settings: String { return self._s[3294]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3295]! } - public var Month_ShortMay: String { return self._s[3296]! } - public var Compose_NewGroup: String { return self._s[3297]! } - public var Group_Setup_TypePrivate: String { return self._s[3299]! } - public var Login_PadPhoneHelpTitle: String { return self._s[3301]! } - public var Appearance_ThemeDayClassic: String { return self._s[3302]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3303]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3304]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3305]! } - public var Conversation_typing: String { return self._s[3307]! } - public var Paint_Masks: String { return self._s[3308]! } - public var Username_InvalidTaken: String { return self._s[3309]! } - public var Call_StatusNoAnswer: String { return self._s[3310]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[3311]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3312]! } - public var Passport_Identity_Selfie: String { return self._s[3313]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[3314]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3315]! } - public var Conversation_ClearSecretHistory: String { return self._s[3316]! } - public var PeopleNearby_Description: String { return self._s[3318]! } - public var NetworkUsageSettings_Title: String { return self._s[3319]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3321]! } + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3294]!, self._r[3294]!, [_0]) + } + public var Exceptions_AddToExceptions: String { return self._s[3295]! } + public var AccessDenied_Settings: String { return self._s[3296]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3297]! } + public var Month_ShortMay: String { return self._s[3298]! } + public var Compose_NewGroup: String { return self._s[3299]! } + public var Group_Setup_TypePrivate: String { return self._s[3301]! } + public var Login_PadPhoneHelpTitle: String { return self._s[3303]! } + public var Appearance_ThemeDayClassic: String { return self._s[3304]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3305]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3306]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3307]! } + public var Conversation_typing: String { return self._s[3309]! } + public var Paint_Masks: String { return self._s[3310]! } + public var Username_InvalidTaken: String { return self._s[3311]! } + public var Call_StatusNoAnswer: String { return self._s[3312]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[3313]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3314]! } + public var Passport_Identity_Selfie: String { return self._s[3315]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[3316]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3317]! } + public var Conversation_ClearSecretHistory: String { return self._s[3318]! } + public var PeopleNearby_Description: String { return self._s[3320]! } + public var NetworkUsageSettings_Title: String { return self._s[3321]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3323]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3323]!, self._r[3323]!, [_0]) + return formatWithArgumentRanges(self._s[3325]!, self._r[3325]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3324]!, self._r[3324]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3326]!, self._r[3326]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[3326]! } - public var Map_LiveLocationTitle: String { return self._s[3327]! } - public var Login_InfoAvatarAdd: String { return self._s[3328]! } - public var Passport_Identity_FilesView: String { return self._s[3329]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3330]! } - public var Privacy_Calls_NeverAllow: String { return self._s[3331]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[3328]! } + public var Map_LiveLocationTitle: String { return self._s[3329]! } + public var Login_InfoAvatarAdd: String { return self._s[3330]! } + public var Passport_Identity_FilesView: String { return self._s[3331]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3332]! } + public var Privacy_Calls_NeverAllow: String { return self._s[3333]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3332]!, self._r[3332]!, [_0]) + return formatWithArgumentRanges(self._s[3334]!, self._r[3334]!, [_0]) } - public var ContactInfo_PhoneNumberHidden: String { return self._s[3333]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[3334]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3335]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[3335]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[3336]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3337]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3336]!, self._r[3336]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3338]!, self._r[3338]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3337]! } - public var Tour_Title2: String { return self._s[3338]! } - public var Conversation_FileOpenIn: String { return self._s[3339]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3340]! } - public var Wallpaper_Set: String { return self._s[3341]! } - public var Passport_Identity_Translations: String { return self._s[3343]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3339]! } + public var Tour_Title2: String { return self._s[3340]! } + public var Conversation_FileOpenIn: String { return self._s[3341]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3342]! } + public var Wallpaper_Set: String { return self._s[3343]! } + public var Passport_Identity_Translations: String { return self._s[3345]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3344]!, self._r[3344]!, [_0]) + return formatWithArgumentRanges(self._s[3346]!, self._r[3346]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[3345]! } + public var Channel_LeaveChannel: String { return self._s[3347]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3346]!, self._r[3346]!, [_1]) + return formatWithArgumentRanges(self._s[3348]!, self._r[3348]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3347]! } - public var PhotoEditor_HighlightsTint: String { return self._s[3348]! } - public var Passport_Email_Delete: String { return self._s[3349]! } - public var Conversation_Mute: String { return self._s[3351]! } - public var Channel_AddBotAsAdmin: String { return self._s[3352]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3354]! } - public var Channel_Management_LabelOwner: String { return self._s[3356]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3349]! } + public var PhotoEditor_HighlightsTint: String { return self._s[3350]! } + public var Passport_Email_Delete: String { return self._s[3351]! } + public var Conversation_Mute: String { return self._s[3353]! } + public var Channel_AddBotAsAdmin: String { return self._s[3354]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3356]! } + public var Channel_Management_LabelOwner: String { return self._s[3358]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3357]!, self._r[3357]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3359]!, self._r[3359]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[3358]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[3359]! } - public var Common_No: String { return self._s[3360]! } - public var Weekday_Sunday: String { return self._s[3361]! } - public var Notification_Reply: String { return self._s[3362]! } - public var Conversation_ViewMessage: String { return self._s[3363]! } + public var Calls_CallTabDescription: String { return self._s[3360]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[3361]! } + public var Common_No: String { return self._s[3362]! } + public var Weekday_Sunday: String { return self._s[3363]! } + public var Notification_Reply: String { return self._s[3364]! } + public var Conversation_ViewMessage: String { return self._s[3365]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3364]!, self._r[3364]!, [_0]) + return formatWithArgumentRanges(self._s[3366]!, self._r[3366]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3365]!, self._r[3365]!, [_0]) + return formatWithArgumentRanges(self._s[3367]!, self._r[3367]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3366]! } - public var Message_PinnedDocumentMessage: String { return self._s[3367]! } - public var DialogList_TabTitle: String { return self._s[3369]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[3370]! } - public var Passport_FieldEmail: String { return self._s[3371]! } - public var Conversation_UnpinMessageAlert: String { return self._s[3372]! } - public var Passport_Address_TypeBankStatement: String { return self._s[3373]! } - public var Passport_Identity_ExpiryDate: String { return self._s[3374]! } - public var Privacy_Calls_P2P: String { return self._s[3375]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3368]! } + public var Message_PinnedDocumentMessage: String { return self._s[3369]! } + public var DialogList_TabTitle: String { return self._s[3371]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[3372]! } + public var Passport_FieldEmail: String { return self._s[3373]! } + public var Conversation_UnpinMessageAlert: String { return self._s[3374]! } + public var Passport_Address_TypeBankStatement: String { return self._s[3375]! } + public var Passport_Identity_ExpiryDate: String { return self._s[3376]! } + public var Privacy_Calls_P2P: String { return self._s[3377]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3377]!, self._r[3377]!, [_0]) + return formatWithArgumentRanges(self._s[3379]!, self._r[3379]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[3378]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[3380]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3379]!, self._r[3379]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3381]!, self._r[3381]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[3380]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3381]! } - public var Passport_InfoText: String { return self._s[3382]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3383]! } + public var Stickers_ClearRecent: String { return self._s[3382]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3383]! } + public var Passport_InfoText: String { return self._s[3384]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3385]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3384]!, self._r[3384]!, [_0]) + return formatWithArgumentRanges(self._s[3386]!, self._r[3386]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3385]!, self._r[3385]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3387]!, self._r[3387]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3386]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[3387]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[3389]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3390]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3388]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[3389]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[3391]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3392]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3391]!, self._r[3391]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3393]!, self._r[3393]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3393]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3395]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3395]!, self._r[3395]!, [_0]) + return formatWithArgumentRanges(self._s[3397]!, self._r[3397]!, [_0]) } - public var DialogList_Unread: String { return self._s[3396]! } + public var DialogList_Unread: String { return self._s[3398]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3397]!, self._r[3397]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3399]!, self._r[3399]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[3398]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3399]! } + public var User_DeletedAccount: String { return self._s[3400]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3401]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3400]!, self._r[3400]!, [_0]) + return formatWithArgumentRanges(self._s[3402]!, self._r[3402]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[3401]! } - public var SharedMedia_CategoryMedia: String { return self._s[3402]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3403]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3404]! } - public var Watch_ChatList_Compose: String { return self._s[3405]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3406]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3407]! } - public var Watch_Microphone_Access: String { return self._s[3408]! } - public var Group_Setup_HistoryHeader: String { return self._s[3409]! } - public var Map_SetThisLocation: String { return self._s[3410]! } - public var Activity_UploadingPhoto: String { return self._s[3411]! } - public var Conversation_Edit: String { return self._s[3413]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3414]! } - public var Login_TermsOfServiceDecline: String { return self._s[3415]! } - public var Message_PinnedContactMessage: String { return self._s[3416]! } + public var UserInfo_NotificationsDefault: String { return self._s[3403]! } + public var SharedMedia_CategoryMedia: String { return self._s[3404]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3405]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3406]! } + public var Watch_ChatList_Compose: String { return self._s[3407]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3408]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3409]! } + public var Watch_Microphone_Access: String { return self._s[3410]! } + public var Group_Setup_HistoryHeader: String { return self._s[3411]! } + public var Map_SetThisLocation: String { return self._s[3412]! } + public var Activity_UploadingPhoto: String { return self._s[3413]! } + public var Conversation_Edit: String { return self._s[3415]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3416]! } + public var Login_TermsOfServiceDecline: String { return self._s[3417]! } + public var Message_PinnedContactMessage: String { return self._s[3418]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3417]!, self._r[3417]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3419]!, self._r[3419]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3418]!, self._r[3418]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3420]!, self._r[3420]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[3419]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3421]! } + public var Appearance_LargeEmoji: String { return self._s[3421]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3423]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3422]!, self._r[3422]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3424]!, self._r[3424]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3423]! } - public var Message_PinnedPhotoMessage: String { return self._s[3424]! } - public var Passport_FieldPhone: String { return self._s[3425]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3426]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[3427]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3429]! } - public var Conversation_Call: String { return self._s[3430]! } - public var Common_TakePhoto: String { return self._s[3432]! } - public var Channel_NotificationLoading: String { return self._s[3433]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3425]! } + public var Message_PinnedPhotoMessage: String { return self._s[3426]! } + public var Passport_FieldPhone: String { return self._s[3427]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3428]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[3429]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3431]! } + public var Conversation_Call: String { return self._s[3432]! } + public var Common_TakePhoto: String { return self._s[3434]! } + public var Channel_NotificationLoading: String { return self._s[3435]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_0]) + return formatWithArgumentRanges(self._s[3436]!, self._r[3436]!, [_0]) } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3435]!, self._r[3435]!, [_1]) + return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[3436]! } + public var Permissions_SiriTitle_v0: String { return self._s[3438]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_0]) + return formatWithArgumentRanges(self._s[3439]!, self._r[3439]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3438]! } - public var Common_edit: String { return self._s[3439]! } - public var PrivacySettings_AuthSessions: String { return self._s[3440]! } - public var Month_ShortJune: String { return self._s[3441]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3442]! } - public var Call_ReportSend: String { return self._s[3443]! } - public var Watch_LastSeen_JustNow: String { return self._s[3444]! } - public var Notifications_MessageNotifications: String { return self._s[3445]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3446]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3448]! } - public var Group_Status: String { return self._s[3449]! } + public var Channel_MessagePhotoRemoved: String { return self._s[3440]! } + public var Common_edit: String { return self._s[3441]! } + public var PrivacySettings_AuthSessions: String { return self._s[3442]! } + public var Month_ShortJune: String { return self._s[3443]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3444]! } + public var Call_ReportSend: String { return self._s[3445]! } + public var Watch_LastSeen_JustNow: String { return self._s[3446]! } + public var Notifications_MessageNotifications: String { return self._s[3447]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3448]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3450]! } + public var Group_Status: String { return self._s[3451]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3450]!, self._r[3450]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3452]!, self._r[3452]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[3451]! } - public var ShareMenu_ShareTo: String { return self._s[3452]! } - public var Conversation_Moderate_Ban: String { return self._s[3453]! } + public var TextFormat_AddLinkTitle: String { return self._s[3453]! } + public var ShareMenu_ShareTo: String { return self._s[3454]! } + public var Conversation_Moderate_Ban: String { return self._s[3455]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3454]!, self._r[3454]!, [_0]) + return formatWithArgumentRanges(self._s[3456]!, self._r[3456]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3455]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3456]! } + public var SharedMedia_ViewInChat: String { return self._s[3457]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3458]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3457]!, self._r[3457]!, [_1]) + return formatWithArgumentRanges(self._s[3459]!, self._r[3459]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3458]!, self._r[3458]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_0]) + return formatWithArgumentRanges(self._s[3462]!, self._r[3462]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[3461]! } - public var Appearance_ReduceMotion: String { return self._s[3462]! } + public var Map_OpenInHereMaps: String { return self._s[3463]! } + public var Appearance_ReduceMotion: String { return self._s[3464]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3463]!, self._r[3463]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3465]!, self._r[3465]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[3464]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3465]! } - public var PhotoEditor_Skip: String { return self._s[3466]! } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[3466]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3467]! } + public var PhotoEditor_Skip: String { return self._s[3468]! } + public func Map_ETAMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + public func Media_SharePhoto(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func SharedMedia_Link(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, _1, _2) } public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, _0, _1) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedVideoMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + public func Media_ShareItem(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusOnline(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _1, _2) } - public func ForwardedLocations(_ value: Int32) -> String { + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func Call_Seconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) } public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift index bc7eec059a..ba6db9b6e9 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputMenu.swift @@ -13,6 +13,8 @@ final class ChatTextInputMenu { private var stringItalic: String = "Italic" private var stringMonospace: String = "Monospace" private var stringLink: String = "Link" + private var stringStrikethrough: String = "Strikethrough" + private var stringUnderline: String = "Underline" private(set) var state: ChatTextInputMenuState = .inactive { didSet { @@ -27,7 +29,9 @@ final class ChatTextInputMenu { UIMenuItem(title: self.stringBold, action: Selector(("formatAttributesBold:"))), UIMenuItem(title: self.stringItalic, action: Selector(("formatAttributesItalic:"))), UIMenuItem(title: self.stringMonospace, action: Selector(("formatAttributesMonospace:"))), - UIMenuItem(title: self.stringLink, action: Selector(("formatAttributesLink:"))) + UIMenuItem(title: self.stringLink, action: Selector(("formatAttributesLink:"))), + UIMenuItem(title: self.stringStrikethrough, action: Selector(("formatAttributesStrikethrough:"))), + UIMenuItem(title: self.stringUnderline, action: Selector(("formatAttributesUnderline:"))) ] UIMenuController.shared.isMenuVisible = true UIMenuController.shared.update() @@ -56,6 +60,8 @@ final class ChatTextInputMenu { self.stringItalic = strings.TextFormat_Italic self.stringMonospace = strings.TextFormat_Monospace self.stringLink = strings.TextFormat_Link + self.stringStrikethrough = strings.TextFormat_Strikethrough + self.stringUnderline = strings.TextFormat_Underline } func activate() { diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping index a017c8121f053dc9ebb659c02b85a8c839eebc09..072e1832387de0db7d90a522d4dea3c83d77f368 100644 GIT binary patch delta 27689 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 delta 28583 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 bK>Jj{8FG5pA)s*9bl>B^P|u#O5A-PjyWBh| From a9712a3923d4604ac693d80344eb8a1c90762a63 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 17:10:05 +0200 Subject: [PATCH 12/16] Fixed chat input field placeholder --- .../TelegramUI/ChatListController.swift | 1 - .../TelegramUI/ChatTextInputPanelNode.swift | 21 +++++++++++++++++-- .../TelegramUI/ContactsController.swift | 2 -- .../TelegramUI/DeviceLocationManager.swift | 2 +- .../TelegramUI/SettingsController.swift | 8 +------ 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/TelegramUI/TelegramUI/ChatListController.swift index eef178f947..ed89128a31 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListController.swift @@ -100,7 +100,6 @@ public class ChatListController: TelegramController, UIViewControllerPreviewingD self.chatListDisplayNode.chatListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) } - public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool = false) { self.context = context self.controlsHistoryPreload = controlsHistoryPreload diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift index c39d0610f9..a034a11d85 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift @@ -230,6 +230,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { private var currentPlaceholder: String? private var presentationInterfaceState: ChatPresentationInterfaceState? + private var initializedPlaceholder = false private var keepSendButtonEnabled = false private var extendedSearchLayout = false @@ -684,7 +685,9 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { } } - if let peer = interfaceState.renderedPeer?.peer, previousState?.renderedPeer?.peer == nil || !peer.isEqual(previousState!.renderedPeer!.peer!) || previousState?.interfaceState.silentPosting != interfaceState.interfaceState.silentPosting || themeUpdated { + if let peer = interfaceState.renderedPeer?.peer, previousState?.renderedPeer?.peer == nil || !peer.isEqual(previousState!.renderedPeer!.peer!) || previousState?.interfaceState.silentPosting != interfaceState.interfaceState.silentPosting || themeUpdated || !self.initializedPlaceholder { + self.initializedPlaceholder = true + let placeholder: String if let channel = peer as? TelegramChannel, case .broadcast = channel.info { if interfaceState.interfaceState.silentPosting { @@ -1342,7 +1345,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { } else { return ASEditableTextNodeTargetForAction(target: nil) } - } else if action == #selector(self.formatAttributesBold(_:)) || action == #selector(self.formatAttributesItalic(_:)) || action == #selector(self.formatAttributesMonospace(_:)) || action == #selector(self.formatAttributesLink(_:)) { + } else if action == #selector(self.formatAttributesBold(_:)) || action == #selector(self.formatAttributesItalic(_:)) || action == #selector(self.formatAttributesMonospace(_:)) || action == #selector(self.formatAttributesLink(_:)) || action == #selector(self.formatAttributesStrikethrough(_:)) || action == #selector(self.formatAttributesUnderline(_:)) { if case .format = self.inputMenu.state { return ASEditableTextNodeTargetForAction(target: self) } else { @@ -1385,6 +1388,20 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate { self.interfaceInteraction?.openLinkEditing() } + @objc func formatAttributesStrikethrough(_ sender: Any) { + self.inputMenu.back() + self.interfaceInteraction?.updateTextInputStateAndMode { current, inputMode in + return (chatTextInputAddFormattingAttribute(current, attribute: ChatTextInputAttributes.strikethrough), inputMode) + } + } + + @objc func formatAttributesUnderline(_ sender: Any) { + self.inputMenu.back() + self.interfaceInteraction?.updateTextInputStateAndMode { current, inputMode in + return (chatTextInputAddFormattingAttribute(current, attribute: ChatTextInputAttributes.underline), inputMode) + } + } + @objc func editableTextNode(_ editableTextNode: ASEditableTextNode, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { self.updateActivity() var cleanText = text diff --git a/submodules/TelegramUI/TelegramUI/ContactsController.swift b/submodules/TelegramUI/TelegramUI/ContactsController.swift index da1ca2ee0b..9b9cd026b9 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsController.swift @@ -77,12 +77,10 @@ public class ContactsController: ViewController { var switchToChatsController: (() -> Void)? - public override func updateNavigationCustomData(_ data: Any?, progress: CGFloat, transition: ContainedViewLayoutTransition) { self.contactsNode.contactListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) } - public init(context: AccountContext) { self.context = context diff --git a/submodules/TelegramUI/TelegramUI/DeviceLocationManager.swift b/submodules/TelegramUI/TelegramUI/DeviceLocationManager.swift index b909b83a5c..4099490a9f 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceLocationManager.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceLocationManager.swift @@ -54,7 +54,7 @@ final class DeviceLocationManager: NSObject, CLLocationManagerDelegate { } self.manager.delegate = self self.manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters - self.manager.distanceFilter = 20.0 + self.manager.distanceFilter = 10.0 self.manager.activityType = .other self.manager.pausesLocationUpdatesAutomatically = false } diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift index a669aedec3..724bd660ff 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift @@ -1347,15 +1347,9 @@ public func settingsController(context: AccountContext, accountManager: AccountM context.sharedContext.switchToAccount(id: id) }) } - var didAppear = false - controller.didAppear = { [weak controller] _ in + controller.didAppear = { _ in updatePassport() updateNotifyExceptions() - - if !didAppear { - (controller?.displayNode as? ItemListControllerNode)?.listNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: ListViewScrollToItem(index: 0, position: .top(-navigationBarSearchContentHeight), animated: false, curve: .Default(duration: 0.0), directionHint: .Up), updateSizeAndInsets: nil, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in }) - didAppear = true - } } controller.previewItemWithTag = { tag in if let tag = tag as? SettingsEntryTag, case let .account(id) = tag { From 684a933fa3a37a83c8309f74956c144f5d0461b9 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 17:17:46 +0200 Subject: [PATCH 13/16] Fixed contacts controller node premature initialization --- submodules/TelegramUI/TelegramUI/ChatListController.swift | 4 +++- submodules/TelegramUI/TelegramUI/ContactsController.swift | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/TelegramUI/TelegramUI/ChatListController.swift index ed89128a31..4506692cc0 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListController.swift @@ -97,7 +97,9 @@ public class ChatListController: TelegramController, UIViewControllerPreviewingD private var searchContentNode: NavigationBarSearchContentNode? public override func updateNavigationCustomData(_ data: Any?, progress: CGFloat, transition: ContainedViewLayoutTransition) { - self.chatListDisplayNode.chatListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) + if self.isNodeLoaded { + self.chatListDisplayNode.chatListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) + } } public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool = false) { diff --git a/submodules/TelegramUI/TelegramUI/ContactsController.swift b/submodules/TelegramUI/TelegramUI/ContactsController.swift index 9b9cd026b9..ac2a1167cb 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsController.swift @@ -78,7 +78,9 @@ public class ContactsController: ViewController { var switchToChatsController: (() -> Void)? public override func updateNavigationCustomData(_ data: Any?, progress: CGFloat, transition: ContainedViewLayoutTransition) { - self.contactsNode.contactListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) + if self.isNodeLoaded { + self.contactsNode.contactListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) + } } public init(context: AccountContext) { From 13a3a16c919d726cecf1e5e17946aaa89c41dcc4 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 18:01:28 +0200 Subject: [PATCH 14/16] Added CHANNELS_TOO_MUCH error support all across the app --- Telegram-iOS/en.lproj/Localizable.strings | 4 + .../TelegramCore/AddPeerMember.swift | 5 + .../TelegramCore/ChannelCreation.swift | 3 + .../TelegramCore/CreateGroup.swift | 1 + .../TelegramCore/JoinChannel.swift | 9 +- .../Sources/PresentationStrings.swift | 3933 +++++++++-------- .../TelegramUI/ChannelMembersController.swift | 2 + .../ChatChannelSubscriberInputPanelNode.swift | 15 +- .../TelegramUI/CreateChannelController.swift | 2 + .../TelegramUI/CreateGroupController.swift | 6 + .../TelegramUI/GroupInfoController.swift | 14 +- ...annelMemberCategoriesContextsManager.swift | 17 - .../Resources/PresentationStrings.mapping | Bin 117900 -> 118005 bytes 13 files changed, 2015 insertions(+), 1996 deletions(-) diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index d792bcc33c..6bef2c8e20 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -4460,3 +4460,7 @@ Any member of this group will be able to see messages in the channel."; "Activity.RemindAboutGroup" = "Send message to %@"; "Activity.RemindAboutUser" = "Send message to %@"; "Activity.RemindAboutChannel" = "Read %@"; + +"CreateGroup.ChannelsTooMuch" = "Sorry, you are a member of too many groups and channels. Please leave some before creating a new one."; +"Join.ChannelsTooMuch" = "Sorry, you are a member of too many groups and channels. Please leave some before joining one."; +"Invite.ChannelsTooMuch" = "Sorry, the target user is a member of too many groups and channels. Please ask them to leave some first."; diff --git a/submodules/TelegramCore/TelegramCore/AddPeerMember.swift b/submodules/TelegramCore/TelegramCore/AddPeerMember.swift index ec85e49a13..575fdda28d 100644 --- a/submodules/TelegramCore/TelegramCore/AddPeerMember.swift +++ b/submodules/TelegramCore/TelegramCore/AddPeerMember.swift @@ -75,6 +75,7 @@ public enum AddChannelMemberError { case generic case restricted case limitExceeded + case tooMuchJoined case bot(PeerId) } @@ -97,6 +98,8 @@ public func addChannelMember(account: Account, peerId: PeerId, memberId: PeerId) |> map { [$0] } |> `catch` { error -> Signal<[Api.Updates], AddChannelMemberError> in switch error.errorDescription { + case "CHANNELS_TOO_MUCH": + return .fail(.tooMuchJoined) case "USERS_TOO_MUCH": return .fail(.limitExceeded) case "USER_PRIVACY_RESTRICTED": @@ -190,6 +193,8 @@ public func addChannelMembers(account: Account, peerId: PeerId, memberIds: [Peer let signal = account.network.request(Api.functions.channels.inviteToChannel(channel: inputChannel, users: inputUsers)) |> mapError { error -> AddChannelMemberError in switch error.errorDescription { + case "CHANNELS_TOO_MUCH": + return .tooMuchJoined case "USER_PRIVACY_RESTRICTED": return .restricted case "USERS_TOO_MUCH": diff --git a/submodules/TelegramCore/TelegramCore/ChannelCreation.swift b/submodules/TelegramCore/TelegramCore/ChannelCreation.swift index e5e4a21c8b..068c05ebf6 100644 --- a/submodules/TelegramCore/TelegramCore/ChannelCreation.swift +++ b/submodules/TelegramCore/TelegramCore/ChannelCreation.swift @@ -18,6 +18,7 @@ import Foundation public enum CreateChannelError { case generic case restricted + case tooMuchJoined case tooMuchLocationBasedGroups case serverProvided(String) } @@ -43,6 +44,8 @@ private func createChannel(account: Account, title: String, description: String? |> mapError { error -> CreateChannelError in if error.errorCode == 406 { return .serverProvided(error.errorDescription) + } else if error.errorDescription == "CHANNELS_TOO_MUCH" { + return .tooMuchJoined } else if error.errorDescription == "CHANNELS_ADMIN_LOCATED_TOO_MUCH" { return .tooMuchLocationBasedGroups } else if error.errorDescription == "USER_RESTRICTED" { diff --git a/submodules/TelegramCore/TelegramCore/CreateGroup.swift b/submodules/TelegramCore/TelegramCore/CreateGroup.swift index a7707e72b3..810b7543af 100644 --- a/submodules/TelegramCore/TelegramCore/CreateGroup.swift +++ b/submodules/TelegramCore/TelegramCore/CreateGroup.swift @@ -19,6 +19,7 @@ public enum CreateGroupError { case generic case privacy case restricted + case tooMuchJoined case tooMuchLocationBasedGroups case serverProvided(String) } diff --git a/submodules/TelegramCore/TelegramCore/JoinChannel.swift b/submodules/TelegramCore/TelegramCore/JoinChannel.swift index 00c7d3770b..04d010de19 100644 --- a/submodules/TelegramCore/TelegramCore/JoinChannel.swift +++ b/submodules/TelegramCore/TelegramCore/JoinChannel.swift @@ -11,6 +11,7 @@ import Foundation public enum JoinChannelError { case generic + case tooMuchJoined } public func joinChannel(account: Account, peerId: PeerId) -> Signal { @@ -20,8 +21,12 @@ public func joinChannel(account: Account, peerId: PeerId) -> Signal mapToSignal { peer -> Signal in if let inputChannel = apiInputChannel(peer) { return account.network.request(Api.functions.channels.joinChannel(channel: inputChannel)) - |> mapError { _ -> JoinChannelError in - return .generic + |> mapError { error -> JoinChannelError in + if error.errorDescription == "CHANNELS_TOO_MUCH" { + return .tooMuchJoined + } else { + return .generic + } } |> mapToSignal { updates -> Signal in account.stateManager.addUpdates(updates) diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index a5fa0b76d3..616fba47bd 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -1963,2487 +1963,2490 @@ public final class PresentationStrings { public var Login_SmsRequestState3: String { return self._s[1662]! } public var Passport_Address_EditUtilityBill: String { return self._s[1663]! } public var Appearance_ReduceMotionInfo: String { return self._s[1664]! } - public var Channel_Edit_LinkItem: String { return self._s[1665]! } - public var Privacy_Calls_P2PNever: String { return self._s[1666]! } - public var Conversation_AddToReadingList: String { return self._s[1668]! } - public var Message_Animation: String { return self._s[1669]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1670]! } - public var Map_Unknown: String { return self._s[1671]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[1672]! } + public var Join_ChannelsTooMuch: String { return self._s[1665]! } + public var Channel_Edit_LinkItem: String { return self._s[1666]! } + public var Privacy_Calls_P2PNever: String { return self._s[1667]! } + public var Conversation_AddToReadingList: String { return self._s[1669]! } + public var Message_Animation: String { return self._s[1670]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1671]! } + public var Map_Unknown: String { return self._s[1672]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[1673]! } public func PUSH_PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1673]!, self._r[1673]!, [_1, _2]) - } - public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1674]!, self._r[1674]!, [_1, _2]) } - public var Call_StatusRequesting: String { return self._s[1675]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1676]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1677]! } + public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1675]!, self._r[1675]!, [_1, _2]) + } + public var Call_StatusRequesting: String { return self._s[1676]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1677]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1678]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1678]!, self._r[1678]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1679]!, self._r[1679]!, [_1, _2]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1679]!, self._r[1679]!, [_0]) + return formatWithArgumentRanges(self._s[1680]!, self._r[1680]!, [_0]) } - public var Update_Skip: String { return self._s[1680]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1681]! } - public var Message_PinnedPollMessage: String { return self._s[1682]! } - public var BlockedUsers_Title: String { return self._s[1683]! } + public var Update_Skip: String { return self._s[1681]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1682]! } + public var Message_PinnedPollMessage: String { return self._s[1683]! } + public var BlockedUsers_Title: String { return self._s[1684]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1684]!, self._r[1684]!, [_1]) + return formatWithArgumentRanges(self._s[1685]!, self._r[1685]!, [_1]) } - public var Username_CheckingUsername: String { return self._s[1685]! } - public var NotificationsSound_Bell: String { return self._s[1686]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1687]! } - public var Weekday_Monday: String { return self._s[1688]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1689]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1690]! } - public var ChatSettings_Groups: String { return self._s[1691]! } - public var Your_card_was_declined: String { return self._s[1692]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1694]! } - public var ChatList_Unmute: String { return self._s[1695]! } - public var PhotoEditor_CurvesAll: String { return self._s[1696]! } - public var Weekday_ShortTuesday: String { return self._s[1697]! } - public var DialogList_Read: String { return self._s[1698]! } - public var Appearance_AppIconClassic: String { return self._s[1699]! } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1700]! } - public var Passport_Identity_Gender: String { return self._s[1701]! } + public var Username_CheckingUsername: String { return self._s[1686]! } + public var NotificationsSound_Bell: String { return self._s[1687]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1688]! } + public var Weekday_Monday: String { return self._s[1689]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1690]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1691]! } + public var ChatSettings_Groups: String { return self._s[1692]! } + public var Your_card_was_declined: String { return self._s[1693]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1695]! } + public var ChatList_Unmute: String { return self._s[1696]! } + public var PhotoEditor_CurvesAll: String { return self._s[1697]! } + public var Weekday_ShortTuesday: String { return self._s[1698]! } + public var DialogList_Read: String { return self._s[1699]! } + public var Appearance_AppIconClassic: String { return self._s[1700]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1701]! } + public var Passport_Identity_Gender: String { return self._s[1702]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1702]!, self._r[1702]!, [_0]) + return formatWithArgumentRanges(self._s[1703]!, self._r[1703]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1703]! } + public var Target_SelectGroup: String { return self._s[1704]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1705]!, self._r[1705]!, [_0]) + return formatWithArgumentRanges(self._s[1706]!, self._r[1706]!, [_0]) } - public var Passport_Language_en: String { return self._s[1706]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1707]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1708]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1709]! } - public var Checkout_NewCard_PaymentCard: String { return self._s[1711]! } - public var Login_InfoHelp: String { return self._s[1712]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1713]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1714]! } + public var Passport_Language_en: String { return self._s[1707]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1708]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1709]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1710]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1712]! } + public var Login_InfoHelp: String { return self._s[1713]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1714]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1715]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1715]!, self._r[1715]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1716]!, self._r[1716]!, [_1, _2]) } - public var SocksProxySetup_AddProxy: String { return self._s[1718]! } - public var CreatePoll_Title: String { return self._s[1719]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1720]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1721]! } - public var UserInfo_GroupsInCommon: String { return self._s[1722]! } - public var Call_AudioRouteHide: String { return self._s[1723]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1725]! } + public var SocksProxySetup_AddProxy: String { return self._s[1719]! } + public var CreatePoll_Title: String { return self._s[1720]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1721]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1722]! } + public var UserInfo_GroupsInCommon: String { return self._s[1723]! } + public var Call_AudioRouteHide: String { return self._s[1724]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1726]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1726]!, self._r[1726]!, [_0]) + return formatWithArgumentRanges(self._s[1727]!, self._r[1727]!, [_0]) } - public var TextFormat_Bold: String { return self._s[1727]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1728]! } - public var Notifications_Title: String { return self._s[1729]! } - public var Group_Username_InvalidTooShort: String { return self._s[1730]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1731]! } + public var TextFormat_Bold: String { return self._s[1728]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1729]! } + public var Notifications_Title: String { return self._s[1730]! } + public var Group_Username_InvalidTooShort: String { return self._s[1731]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1732]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1732]!, self._r[1732]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1733]!, self._r[1733]!, ["\(_0)"]) } - public var Stickers_SuggestAdded: String { return self._s[1734]! } - public var Login_CountryCode: String { return self._s[1735]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1736]! } - public var Map_GetDirections: String { return self._s[1737]! } - public var Login_PhoneFloodError: String { return self._s[1738]! } + public var Stickers_SuggestAdded: String { return self._s[1735]! } + public var Login_CountryCode: String { return self._s[1736]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1737]! } + public var Map_GetDirections: String { return self._s[1738]! } + public var Login_PhoneFloodError: String { return self._s[1739]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1739]!, self._r[1739]!, [_0]) + return formatWithArgumentRanges(self._s[1740]!, self._r[1740]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1741]! } - public var Group_Location_ChangeLocation: String { return self._s[1742]! } - public var Notification_GroupInviterSelf: String { return self._s[1743]! } - public var InstantPage_TapToOpenLink: String { return self._s[1744]! } + public var Settings_SetUsername: String { return self._s[1742]! } + public var Group_Location_ChangeLocation: String { return self._s[1743]! } + public var Notification_GroupInviterSelf: String { return self._s[1744]! } + public var InstantPage_TapToOpenLink: String { return self._s[1745]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1745]!, self._r[1745]!, [_0]) + return formatWithArgumentRanges(self._s[1746]!, self._r[1746]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1746]! } - public var SecretChat_Title: String { return self._s[1747]! } - public var Group_UpgradeNoticeText1: String { return self._s[1748]! } - public var AuthSessions_Title: String { return self._s[1749]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1747]! } + public var SecretChat_Title: String { return self._s[1748]! } + public var Group_UpgradeNoticeText1: String { return self._s[1749]! } + public var AuthSessions_Title: String { return self._s[1750]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1750]!, self._r[1750]!, [_0]) + return formatWithArgumentRanges(self._s[1751]!, self._r[1751]!, [_0]) } - public var PhotoEditor_CropAuto: String { return self._s[1751]! } - public var Channel_About_Title: String { return self._s[1752]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1753]! } + public var PhotoEditor_CropAuto: String { return self._s[1752]! } + public var Channel_About_Title: String { return self._s[1753]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1754]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1755]!, self._r[1755]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1756]!, self._r[1756]!, ["\(_0)"]) } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1757]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1758]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1758]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1759]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, [_1]) + return formatWithArgumentRanges(self._s[1760]!, self._r[1760]!, [_1]) } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1761]!, self._r[1761]!, [_0]) - } - public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1762]!, self._r[1762]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1763]! } - public var Presence_online: String { return self._s[1765]! } - public var PasscodeSettings_Title: String { return self._s[1766]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1767]! } - public var Web_OpenExternal: String { return self._s[1768]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[1770]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1771]! } - public var LocalGroup_Title: String { return self._s[1772]! } + public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1763]!, self._r[1763]!, [_0]) + } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1764]! } + public var Presence_online: String { return self._s[1766]! } + public var PasscodeSettings_Title: String { return self._s[1767]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1768]! } + public var Web_OpenExternal: String { return self._s[1769]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[1771]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1772]! } + public var LocalGroup_Title: String { return self._s[1773]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1773]!, self._r[1773]!, [_0]) + return formatWithArgumentRanges(self._s[1774]!, self._r[1774]!, [_0]) } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1774]! } - public var Map_YouAreHere: String { return self._s[1775]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1775]! } + public var Map_YouAreHere: String { return self._s[1776]! } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1776]!, self._r[1776]!, [_0]) - } - public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1778]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1779]! } - public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1780]!, self._r[1780]!, [_0]) + public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1778]!, self._r[1778]!, [_0]) } - public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1779]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1780]! } + public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[1782]! } - public var Bot_Start: String { return self._s[1783]! } - public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1784]!, self._r[1784]!, [_0]) + public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1782]!, self._r[1782]!, [_0]) } - public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { + public var SocksProxySetup_Username: String { return self._s[1783]! } + public var Bot_Start: String { return self._s[1784]! } + public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1785]!, self._r[1785]!, [_0]) } - public var Contacts_SortByPresence: String { return self._s[1786]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1788]! } + public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1786]!, self._r[1786]!, [_0]) + } + public var Contacts_SortByPresence: String { return self._s[1787]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1789]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1790]!, self._r[1790]!, [_1, _2]) } public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1790]!, self._r[1790]!, [_0]) + return formatWithArgumentRanges(self._s[1791]!, self._r[1791]!, [_0]) } public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1791]!, self._r[1791]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1792]!, self._r[1792]!, [_1, _2]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1792]! } - public var Login_InfoAvatarPhoto: String { return self._s[1793]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1794]! } - public var Tour_Title4: String { return self._s[1795]! } - public var Passport_Identity_Translation: String { return self._s[1796]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1797]! } - public var Login_TermsOfServiceLabel: String { return self._s[1799]! } - public var Passport_Language_it: String { return self._s[1800]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1801]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1802]! } - public var Conversation_ClearAll: String { return self._s[1804]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1806]! } - public var TwoStepAuth_FloodError: String { return self._s[1807]! } + public var Passport_Email_EnterOtherEmail: String { return self._s[1793]! } + public var Login_InfoAvatarPhoto: String { return self._s[1794]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1795]! } + public var Tour_Title4: String { return self._s[1796]! } + public var Passport_Identity_Translation: String { return self._s[1797]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1798]! } + public var Login_TermsOfServiceLabel: String { return self._s[1800]! } + public var Passport_Language_it: String { return self._s[1801]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1802]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1803]! } + public var Conversation_ClearAll: String { return self._s[1805]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1807]! } + public var TwoStepAuth_FloodError: String { return self._s[1808]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1808]!, self._r[1808]!, [_1]) + return formatWithArgumentRanges(self._s[1809]!, self._r[1809]!, [_1]) } - public var Paint_Delete: String { return self._s[1809]! } - public var Privacy_AddNewPeer: String { return self._s[1810]! } - public var LogoutOptions_SetPasscodeText: String { return self._s[1811]! } + public var Paint_Delete: String { return self._s[1810]! } + public var Privacy_AddNewPeer: String { return self._s[1811]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1812]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1812]!, self._r[1812]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1813]!, self._r[1813]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1813]! } + public var Message_PinnedAudioMessage: String { return self._s[1814]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1814]!, self._r[1814]!, [_0]) + return formatWithArgumentRanges(self._s[1815]!, self._r[1815]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1815]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1816]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1817]! } - public var Conversation_MessageEditedLabel: String { return self._s[1818]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1819]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1820]! } + public var Notification_Mute1hMin: String { return self._s[1816]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1817]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1818]! } + public var Conversation_MessageEditedLabel: String { return self._s[1819]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1820]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1821]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1821]!, self._r[1821]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1822]!, self._r[1822]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1822]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1823]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1823]!, self._r[1823]!, [_1]) + return formatWithArgumentRanges(self._s[1824]!, self._r[1824]!, [_1]) } - public var AccessDenied_LocationTracking: String { return self._s[1824]! } - public var Month_GenOctober: String { return self._s[1825]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1826]! } - public var EnterPasscode_EnterPasscode: String { return self._s[1827]! } - public var MediaPicker_TimerTooltip: String { return self._s[1829]! } - public var SharedMedia_TitleAll: String { return self._s[1830]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1833]! } - public var Conversation_RestrictedMedia: String { return self._s[1834]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1835]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[1837]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1838]! } + public var AccessDenied_LocationTracking: String { return self._s[1825]! } + public var Month_GenOctober: String { return self._s[1826]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1827]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1828]! } + public var MediaPicker_TimerTooltip: String { return self._s[1830]! } + public var SharedMedia_TitleAll: String { return self._s[1831]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1834]! } + public var Conversation_RestrictedMedia: String { return self._s[1835]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1836]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[1838]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1839]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1839]!, self._r[1839]!, [_0]) + return formatWithArgumentRanges(self._s[1840]!, self._r[1840]!, [_0]) } - public var Conversation_SavedMessages: String { return self._s[1842]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1844]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1845]! } + public var Conversation_SavedMessages: String { return self._s[1843]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1845]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1846]! } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1847]!, self._r[1847]!, [_0]) + return formatWithArgumentRanges(self._s[1848]!, self._r[1848]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1848]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1849]! } + public var ReportPeer_AlertSuccess: String { return self._s[1849]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1850]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1850]!, self._r[1850]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1851]!, self._r[1851]!, [_1, _2]) } - public var Checkout_PasswordEntry_Title: String { return self._s[1851]! } - public var PhotoEditor_FadeTool: String { return self._s[1852]! } - public var Privacy_ContactsReset: String { return self._s[1853]! } + public var Checkout_PasswordEntry_Title: String { return self._s[1852]! } + public var PhotoEditor_FadeTool: String { return self._s[1853]! } + public var Privacy_ContactsReset: String { return self._s[1854]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1855]!, self._r[1855]!, [_0]) + return formatWithArgumentRanges(self._s[1856]!, self._r[1856]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1856]! } - public var ChatList_Mute: String { return self._s[1857]! } - public var Permissions_CellularDataText_v0: String { return self._s[1858]! } - public var ShareMenu_SelectChats: String { return self._s[1860]! } - public var MusicPlayer_VoiceNote: String { return self._s[1861]! } - public var Conversation_RestrictedText: String { return self._s[1862]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1863]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[1864]! } - public var Cache_Videos: String { return self._s[1865]! } - public var PrivacySettings_PhoneNumber: String { return self._s[1866]! } - public var FeatureDisabled_Oops: String { return self._s[1868]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1869]! } + public var Message_PinnedVideoMessage: String { return self._s[1857]! } + public var ChatList_Mute: String { return self._s[1858]! } + public var Permissions_CellularDataText_v0: String { return self._s[1859]! } + public var ShareMenu_SelectChats: String { return self._s[1861]! } + public var MusicPlayer_VoiceNote: String { return self._s[1862]! } + public var Conversation_RestrictedText: String { return self._s[1863]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1864]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[1865]! } + public var Cache_Videos: String { return self._s[1866]! } + public var PrivacySettings_PhoneNumber: String { return self._s[1867]! } + public var FeatureDisabled_Oops: String { return self._s[1869]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1870]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1870]!, self._r[1870]!, [_0]) + return formatWithArgumentRanges(self._s[1871]!, self._r[1871]!, [_0]) } - public var Stickers_GroupStickersHelp: String { return self._s[1871]! } - public var GroupPermission_NoSendPolls: String { return self._s[1872]! } - public var Message_VideoExpired: String { return self._s[1874]! } - public var Notifications_Badge: String { return self._s[1875]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1876]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[1877]! } - public var Username_InvalidTooShort: String { return self._s[1878]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1879]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1880]! } - public var ArchivedChats_IntroTitle3: String { return self._s[1881]! } + public var Stickers_GroupStickersHelp: String { return self._s[1872]! } + public var GroupPermission_NoSendPolls: String { return self._s[1873]! } + public var Message_VideoExpired: String { return self._s[1875]! } + public var Notifications_Badge: String { return self._s[1876]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1877]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[1878]! } + public var Username_InvalidTooShort: String { return self._s[1879]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1880]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1881]! } + public var ArchivedChats_IntroTitle3: String { return self._s[1882]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1882]!, self._r[1882]!, [_1]) + return formatWithArgumentRanges(self._s[1883]!, self._r[1883]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[1883]! } - public var Conversation_DefaultRestrictedText: String { return self._s[1884]! } - public var SharedMedia_CategoryDocs: String { return self._s[1887]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[1884]! } + public var Conversation_DefaultRestrictedText: String { return self._s[1885]! } + public var SharedMedia_CategoryDocs: String { return self._s[1888]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1888]!, self._r[1888]!, [_1]) + return formatWithArgumentRanges(self._s[1889]!, self._r[1889]!, [_1]) } - public var Privacy_Forwards_NeverLink: String { return self._s[1890]! } + public var Privacy_Forwards_NeverLink: String { return self._s[1891]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1891]!, self._r[1891]!, [_1]) + return formatWithArgumentRanges(self._s[1892]!, self._r[1892]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1892]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1893]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1893]!, self._r[1893]!, [_0]) + return formatWithArgumentRanges(self._s[1894]!, self._r[1894]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[1894]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1895]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[1896]! } - public var Channel_UpdatePhotoItem: String { return self._s[1897]! } - public var GroupInfo_LeftStatus: String { return self._s[1898]! } - public var Watch_MessageView_Forward: String { return self._s[1900]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[1901]! } - public var Cache_ClearEmpty: String { return self._s[1903]! } - public var Localization_LanguageName: String { return self._s[1904]! } - public var WebSearch_GIFs: String { return self._s[1905]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1906]! } - public var Username_InvalidStartsWithNumber: String { return self._s[1907]! } - public var Common_Back: String { return self._s[1908]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1909]! } + public var ChatSettings_PrivateChats: String { return self._s[1895]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1896]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[1897]! } + public var Channel_UpdatePhotoItem: String { return self._s[1898]! } + public var GroupInfo_LeftStatus: String { return self._s[1899]! } + public var Watch_MessageView_Forward: String { return self._s[1901]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[1902]! } + public var Cache_ClearEmpty: String { return self._s[1904]! } + public var Localization_LanguageName: String { return self._s[1905]! } + public var WebSearch_GIFs: String { return self._s[1906]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1907]! } + public var Username_InvalidStartsWithNumber: String { return self._s[1908]! } + public var Common_Back: String { return self._s[1909]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1910]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1910]!, self._r[1910]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1911]!, self._r[1911]!, [_1, _2]) } - public var Passport_Email_Help: String { return self._s[1911]! } - public var Watch_Conversation_Reply: String { return self._s[1913]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[1915]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1916]! } - public var Channel_BanUser_Unban: String { return self._s[1918]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1919]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[1920]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1922]! } - public var Passport_Identity_Name: String { return self._s[1923]! } + public var Passport_Email_Help: String { return self._s[1912]! } + public var Watch_Conversation_Reply: String { return self._s[1914]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[1916]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1917]! } + public var Channel_BanUser_Unban: String { return self._s[1919]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1920]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[1921]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1923]! } + public var Passport_Identity_Name: String { return self._s[1924]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1924]!, self._r[1924]!, [_0]) + return formatWithArgumentRanges(self._s[1925]!, self._r[1925]!, [_0]) } - public var GroupRemoved_ViewUserInfo: String { return self._s[1925]! } - public var Conversation_BlockUser: String { return self._s[1926]! } - public var Month_GenJanuary: String { return self._s[1927]! } - public var ChatSettings_TextSize: String { return self._s[1928]! } - public var Notification_PassportValuePhone: String { return self._s[1929]! } - public var Passport_Language_ne: String { return self._s[1930]! } - public var Notification_CallBack: String { return self._s[1931]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1932]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[1926]! } + public var Conversation_BlockUser: String { return self._s[1927]! } + public var Month_GenJanuary: String { return self._s[1928]! } + public var ChatSettings_TextSize: String { return self._s[1929]! } + public var Notification_PassportValuePhone: String { return self._s[1930]! } + public var Passport_Language_ne: String { return self._s[1931]! } + public var Notification_CallBack: String { return self._s[1932]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1933]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1933]!, self._r[1933]!, [_0]) + return formatWithArgumentRanges(self._s[1934]!, self._r[1934]!, [_0]) } - public var Channel_Info_Management: String { return self._s[1934]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[1935]! } - public var Stickers_FrequentlyUsed: String { return self._s[1936]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[1937]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1939]! } + public var Channel_Info_Management: String { return self._s[1935]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[1936]! } + public var Stickers_FrequentlyUsed: String { return self._s[1937]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[1938]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1940]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1940]!, self._r[1940]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[1941]!, self._r[1941]!, [_1, "\(_2)"]) } - public var Passport_Address_EditResidentialAddress: String { return self._s[1941]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[1942]! } - public var CreatePoll_TextHeader: String { return self._s[1943]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[1942]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[1943]! } + public var CreatePoll_TextHeader: String { return self._s[1944]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1944]!, self._r[1944]!, [_0]) + return formatWithArgumentRanges(self._s[1945]!, self._r[1945]!, [_0]) } - public var PhotoEditor_QualityMedium: String { return self._s[1945]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1946]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1948]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1949]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[1950]! } + public var PhotoEditor_QualityMedium: String { return self._s[1946]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1947]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1949]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1950]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[1951]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1951]!, self._r[1951]!, [_0]) + return formatWithArgumentRanges(self._s[1952]!, self._r[1952]!, [_0]) } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1952]!, self._r[1952]!, [_1]) + return formatWithArgumentRanges(self._s[1953]!, self._r[1953]!, [_1]) } - public var Conversation_LinkDialogOpen: String { return self._s[1954]! } - public var Settings_Username: String { return self._s[1955]! } - public var Conversation_Block: String { return self._s[1957]! } - public var Wallpaper_Wallpaper: String { return self._s[1958]! } - public var SocksProxySetup_UseProxy: String { return self._s[1960]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[1961]! } - public var MessageTimer_Forever: String { return self._s[1962]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1963]! } - public var PhotoEditor_DiscardChanges: String { return self._s[1964]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1965]! } - public var Passport_Language_da: String { return self._s[1966]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[1967]! } + public var Conversation_LinkDialogOpen: String { return self._s[1955]! } + public var Settings_Username: String { return self._s[1956]! } + public var Conversation_Block: String { return self._s[1958]! } + public var Wallpaper_Wallpaper: String { return self._s[1959]! } + public var SocksProxySetup_UseProxy: String { return self._s[1961]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[1962]! } + public var MessageTimer_Forever: String { return self._s[1963]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1964]! } + public var PhotoEditor_DiscardChanges: String { return self._s[1965]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1966]! } + public var Passport_Language_da: String { return self._s[1967]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[1968]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1968]!, self._r[1968]!, [_0]) + return formatWithArgumentRanges(self._s[1969]!, self._r[1969]!, [_0]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[1969]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[1970]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1971]!, self._r[1971]!, [_0]) + return formatWithArgumentRanges(self._s[1972]!, self._r[1972]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1973]! } - public var Conversation_SearchByName_Prefix: String { return self._s[1974]! } - public var Conversation_PinnedPoll: String { return self._s[1975]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1976]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1974]! } + public var Conversation_SearchByName_Prefix: String { return self._s[1975]! } + public var Conversation_PinnedPoll: String { return self._s[1976]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1977]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1977]!, self._r[1977]!, [_1]) + return formatWithArgumentRanges(self._s[1978]!, self._r[1978]!, [_1]) } - public var WallpaperSearch_ColorPurple: String { return self._s[1978]! } - public var Cache_ByPeerHeader: String { return self._s[1979]! } + public var WallpaperSearch_ColorPurple: String { return self._s[1979]! } + public var Cache_ByPeerHeader: String { return self._s[1980]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1980]!, self._r[1980]!, [_0]) + return formatWithArgumentRanges(self._s[1981]!, self._r[1981]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[1981]! } - public var Notification_PinnedMessage: String { return self._s[1984]! } - public var Contacts_SortBy: String { return self._s[1986]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[1982]! } + public var Notification_PinnedMessage: String { return self._s[1985]! } + public var Contacts_SortBy: String { return self._s[1987]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1987]!, self._r[1987]!, [_1]) + return formatWithArgumentRanges(self._s[1988]!, self._r[1988]!, [_1]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1989]!, self._r[1989]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1990]!, self._r[1990]!, [_1, _2]) } - public var Call_EncryptionKey_Title: String { return self._s[1990]! } - public var Watch_UserInfo_Service: String { return self._s[1991]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1993]! } - public var Conversation_Unpin: String { return self._s[1995]! } - public var CancelResetAccount_Title: String { return self._s[1996]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1997]! } + public var Call_EncryptionKey_Title: String { return self._s[1991]! } + public var Watch_UserInfo_Service: String { return self._s[1992]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1994]! } + public var Conversation_Unpin: String { return self._s[1996]! } + public var CancelResetAccount_Title: String { return self._s[1997]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1998]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1999]!, self._r[1999]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2000]!, self._r[2000]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2000]! } - public var CallSettings_Title: String { return self._s[2001]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2002]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[2004]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2005]! } - public var Passport_Identity_DocumentDetails: String { return self._s[2006]! } - public var LoginPassword_PasswordHelp: String { return self._s[2007]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2008]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2009]! } - public var Checkout_TotalPaidAmount: String { return self._s[2010]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2001]! } + public var CallSettings_Title: String { return self._s[2002]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2003]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[2005]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2006]! } + public var Passport_Identity_DocumentDetails: String { return self._s[2007]! } + public var LoginPassword_PasswordHelp: String { return self._s[2008]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2009]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2010]! } + public var Checkout_TotalPaidAmount: String { return self._s[2011]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2011]!, self._r[2011]!, [_0]) + return formatWithArgumentRanges(self._s[2012]!, self._r[2012]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[2012]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[2014]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[2015]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[2013]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[2015]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[2016]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2016]!, self._r[2016]!, [_1]) + return formatWithArgumentRanges(self._s[2017]!, self._r[2017]!, [_1]) } - public var Contacts_InviteFriends: String { return self._s[2018]! } - public var Map_ChooseLocationTitle: String { return self._s[2019]! } - public var Conversation_StopPoll: String { return self._s[2021]! } + public var Contacts_InviteFriends: String { return self._s[2019]! } + public var Map_ChooseLocationTitle: String { return self._s[2020]! } + public var Conversation_StopPoll: String { return self._s[2022]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2022]!, self._r[2022]!, [_0]) + return formatWithArgumentRanges(self._s[2023]!, self._r[2023]!, [_0]) } - public var Call_Camera: String { return self._s[2023]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2024]! } - public var Calls_RatingFeedback: String { return self._s[2025]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2026]! } - public var NotificationsSound_Pulse: String { return self._s[2027]! } - public var Watch_LastSeen_Lately: String { return self._s[2028]! } - public var ReportGroupLocation_Report: String { return self._s[2031]! } - public var Widget_NoUsers: String { return self._s[2032]! } - public var Conversation_UnvotePoll: String { return self._s[2033]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2035]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2036]! } - public var NotificationsSound_Circles: String { return self._s[2037]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2039]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2040]! } - public var Proxy_TooltipUnavailable: String { return self._s[2041]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[2043]! } - public var Conversation_FileDropbox: String { return self._s[2045]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[2046]! } - public var Tour_Text3: String { return self._s[2048]! } - public var Login_ResetAccountProtected_Title: String { return self._s[2050]! } - public var GroupPermission_NoSendMessages: String { return self._s[2051]! } - public var WallpaperSearch_ColorTitle: String { return self._s[2052]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2053]! } + public var Call_Camera: String { return self._s[2024]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2025]! } + public var Calls_RatingFeedback: String { return self._s[2026]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2027]! } + public var NotificationsSound_Pulse: String { return self._s[2028]! } + public var Watch_LastSeen_Lately: String { return self._s[2029]! } + public var ReportGroupLocation_Report: String { return self._s[2032]! } + public var Widget_NoUsers: String { return self._s[2033]! } + public var Conversation_UnvotePoll: String { return self._s[2034]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2036]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2037]! } + public var NotificationsSound_Circles: String { return self._s[2038]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2040]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2041]! } + public var Proxy_TooltipUnavailable: String { return self._s[2042]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[2044]! } + public var Conversation_FileDropbox: String { return self._s[2046]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[2047]! } + public var Tour_Text3: String { return self._s[2049]! } + public var Login_ResetAccountProtected_Title: String { return self._s[2051]! } + public var GroupPermission_NoSendMessages: String { return self._s[2052]! } + public var WallpaperSearch_ColorTitle: String { return self._s[2053]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2054]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2055]!, self._r[2055]!, [_0]) + return formatWithArgumentRanges(self._s[2056]!, self._r[2056]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[2056]! } - public var Checkout_ShippingOption_Title: String { return self._s[2057]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2058]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[2057]! } + public var Checkout_ShippingOption_Title: String { return self._s[2058]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2059]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2059]!, self._r[2059]!, [_0]) - } - public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2060]!, self._r[2060]!, [_0]) } - public var Channel_Management_LabelAdministrator: String { return self._s[2061]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[2062]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2063]! } - public var AutoDownloadSettings_Photos: String { return self._s[2065]! } - public var Appearance_PreviewIncomingText: String { return self._s[2066]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[2067]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2068]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2069]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2070]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2071]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2072]! } - public var Notification_SecretChatScreenshot: String { return self._s[2073]! } - public var AccessDenied_Wallpapers: String { return self._s[2074]! } - public var Passport_Address_City: String { return self._s[2076]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2077]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[2078]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2079]! } - public var AccessDenied_LocationDisabled: String { return self._s[2080]! } - public var Group_Location_Title: String { return self._s[2081]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2083]! } - public var GroupInfo_Sound: String { return self._s[2084]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[2085]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2086]! } - public var Contacts_Title: String { return self._s[2087]! } - public var Passport_Language_fr: String { return self._s[2088]! } - public var Notifications_ResetAllNotifications: String { return self._s[2089]! } - public var PrivacySettings_SecurityTitle: String { return self._s[2092]! } - public var Checkout_NewCard_Title: String { return self._s[2093]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[2094]! } - public var Conversation_ForwardChats: String { return self._s[2095]! } - public var PasscodeSettings_4DigitCode: String { return self._s[2097]! } - public var Settings_FAQ: String { return self._s[2099]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2100]! } - public var Conversation_ContextMenuForward: String { return self._s[2101]! } - public var PrivacyPolicy_Title: String { return self._s[2106]! } - public var Notifications_TextTone: String { return self._s[2107]! } - public var Profile_CreateNewContact: String { return self._s[2108]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2109]! } - public var Call_Speaker: String { return self._s[2111]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[2112]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2114]! } - public var Channel_Username_InvalidCharacters: String { return self._s[2115]! } + public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2061]!, self._r[2061]!, [_0]) + } + public var Channel_Management_LabelAdministrator: String { return self._s[2062]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[2063]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2064]! } + public var AutoDownloadSettings_Photos: String { return self._s[2066]! } + public var Appearance_PreviewIncomingText: String { return self._s[2067]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[2068]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2069]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2070]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2071]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2072]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2073]! } + public var Notification_SecretChatScreenshot: String { return self._s[2074]! } + public var AccessDenied_Wallpapers: String { return self._s[2075]! } + public var Passport_Address_City: String { return self._s[2077]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2078]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[2079]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2080]! } + public var AccessDenied_LocationDisabled: String { return self._s[2081]! } + public var Group_Location_Title: String { return self._s[2082]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2084]! } + public var GroupInfo_Sound: String { return self._s[2085]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[2086]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2087]! } + public var Contacts_Title: String { return self._s[2088]! } + public var Passport_Language_fr: String { return self._s[2089]! } + public var Notifications_ResetAllNotifications: String { return self._s[2090]! } + public var PrivacySettings_SecurityTitle: String { return self._s[2093]! } + public var Checkout_NewCard_Title: String { return self._s[2094]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[2095]! } + public var Conversation_ForwardChats: String { return self._s[2096]! } + public var PasscodeSettings_4DigitCode: String { return self._s[2098]! } + public var Settings_FAQ: String { return self._s[2100]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2101]! } + public var Conversation_ContextMenuForward: String { return self._s[2102]! } + public var PrivacyPolicy_Title: String { return self._s[2107]! } + public var Notifications_TextTone: String { return self._s[2108]! } + public var Profile_CreateNewContact: String { return self._s[2109]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2110]! } + public var Call_Speaker: String { return self._s[2112]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[2113]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2115]! } + public var Channel_Username_InvalidCharacters: String { return self._s[2116]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2116]!, self._r[2116]!, [_0]) + return formatWithArgumentRanges(self._s[2117]!, self._r[2117]!, [_0]) } - public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2117]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[2118]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[2119]! } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2120]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[2121]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[2122]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[2123]! } - public var Bot_Unblock: String { return self._s[2124]! } - public var TextFormat_Italic: String { return self._s[2125]! } - public var WallpaperSearch_ColorPink: String { return self._s[2126]! } - public var Settings_About_Help: String { return self._s[2127]! } - public var SearchImages_Title: String { return self._s[2128]! } - public var Weekday_Wednesday: String { return self._s[2129]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[2130]! } - public var ExplicitContent_AlertTitle: String { return self._s[2131]! } + public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2118]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[2119]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[2120]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2121]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[2122]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[2123]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[2124]! } + public var Bot_Unblock: String { return self._s[2125]! } + public var TextFormat_Italic: String { return self._s[2126]! } + public var WallpaperSearch_ColorPink: String { return self._s[2127]! } + public var Settings_About_Help: String { return self._s[2128]! } + public var SearchImages_Title: String { return self._s[2129]! } + public var Weekday_Wednesday: String { return self._s[2130]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[2131]! } + public var ExplicitContent_AlertTitle: String { return self._s[2132]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2132]!, self._r[2132]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2133]!, self._r[2133]!, [_1, _2, _3]) } - public var Channel_DiscussionGroup_Create: String { return self._s[2133]! } - public var Weekday_Thursday: String { return self._s[2134]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2135]! } - public var Channel_Members_AddMembersHelp: String { return self._s[2136]! } + public var Channel_DiscussionGroup_Create: String { return self._s[2134]! } + public var Weekday_Thursday: String { return self._s[2135]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2136]! } + public var Channel_Members_AddMembersHelp: String { return self._s[2137]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2137]!, self._r[2137]!, [_0]) + return formatWithArgumentRanges(self._s[2138]!, self._r[2138]!, [_0]) } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2138]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2139]! } - public var Passport_RequestedInformation: String { return self._s[2140]! } - public var Login_PhoneAndCountryHelp: String { return self._s[2141]! } - public var Conversation_EncryptionProcessing: String { return self._s[2143]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2144]! } - public var PhotoEditor_EnhanceTool: String { return self._s[2146]! } - public var Channel_Setup_Title: String { return self._s[2147]! } - public var Conversation_SearchPlaceholder: String { return self._s[2148]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2149]! } - public var Checkout_ErrorGeneric: String { return self._s[2150]! } - public var Passport_Language_hu: String { return self._s[2151]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2139]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2140]! } + public var Passport_RequestedInformation: String { return self._s[2141]! } + public var Login_PhoneAndCountryHelp: String { return self._s[2142]! } + public var Conversation_EncryptionProcessing: String { return self._s[2144]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2145]! } + public var PhotoEditor_EnhanceTool: String { return self._s[2147]! } + public var Channel_Setup_Title: String { return self._s[2148]! } + public var Conversation_SearchPlaceholder: String { return self._s[2149]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2150]! } + public var Checkout_ErrorGeneric: String { return self._s[2151]! } + public var Passport_Language_hu: String { return self._s[2152]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2153]!, self._r[2153]!, [_0]) + return formatWithArgumentRanges(self._s[2154]!, self._r[2154]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2156]!, self._r[2156]!, [_1]) + return formatWithArgumentRanges(self._s[2157]!, self._r[2157]!, [_1]) } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2157]!, self._r[2157]!, [_0]) + return formatWithArgumentRanges(self._s[2158]!, self._r[2158]!, [_0]) } - public var Group_Location_Info: String { return self._s[2158]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[2159]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2160]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2161]! } + public var Group_Location_Info: String { return self._s[2159]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[2160]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2161]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2162]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2162]!, self._r[2162]!, [_0]) + return formatWithArgumentRanges(self._s[2163]!, self._r[2163]!, [_0]) } - public var Conversation_ClearPrivateHistory: String { return self._s[2163]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[2164]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[2165]! } + public var Conversation_ClearPrivateHistory: String { return self._s[2164]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[2165]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[2166]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2166]!, self._r[2166]!, [_0]) + return formatWithArgumentRanges(self._s[2167]!, self._r[2167]!, [_0]) } - public var Passport_Language_cs: String { return self._s[2167]! } - public var Message_PinnedAnimationMessage: String { return self._s[2169]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[2171]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2172]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2174]! } - public var Embed_PlayingInPIP: String { return self._s[2175]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[2176]! } + public var Passport_Language_cs: String { return self._s[2168]! } + public var Message_PinnedAnimationMessage: String { return self._s[2170]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[2172]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2173]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2175]! } + public var Embed_PlayingInPIP: String { return self._s[2176]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[2177]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2177]!, self._r[2177]!, [_0]) + return formatWithArgumentRanges(self._s[2178]!, self._r[2178]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[2178]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[2179]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2179]!, self._r[2179]!, [_1]) + return formatWithArgumentRanges(self._s[2180]!, self._r[2180]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[2180]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2181]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2182]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[2183]! } - public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2184]! } + public var Notification_PaymentSent: String { return self._s[2181]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2182]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2183]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[2184]! } + public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2185]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2187]!, self._r[2187]!, [_1]) - } - public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2188]!, self._r[2188]!, [_1]) } - public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2189]!, self._r[2189]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2191]! } - public var PasscodeSettings_HelpTop: String { return self._s[2192]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2193]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2194]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2195]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2196]! } - public var Call_Accept: String { return self._s[2198]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2199]! } - public var Month_GenMarch: String { return self._s[2201]! } - public var PhotoEditor_ShadowsTool: String { return self._s[2202]! } - public var LoginPassword_Title: String { return self._s[2203]! } - public var Call_End: String { return self._s[2204]! } - public var Watch_Conversation_GroupInfo: String { return self._s[2205]! } - public var CallSettings_Always: String { return self._s[2206]! } - public var CallFeedback_Success: String { return self._s[2207]! } - public var TwoStepAuth_SetupHint: String { return self._s[2208]! } + public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2190]!, self._r[2190]!, [_1]) + } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2192]! } + public var PasscodeSettings_HelpTop: String { return self._s[2193]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2194]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2195]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2196]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2197]! } + public var Call_Accept: String { return self._s[2199]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2200]! } + public var Month_GenMarch: String { return self._s[2202]! } + public var PhotoEditor_ShadowsTool: String { return self._s[2203]! } + public var LoginPassword_Title: String { return self._s[2204]! } + public var Call_End: String { return self._s[2205]! } + public var Watch_Conversation_GroupInfo: String { return self._s[2206]! } + public var CallSettings_Always: String { return self._s[2207]! } + public var CallFeedback_Success: String { return self._s[2208]! } + public var TwoStepAuth_SetupHint: String { return self._s[2209]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2209]!, self._r[2209]!, [_1]) + return formatWithArgumentRanges(self._s[2210]!, self._r[2210]!, [_1]) } - public var ConversationProfile_UsersTooMuchError: String { return self._s[2210]! } - public var Login_PhoneTitle: String { return self._s[2211]! } - public var Passport_FieldPhoneHelp: String { return self._s[2212]! } - public var Weekday_ShortSunday: String { return self._s[2213]! } - public var Passport_InfoFAQ_URL: String { return self._s[2214]! } - public var ContactInfo_Job: String { return self._s[2216]! } - public var UserInfo_InviteBotToGroup: String { return self._s[2217]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[2218]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2219]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2220]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2221]! } - public var CallFeedback_ReasonNoise: String { return self._s[2222]! } - public var Appearance_AppIconDefault: String { return self._s[2224]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[2225]! } - public var MediaPicker_AddCaption: String { return self._s[2226]! } - public var CallSettings_TabIconDescription: String { return self._s[2227]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2228]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2229]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[2230]! } - public var DialogList_SearchSectionRecent: String { return self._s[2231]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[2232]! } - public var LogoutOptions_ClearCacheText: String { return self._s[2235]! } - public var LastSeen_WithinAWeek: String { return self._s[2236]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[2237]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[2239]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[2211]! } + public var Login_PhoneTitle: String { return self._s[2212]! } + public var Passport_FieldPhoneHelp: String { return self._s[2213]! } + public var Weekday_ShortSunday: String { return self._s[2214]! } + public var Passport_InfoFAQ_URL: String { return self._s[2215]! } + public var ContactInfo_Job: String { return self._s[2217]! } + public var UserInfo_InviteBotToGroup: String { return self._s[2218]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[2219]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2220]! } + public var Invite_ChannelsTooMuch: String { return self._s[2221]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2222]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2223]! } + public var CallFeedback_ReasonNoise: String { return self._s[2224]! } + public var Appearance_AppIconDefault: String { return self._s[2226]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[2227]! } + public var MediaPicker_AddCaption: String { return self._s[2228]! } + public var CallSettings_TabIconDescription: String { return self._s[2229]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2230]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2231]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[2232]! } + public var DialogList_SearchSectionRecent: String { return self._s[2233]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[2234]! } + public var LogoutOptions_ClearCacheText: String { return self._s[2237]! } + public var LastSeen_WithinAWeek: String { return self._s[2238]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[2239]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[2241]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2240]!, self._r[2240]!, [_0]) + return formatWithArgumentRanges(self._s[2242]!, self._r[2242]!, [_0]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2241]! } - public var Conversation_StatusLeftGroup: String { return self._s[2242]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2243]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2245]! } - public var GroupPermission_AddSuccess: String { return self._s[2246]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2248]! } - public var Conversation_ContextMenuCopy: String { return self._s[2249]! } - public var AccessDenied_CallMicrophone: String { return self._s[2250]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2243]! } + public var Conversation_StatusLeftGroup: String { return self._s[2244]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2245]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2247]! } + public var GroupPermission_AddSuccess: String { return self._s[2248]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2250]! } + public var Conversation_ContextMenuCopy: String { return self._s[2251]! } + public var AccessDenied_CallMicrophone: String { return self._s[2252]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2251]!, self._r[2251]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2253]!, self._r[2253]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[2252]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2253]! } - public var Checkout_PaymentMethod_New: String { return self._s[2254]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[2255]! } - public var PhotoEditor_QualityTool: String { return self._s[2256]! } - public var Login_SendCodeViaSms: String { return self._s[2257]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2258]! } - public var Login_EmailNotConfiguredError: String { return self._s[2259]! } - public var SocksProxySetup_Status: String { return self._s[2260]! } - public var PrivacyPolicy_Accept: String { return self._s[2261]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2262]! } - public var Appearance_AppIconClassicX: String { return self._s[2263]! } + public var Login_InvalidFirstNameError: String { return self._s[2254]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2255]! } + public var Checkout_PaymentMethod_New: String { return self._s[2256]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[2257]! } + public var PhotoEditor_QualityTool: String { return self._s[2258]! } + public var Login_SendCodeViaSms: String { return self._s[2259]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2260]! } + public var Login_EmailNotConfiguredError: String { return self._s[2261]! } + public var SocksProxySetup_Status: String { return self._s[2262]! } + public var PrivacyPolicy_Accept: String { return self._s[2263]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2264]! } + public var Appearance_AppIconClassicX: String { return self._s[2265]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2264]!, self._r[2264]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2266]!, self._r[2266]!, [_1, _2, _3]) } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[2265]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2266]! } - public var AutoNightTheme_Automatic: String { return self._s[2267]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2268]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2269]! } - public var Cache_Help: String { return self._s[2270]! } - public var Group_ErrorAccessDenied: String { return self._s[2271]! } - public var Passport_Language_fa: String { return self._s[2272]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2273]! } - public var PrivacySettings_LastSeen: String { return self._s[2274]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[2267]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2268]! } + public var AutoNightTheme_Automatic: String { return self._s[2269]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2270]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2271]! } + public var Cache_Help: String { return self._s[2272]! } + public var Group_ErrorAccessDenied: String { return self._s[2273]! } + public var Passport_Language_fa: String { return self._s[2274]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2275]! } + public var PrivacySettings_LastSeen: String { return self._s[2276]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2275]!, self._r[2275]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2277]!, self._r[2277]!, [_0, _1]) } - public var Preview_SaveGif: String { return self._s[2279]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2280]! } - public var Profile_About: String { return self._s[2281]! } - public var Channel_About_Placeholder: String { return self._s[2282]! } - public var Login_InfoTitle: String { return self._s[2283]! } + public var Preview_SaveGif: String { return self._s[2281]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2282]! } + public var Profile_About: String { return self._s[2283]! } + public var Channel_About_Placeholder: String { return self._s[2284]! } + public var Login_InfoTitle: String { return self._s[2285]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2284]!, self._r[2284]!, [_0]) + return formatWithArgumentRanges(self._s[2286]!, self._r[2286]!, [_0]) } - public var Watch_Suggestion_CantTalk: String { return self._s[2286]! } - public var ContactInfo_Title: String { return self._s[2287]! } - public var Media_ShareThisVideo: String { return self._s[2288]! } - public var Weekday_ShortFriday: String { return self._s[2289]! } - public var AccessDenied_Contacts: String { return self._s[2290]! } - public var Notification_CallIncomingShort: String { return self._s[2291]! } - public var Group_Setup_TypePublic: String { return self._s[2292]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2293]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2294]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2297]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2298]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2299]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2300]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2301]! } - public var DialogList_Typing: String { return self._s[2302]! } - public var CallFeedback_IncludeLogs: String { return self._s[2304]! } - public var Checkout_Phone: String { return self._s[2306]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2309]! } - public var Privacy_Calls_Integration: String { return self._s[2310]! } - public var Notifications_PermissionsAllow: String { return self._s[2311]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2315]! } - public var Settings_ChatSettings: String { return self._s[2316]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2288]! } + public var ContactInfo_Title: String { return self._s[2289]! } + public var Media_ShareThisVideo: String { return self._s[2290]! } + public var Weekday_ShortFriday: String { return self._s[2291]! } + public var AccessDenied_Contacts: String { return self._s[2292]! } + public var Notification_CallIncomingShort: String { return self._s[2293]! } + public var Group_Setup_TypePublic: String { return self._s[2294]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2295]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2296]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2299]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2300]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2301]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2302]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2303]! } + public var DialogList_Typing: String { return self._s[2304]! } + public var CallFeedback_IncludeLogs: String { return self._s[2306]! } + public var Checkout_Phone: String { return self._s[2308]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2311]! } + public var Privacy_Calls_Integration: String { return self._s[2312]! } + public var Notifications_PermissionsAllow: String { return self._s[2313]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2317]! } + public var Settings_ChatSettings: String { return self._s[2318]! } public func PUSH_MESSAGE_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2317]!, self._r[2317]!, [_1]) + return formatWithArgumentRanges(self._s[2319]!, self._r[2319]!, [_1]) } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2318]!, self._r[2318]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2320]!, self._r[2320]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2320]! } + public var GroupRemoved_DeleteUser: String { return self._s[2322]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2321]!, self._r[2321]!, [_0]) + return formatWithArgumentRanges(self._s[2323]!, self._r[2323]!, [_0]) } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2322]!, self._r[2322]!, [_1]) + return formatWithArgumentRanges(self._s[2324]!, self._r[2324]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2323]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2324]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2326]! } - public var Conversation_Unblock: String { return self._s[2327]! } - public var PrivacySettings_DataSettings: String { return self._s[2328]! } - public var Group_PublicLink_Info: String { return self._s[2329]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2330]! } + public var Login_ContinueWithLocalization: String { return self._s[2325]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2326]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2328]! } + public var Conversation_Unblock: String { return self._s[2329]! } + public var PrivacySettings_DataSettings: String { return self._s[2330]! } + public var Group_PublicLink_Info: String { return self._s[2331]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2332]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2331]!, self._r[2331]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2333]!, self._r[2333]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2334]! } - public var Call_Mute: String { return self._s[2335]! } - public var Passport_Language_dz: String { return self._s[2336]! } - public var Passport_Language_tk: String { return self._s[2337]! } + public var PrivacySettings_Passcode: String { return self._s[2336]! } + public var Call_Mute: String { return self._s[2337]! } + public var Passport_Language_dz: String { return self._s[2338]! } + public var Passport_Language_tk: String { return self._s[2339]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2338]!, self._r[2338]!, [_0]) + return formatWithArgumentRanges(self._s[2340]!, self._r[2340]!, [_0]) } - public var Settings_Search: String { return self._s[2339]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2340]! } - public var Conversation_ContextMenuReply: String { return self._s[2341]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2342]! } - public var Tour_Title1: String { return self._s[2343]! } - public var Conversation_ClearGroupHistory: String { return self._s[2345]! } - public var WallpaperPreview_Motion: String { return self._s[2346]! } + public var Settings_Search: String { return self._s[2341]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2342]! } + public var Conversation_ContextMenuReply: String { return self._s[2343]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2344]! } + public var Tour_Title1: String { return self._s[2345]! } + public var Conversation_ClearGroupHistory: String { return self._s[2347]! } + public var WallpaperPreview_Motion: String { return self._s[2348]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2347]!, self._r[2347]!, [_0]) + return formatWithArgumentRanges(self._s[2349]!, self._r[2349]!, [_0]) } - public var Call_RateCall: String { return self._s[2348]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2349]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2350]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2351]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2353]! } + public var Call_RateCall: String { return self._s[2350]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2351]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2352]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2353]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2355]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2355]!, self._r[2355]!, [_0]) + return formatWithArgumentRanges(self._s[2357]!, self._r[2357]!, [_0]) } - public var Compose_Create: String { return self._s[2356]! } - public var Contacts_InviteToTelegram: String { return self._s[2357]! } - public var GroupInfo_Notifications: String { return self._s[2358]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2360]! } - public var Month_GenApril: String { return self._s[2361]! } - public var Appearance_AutoNightTheme: String { return self._s[2362]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2364]! } - public var Login_CodeSentSms: String { return self._s[2366]! } + public var Compose_Create: String { return self._s[2358]! } + public var Contacts_InviteToTelegram: String { return self._s[2359]! } + public var GroupInfo_Notifications: String { return self._s[2360]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2362]! } + public var Month_GenApril: String { return self._s[2363]! } + public var Appearance_AutoNightTheme: String { return self._s[2364]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2366]! } + public var Login_CodeSentSms: String { return self._s[2368]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2367]!, self._r[2367]!, [_0]) + return formatWithArgumentRanges(self._s[2369]!, self._r[2369]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2368]! } - public var LogoutOptions_ContactSupportText: String { return self._s[2369]! } - public var Passport_Language_hr: String { return self._s[2370]! } - public var Common_ActionNotAllowedError: String { return self._s[2371]! } + public var EmptyGroupInfo_Line3: String { return self._s[2370]! } + public var LogoutOptions_ContactSupportText: String { return self._s[2371]! } + public var Passport_Language_hr: String { return self._s[2372]! } + public var Common_ActionNotAllowedError: String { return self._s[2373]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2372]!, self._r[2372]!, [_0]) + return formatWithArgumentRanges(self._s[2374]!, self._r[2374]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2373]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2374]! } - public var Privacy_SecretChatsTitle: String { return self._s[2375]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2377]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2378]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2379]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[2380]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[2381]! } - public var Preview_DeleteGif: String { return self._s[2382]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2383]! } - public var Group_ErrorNotMutualContact: String { return self._s[2384]! } - public var Notification_MessageLifetime5s: String { return self._s[2385]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2375]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2376]! } + public var Privacy_SecretChatsTitle: String { return self._s[2377]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2379]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2380]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2381]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[2382]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[2383]! } + public var Preview_DeleteGif: String { return self._s[2384]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2385]! } + public var Group_ErrorNotMutualContact: String { return self._s[2386]! } + public var Notification_MessageLifetime5s: String { return self._s[2387]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2386]!, self._r[2386]!, [_0]) + return formatWithArgumentRanges(self._s[2388]!, self._r[2388]!, [_0]) } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2388]! } - public var ReportSpam_DeleteThisChat: String { return self._s[2389]! } - public var Passport_Address_AddBankStatement: String { return self._s[2390]! } - public var Notification_CallIncoming: String { return self._s[2391]! } - public var Compose_NewGroupTitle: String { return self._s[2392]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2394]! } - public var Passport_Address_Postcode: String { return self._s[2396]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2390]! } + public var ReportSpam_DeleteThisChat: String { return self._s[2391]! } + public var Passport_Address_AddBankStatement: String { return self._s[2392]! } + public var Notification_CallIncoming: String { return self._s[2393]! } + public var Compose_NewGroupTitle: String { return self._s[2394]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2396]! } + public var Passport_Address_Postcode: String { return self._s[2398]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2397]!, self._r[2397]!, [_0]) + return formatWithArgumentRanges(self._s[2399]!, self._r[2399]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2398]! } - public var WallpaperColors_Title: String { return self._s[2399]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2400]! } - public var GroupPermission_Duration: String { return self._s[2401]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2400]! } + public var WallpaperColors_Title: String { return self._s[2401]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2402]! } + public var GroupPermission_Duration: String { return self._s[2403]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2402]!, self._r[2402]!, [_0]) + return formatWithArgumentRanges(self._s[2404]!, self._r[2404]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2403]! } - public var Username_Placeholder: String { return self._s[2404]! } - public var CallFeedback_WhatWentWrong: String { return self._s[2405]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2406]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2407]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2405]! } + public var Username_Placeholder: String { return self._s[2406]! } + public var CallFeedback_WhatWentWrong: String { return self._s[2407]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2408]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2409]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2409]!, self._r[2409]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2411]!, self._r[2411]!, [_1, _2]) } - public var Passport_PasswordDescription: String { return self._s[2410]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2411]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2412]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2413]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2414]! } - public var Conversation_ContextMenuMore: String { return self._s[2415]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2416]! } - public var CallSettings_TabIcon: String { return self._s[2417]! } - public var KeyCommand_Find: String { return self._s[2418]! } - public var Message_PinnedGame: String { return self._s[2419]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2421]! } - public var Login_CallRequestState2: String { return self._s[2423]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2425]! } + public var Passport_PasswordDescription: String { return self._s[2412]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2413]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2414]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2415]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2416]! } + public var Conversation_ContextMenuMore: String { return self._s[2417]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2418]! } + public var CallSettings_TabIcon: String { return self._s[2419]! } + public var KeyCommand_Find: String { return self._s[2420]! } + public var Message_PinnedGame: String { return self._s[2421]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2423]! } + public var Login_CallRequestState2: String { return self._s[2425]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2427]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2427]!, self._r[2427]!, [_0]) + return formatWithArgumentRanges(self._s[2429]!, self._r[2429]!, [_0]) } - public var WallpaperPreview_Blurred: String { return self._s[2428]! } - public var Conversation_InstantPagePreview: String { return self._s[2429]! } + public var WallpaperPreview_Blurred: String { return self._s[2430]! } + public var Conversation_InstantPagePreview: String { return self._s[2431]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2430]!, self._r[2430]!, [_0]) + return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2433]! } - public var WallpaperSearch_ColorRed: String { return self._s[2434]! } - public var GroupPermission_NoPinMessages: String { return self._s[2435]! } - public var Passport_Language_es: String { return self._s[2436]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2438]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2439]! } + public var SecretTimer_VideoDescription: String { return self._s[2435]! } + public var WallpaperSearch_ColorRed: String { return self._s[2436]! } + public var GroupPermission_NoPinMessages: String { return self._s[2437]! } + public var Passport_Language_es: String { return self._s[2438]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2440]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2441]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2440]!, self._r[2440]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2442]!, self._r[2442]!, [_1, _2]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[2441]! } - public var WebPreview_GettingLinkInfo: String { return self._s[2442]! } - public var Watch_UserInfo_Unmute: String { return self._s[2443]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2444]! } - public var AccessDenied_CameraRestricted: String { return self._s[2446]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[2443]! } + public var WebPreview_GettingLinkInfo: String { return self._s[2444]! } + public var Watch_UserInfo_Unmute: String { return self._s[2445]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2446]! } + public var AccessDenied_CameraRestricted: String { return self._s[2448]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2447]!, self._r[2447]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2449]!, self._r[2449]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2449]! } - public var Settings_CopyUsername: String { return self._s[2450]! } - public var Contacts_SearchLabel: String { return self._s[2451]! } - public var Map_OpenInYandexNavigator: String { return self._s[2453]! } - public var PasscodeSettings_EncryptData: String { return self._s[2454]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[2455]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2456]! } - public var DialogList_AdNoticeAlert: String { return self._s[2457]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2459]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2460]! } - public var Localization_LanguageCustom: String { return self._s[2461]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2462]! } - public var CallFeedback_Title: String { return self._s[2463]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2466]! } - public var Conversation_InfoGroup: String { return self._s[2467]! } - public var Compose_NewMessage: String { return self._s[2468]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2469]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2470]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2471]! } + public var ChatList_ReadAll: String { return self._s[2451]! } + public var Settings_CopyUsername: String { return self._s[2452]! } + public var Contacts_SearchLabel: String { return self._s[2453]! } + public var Map_OpenInYandexNavigator: String { return self._s[2455]! } + public var PasscodeSettings_EncryptData: String { return self._s[2456]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2457]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2458]! } + public var DialogList_AdNoticeAlert: String { return self._s[2459]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2461]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2462]! } + public var Localization_LanguageCustom: String { return self._s[2463]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2464]! } + public var CallFeedback_Title: String { return self._s[2465]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2468]! } + public var Conversation_InfoGroup: String { return self._s[2469]! } + public var Compose_NewMessage: String { return self._s[2470]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2471]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2472]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2473]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2472]!, self._r[2472]!, [_0]) + return formatWithArgumentRanges(self._s[2474]!, self._r[2474]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2473]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2474]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2475]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2476]! } - public var Channel_BlackList_Title: String { return self._s[2477]! } - public var UserInfo_PhoneCall: String { return self._s[2478]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2480]! } - public var State_connecting: String { return self._s[2481]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2475]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2476]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2477]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2478]! } + public var Channel_BlackList_Title: String { return self._s[2479]! } + public var UserInfo_PhoneCall: String { return self._s[2480]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2482]! } + public var State_connecting: String { return self._s[2483]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2482]!, self._r[2482]!, [_0]) + return formatWithArgumentRanges(self._s[2484]!, self._r[2484]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2483]! } - public var Passport_Identity_EditPassport: String { return self._s[2484]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2486]! } - public var Localization_EnglishLanguageName: String { return self._s[2487]! } - public var Share_AuthDescription: String { return self._s[2488]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2489]! } - public var Passport_Identity_Surname: String { return self._s[2490]! } - public var Compose_TokenListPlaceholder: String { return self._s[2491]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2492]! } - public var Settings_AboutEmpty: String { return self._s[2493]! } - public var Conversation_Unmute: String { return self._s[2494]! } + public var Notifications_GroupNotifications: String { return self._s[2485]! } + public var Passport_Identity_EditPassport: String { return self._s[2486]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2488]! } + public var Localization_EnglishLanguageName: String { return self._s[2489]! } + public var Share_AuthDescription: String { return self._s[2490]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2491]! } + public var Passport_Identity_Surname: String { return self._s[2492]! } + public var Compose_TokenListPlaceholder: String { return self._s[2493]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2494]! } + public var Settings_AboutEmpty: String { return self._s[2495]! } + public var Conversation_Unmute: String { return self._s[2496]! } + public var CreateGroup_ChannelsTooMuch: String { return self._s[2498]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2496]!, self._r[2496]!, [_1]) + return formatWithArgumentRanges(self._s[2499]!, self._r[2499]!, [_1]) } - public var Login_CodeSentCall: String { return self._s[2497]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2499]! } - public var ChatSettings_Appearance: String { return self._s[2500]! } - public var Appearance_PickAccentColor: String { return self._s[2501]! } + public var Login_CodeSentCall: String { return self._s[2500]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2502]! } + public var ChatSettings_Appearance: String { return self._s[2503]! } + public var Appearance_PickAccentColor: String { return self._s[2504]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2505]!, self._r[2505]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2503]!, self._r[2503]!, [_1]) + return formatWithArgumentRanges(self._s[2506]!, self._r[2506]!, [_1]) } - public var Notification_CallMissed: String { return self._s[2504]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2505]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2506]! } - public var ChatAdmins_AdminLabel: String { return self._s[2508]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2509]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2511]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2512]! } - public var Month_GenJune: String { return self._s[2513]! } - public var Watch_Location_Current: String { return self._s[2514]! } - public var Conversation_TitleMute: String { return self._s[2515]! } + public var Notification_CallMissed: String { return self._s[2507]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2508]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2509]! } + public var ChatAdmins_AdminLabel: String { return self._s[2511]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2512]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2514]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2515]! } + public var Month_GenJune: String { return self._s[2516]! } + public var Watch_Location_Current: String { return self._s[2517]! } + public var Conversation_TitleMute: String { return self._s[2518]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2516]!, self._r[2516]!, [_1]) + return formatWithArgumentRanges(self._s[2519]!, self._r[2519]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2517]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2520]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2518]!, self._r[2518]!, [_0]) - } - public var Call_ReportPlaceholder: String { return self._s[2519]! } - public var MaskStickerSettings_Info: String { return self._s[2520]! } - public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2521]!, self._r[2521]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2522]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2524]! } - public var Contacts_ShareTelegram: String { return self._s[2525]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2526]! } - public var Channel_ErrorAccessDenied: String { return self._s[2527]! } - public var UserInfo_ScamBotWarning: String { return self._s[2529]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2530]! } - public var Call_ConnectionErrorTitle: String { return self._s[2531]! } - public var UserInfo_NotificationsEnable: String { return self._s[2532]! } - public var ArchivedChats_IntroText1: String { return self._s[2533]! } - public var Tour_Text4: String { return self._s[2536]! } - public var WallpaperSearch_Recent: String { return self._s[2537]! } - public var GroupInfo_ScamGroupWarning: String { return self._s[2538]! } - public var Profile_MessageLifetime2s: String { return self._s[2540]! } - public var Notification_MessageLifetime2s: String { return self._s[2541]! } - public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2542]!, self._r[2542]!, [_1, _2, _3]) + public var Call_ReportPlaceholder: String { return self._s[2522]! } + public var MaskStickerSettings_Info: String { return self._s[2523]! } + public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2524]!, self._r[2524]!, [_0]) } - public var Cache_ClearCache: String { return self._s[2543]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2544]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2545]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2525]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2527]! } + public var Contacts_ShareTelegram: String { return self._s[2528]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2529]! } + public var Channel_ErrorAccessDenied: String { return self._s[2530]! } + public var UserInfo_ScamBotWarning: String { return self._s[2532]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[2533]! } + public var Call_ConnectionErrorTitle: String { return self._s[2534]! } + public var UserInfo_NotificationsEnable: String { return self._s[2535]! } + public var ArchivedChats_IntroText1: String { return self._s[2536]! } + public var Tour_Text4: String { return self._s[2539]! } + public var WallpaperSearch_Recent: String { return self._s[2540]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[2541]! } + public var Profile_MessageLifetime2s: String { return self._s[2543]! } + public var Notification_MessageLifetime2s: String { return self._s[2544]! } + public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2545]!, self._r[2545]!, [_1, _2, _3]) + } + public var Cache_ClearCache: String { return self._s[2546]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[2547]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2548]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2549]!, self._r[2549]!, [_0]) + return formatWithArgumentRanges(self._s[2552]!, self._r[2552]!, [_0]) } public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2551]!, self._r[2551]!, [_0]) + return formatWithArgumentRanges(self._s[2554]!, self._r[2554]!, [_0]) } - public var LocalGroup_Text: String { return self._s[2552]! } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2553]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2554]! } - public var ChatList_UnarchiveAction: String { return self._s[2555]! } - public var AutoNightTheme_Title: String { return self._s[2556]! } - public var InstantPage_FeedbackButton: String { return self._s[2557]! } - public var Passport_FieldAddress: String { return self._s[2558]! } - public var Month_ShortMarch: String { return self._s[2559]! } + public var LocalGroup_Text: String { return self._s[2555]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2556]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2557]! } + public var ChatList_UnarchiveAction: String { return self._s[2558]! } + public var AutoNightTheme_Title: String { return self._s[2559]! } + public var InstantPage_FeedbackButton: String { return self._s[2560]! } + public var Passport_FieldAddress: String { return self._s[2561]! } + public var Month_ShortMarch: String { return self._s[2562]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2560]!, self._r[2560]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2563]!, self._r[2563]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2561]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2562]! } - public var Passport_FloodError: String { return self._s[2563]! } - public var SecretGif_Title: String { return self._s[2564]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2565]! } - public var Passport_Language_th: String { return self._s[2567]! } - public var Passport_Address_Address: String { return self._s[2568]! } - public var Login_InvalidLastNameError: String { return self._s[2569]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2570]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2571]! } - public var SettingsSearch_FAQ: String { return self._s[2572]! } - public var ShareMenu_Send: String { return self._s[2573]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2575]! } - public var Month_GenNovember: String { return self._s[2577]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2579]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2564]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2565]! } + public var Passport_FloodError: String { return self._s[2566]! } + public var SecretGif_Title: String { return self._s[2567]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2568]! } + public var Passport_Language_th: String { return self._s[2570]! } + public var Passport_Address_Address: String { return self._s[2571]! } + public var Login_InvalidLastNameError: String { return self._s[2572]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2573]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2574]! } + public var SettingsSearch_FAQ: String { return self._s[2575]! } + public var ShareMenu_Send: String { return self._s[2576]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2578]! } + public var Month_GenNovember: String { return self._s[2580]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2582]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2580]!, self._r[2580]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2583]!, self._r[2583]!, [_1, _2]) } - public var Checkout_Email: String { return self._s[2581]! } - public var NotificationsSound_Tritone: String { return self._s[2582]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2584]! } + public var Checkout_Email: String { return self._s[2584]! } + public var NotificationsSound_Tritone: String { return self._s[2585]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2587]! } public func PUSH_PINNED_ROUND(_ _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 ChangePhoneNumberNumber_Help: String { return self._s[2588]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2591]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2589]!, self._r[2589]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2592]!, self._r[2592]!, [_1, _1, _1, _2]) } - public var ChatList_UndoArchiveTitle: String { return self._s[2590]! } - public var Notification_Exceptions_Add: String { return self._s[2591]! } - public var DialogList_You: String { return self._s[2592]! } - public var MediaPicker_Send: String { return self._s[2595]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2596]! } - public var Call_AudioRouteSpeaker: String { return self._s[2597]! } - public var Watch_UserInfo_Title: String { return self._s[2598]! } - public var Appearance_AccentColor: String { return self._s[2599]! } + public var ChatList_UndoArchiveTitle: String { return self._s[2593]! } + public var Notification_Exceptions_Add: String { return self._s[2594]! } + public var DialogList_You: String { return self._s[2595]! } + public var MediaPicker_Send: String { return self._s[2598]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2599]! } + public var Call_AudioRouteSpeaker: String { return self._s[2600]! } + public var Watch_UserInfo_Title: String { return self._s[2601]! } + public var Appearance_AccentColor: String { return self._s[2602]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2600]!, self._r[2600]!, [_0]) + return formatWithArgumentRanges(self._s[2603]!, self._r[2603]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2601]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2604]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2602]!, self._r[2602]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2605]!, self._r[2605]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2603]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2604]! } - public var Notification_CallOutgoing: String { return self._s[2605]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2606]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2607]! } - public var Call_RecordingDisabledMessage: String { return self._s[2608]! } - public var Message_Game: String { return self._s[2609]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[2610]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2611]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2612]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2613]! } - public var Date_DialogDateFormat: String { return self._s[2614]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2615]! } - public var Notifications_InAppNotifications: String { return self._s[2616]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2606]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2607]! } + public var Notification_CallOutgoing: String { return self._s[2608]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2609]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2610]! } + public var Call_RecordingDisabledMessage: String { return self._s[2611]! } + public var Message_Game: String { return self._s[2612]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[2613]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2614]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2615]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2616]! } + public var Date_DialogDateFormat: String { return self._s[2617]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2618]! } + public var Notifications_InAppNotifications: String { return self._s[2619]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2617]!, self._r[2617]!, [_0]) - } - public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_1, _2]) - } - public var NewContact_Title: String { return self._s[2619]! } - public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2620]!, self._r[2620]!, [_0]) } - public var Conversation_ViewContactDetails: String { return self._s[2621]! } + public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2621]!, self._r[2621]!, [_1, _2]) + } + public var NewContact_Title: String { return self._s[2622]! } + public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2623]!, self._r[2623]!, [_0]) + } + public var Conversation_ViewContactDetails: String { return self._s[2624]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2623]!, self._r[2623]!, [_1]) + return formatWithArgumentRanges(self._s[2626]!, self._r[2626]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2624]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2625]! } - public var PrivacySettings_Title: String { return self._s[2626]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2629]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2630]! } - public var Contacts_PhoneNumber: String { return self._s[2631]! } - public var Map_ShowPlaces: String { return self._s[2633]! } - public var ChatAdmins_Title: String { return self._s[2634]! } - public var InstantPage_Reference: String { return self._s[2636]! } - public var ReportGroupLocation_Text: String { return self._s[2637]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2627]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2628]! } + public var PrivacySettings_Title: String { return self._s[2629]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2632]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2633]! } + public var Contacts_PhoneNumber: String { return self._s[2634]! } + public var Map_ShowPlaces: String { return self._s[2636]! } + public var ChatAdmins_Title: String { return self._s[2637]! } + public var InstantPage_Reference: String { return self._s[2639]! } + public var ReportGroupLocation_Text: String { return self._s[2640]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2638]!, self._r[2638]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2641]!, self._r[2641]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[2639]! } - public var Watch_UserInfo_Block: String { return self._s[2640]! } - public var ChatSettings_Stickers: String { return self._s[2641]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2642]! } + public var Camera_FlashOff: String { return self._s[2642]! } + public var Watch_UserInfo_Block: String { return self._s[2643]! } + public var ChatSettings_Stickers: String { return self._s[2644]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2645]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2643]!, self._r[2643]!, [_0]) + return formatWithArgumentRanges(self._s[2646]!, self._r[2646]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2644]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2645]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2646]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2647]! } + public var Settings_ViewPhoto: String { return self._s[2647]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2648]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2649]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2650]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2649]!, self._r[2649]!, [_0]) - } - public var Privacy_DeleteDrafts: String { return self._s[2650]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2651]! } - public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2652]!, self._r[2652]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[2653]! } - public var DialogList_SavedMessages: String { return self._s[2654]! } - public var GroupInfo_UpgradeButton: String { return self._s[2655]! } - public var DialogList_Pin: String { return self._s[2657]! } + public var Privacy_DeleteDrafts: String { return self._s[2653]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2654]! } + public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2655]!, self._r[2655]!, [_0]) + } + public var DialogList_SavedMessagesHelp: String { return self._s[2656]! } + public var DialogList_SavedMessages: String { return self._s[2657]! } + public var GroupInfo_UpgradeButton: String { return self._s[2658]! } + public var DialogList_Pin: String { return self._s[2660]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2661]!, self._r[2661]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2659]!, self._r[2659]!, [_0]) + return formatWithArgumentRanges(self._s[2662]!, self._r[2662]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2660]! } - public var UserInfo_NotificationsDisable: String { return self._s[2661]! } - public var Paint_Outlined: String { return self._s[2662]! } - public var Activity_PlayingGame: String { return self._s[2663]! } - public var SearchImages_NoImagesFound: String { return self._s[2664]! } - public var SocksProxySetup_ProxyType: String { return self._s[2665]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2667]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[2668]! } - public var Settings_AppLanguage: String { return self._s[2669]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2670]! } - public var Common_ChoosePhoto: String { return self._s[2671]! } - public var CallFeedback_ReasonEcho: String { return self._s[2672]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2663]! } + public var UserInfo_NotificationsDisable: String { return self._s[2664]! } + public var Paint_Outlined: String { return self._s[2665]! } + public var Activity_PlayingGame: String { return self._s[2666]! } + public var SearchImages_NoImagesFound: String { return self._s[2667]! } + public var SocksProxySetup_ProxyType: String { return self._s[2668]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2670]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[2671]! } + public var Settings_AppLanguage: String { return self._s[2672]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2673]! } + public var Common_ChoosePhoto: String { return self._s[2674]! } + public var CallFeedback_ReasonEcho: String { return self._s[2675]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2673]!, self._r[2673]!, [_1]) + return formatWithArgumentRanges(self._s[2676]!, self._r[2676]!, [_1]) } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2674]! } - public var Activity_UploadingVideo: String { return self._s[2675]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2676]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2677]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2678]! } - public var Checkout_PayWithTouchId: String { return self._s[2679]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2680]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2677]! } + public var Activity_UploadingVideo: String { return self._s[2678]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2679]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2680]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2681]! } + public var Checkout_PayWithTouchId: String { return self._s[2682]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2683]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_1]) - } - public var Notifications_ExceptionsNone: String { return self._s[2683]! } - public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2684]!, self._r[2684]!, [_0]) - } - public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2685]!, self._r[2685]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2687]! } - public var Passport_Address_Region: String { return self._s[2690]! } - public var ChatList_DeleteChat: String { return self._s[2691]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2692]! } - public var PhotoEditor_TiltShift: String { return self._s[2693]! } - public var Settings_FAQ_URL: String { return self._s[2694]! } - public var Passport_Language_sl: String { return self._s[2695]! } - public var Settings_PrivacySettings: String { return self._s[2697]! } - public var SharedMedia_TitleLink: String { return self._s[2698]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2699]! } - public var Settings_SetProfilePhoto: String { return self._s[2700]! } - public var Channel_About_Help: String { return self._s[2701]! } - public var Contacts_PermissionsEnable: String { return self._s[2702]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2703]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2704]! } - public var CallFeedback_ReasonInterruption: String { return self._s[2706]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2707]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2708]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2709]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2710]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2712]! } - public var Map_OpenInYandexMaps: String { return self._s[2714]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2715]! } - public var PhotoEditor_SaturationTool: String { return self._s[2716]! } + public var Notifications_ExceptionsNone: String { return self._s[2686]! } + public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2687]!, self._r[2687]!, [_0]) + } + public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2688]!, self._r[2688]!, [_1]) + } + public var AuthSessions_IncompleteAttempts: String { return self._s[2690]! } + public var Passport_Address_Region: String { return self._s[2693]! } + public var ChatList_DeleteChat: String { return self._s[2694]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2695]! } + public var PhotoEditor_TiltShift: String { return self._s[2696]! } + public var Settings_FAQ_URL: String { return self._s[2697]! } + public var Passport_Language_sl: String { return self._s[2698]! } + public var Settings_PrivacySettings: String { return self._s[2700]! } + public var SharedMedia_TitleLink: String { return self._s[2701]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2702]! } + public var Settings_SetProfilePhoto: String { return self._s[2703]! } + public var Channel_About_Help: String { return self._s[2704]! } + public var Contacts_PermissionsEnable: String { return self._s[2705]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2706]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[2707]! } + public var CallFeedback_ReasonInterruption: String { return self._s[2709]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[2710]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2711]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2712]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[2713]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2715]! } + public var Map_OpenInYandexMaps: String { return self._s[2717]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2718]! } + public var PhotoEditor_SaturationTool: String { return self._s[2719]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2717]!, self._r[2717]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2720]!, self._r[2720]!, [_1, _2]) } - public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2718]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2719]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2720]! } - public var Appearance_TextSize: String { return self._s[2721]! } + public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2721]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2722]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2723]! } + public var Appearance_TextSize: String { return self._s[2724]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2722]!, self._r[2722]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_1, "\(_2)"]) } - public var Channel_Username_InvalidTooShort: String { return self._s[2724]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2727]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2728]!, self._r[2728]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2729]!, self._r[2729]!, [_1, _2, _3]) } - public var GroupInfo_PublicLinkAdd: String { return self._s[2727]! } - public var Passport_PassportInformation: String { return self._s[2730]! } - public var WatchRemote_AlertTitle: String { return self._s[2731]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2732]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2734]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[2730]! } + public var Passport_PassportInformation: String { return self._s[2733]! } + public var WatchRemote_AlertTitle: String { return self._s[2734]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2735]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2737]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2735]!, self._r[2735]!, [_0]) + return formatWithArgumentRanges(self._s[2738]!, self._r[2738]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _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 Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2737]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2739]! } - public var AccessDenied_CameraDisabled: String { return self._s[2740]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2740]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2742]! } + public var AccessDenied_CameraDisabled: String { return self._s[2743]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2741]!, self._r[2741]!, [_0]) + return formatWithArgumentRanges(self._s[2744]!, self._r[2744]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2744]! } + public var PhotoEditor_ContrastTool: String { return self._s[2747]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2745]!, self._r[2745]!, [_1]) + return formatWithArgumentRanges(self._s[2748]!, self._r[2748]!, [_1]) } - public var DialogList_Draft: String { return self._s[2746]! } - public var Privacy_TopPeersDelete: String { return self._s[2748]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2749]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2750]! } - public var WebSearch_RecentSectionClear: String { return self._s[2751]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2753]! } - public var Common_Done: String { return self._s[2755]! } - public var AuthSessions_EmptyText: String { return self._s[2756]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2757]! } - public var Tour_Title5: String { return self._s[2758]! } + public var DialogList_Draft: String { return self._s[2749]! } + public var Privacy_TopPeersDelete: String { return self._s[2751]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2752]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2753]! } + public var WebSearch_RecentSectionClear: String { return self._s[2754]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2756]! } + public var Common_Done: String { return self._s[2758]! } + public var AuthSessions_EmptyText: String { return self._s[2759]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2760]! } + public var Tour_Title5: String { return self._s[2761]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2759]!, self._r[2759]!, [_0]) + return formatWithArgumentRanges(self._s[2762]!, self._r[2762]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2760]! } - public var Conversation_LinkDialogSave: String { return self._s[2761]! } - public var GroupInfo_ActionRestrict: String { return self._s[2762]! } - public var Checkout_Title: String { return self._s[2763]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2765]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2767]! } - public var Notification_RenamedGroup: String { return self._s[2768]! } - public var PeopleNearby_Groups: String { return self._s[2769]! } - public var Checkout_PayWithFaceId: String { return self._s[2770]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2771]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2773]! } - public var Checkout_WebConfirmation_Title: String { return self._s[2774]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2775]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2763]! } + public var Conversation_LinkDialogSave: String { return self._s[2764]! } + public var GroupInfo_ActionRestrict: String { return self._s[2765]! } + public var Checkout_Title: String { return self._s[2766]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2768]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2770]! } + public var Notification_RenamedGroup: String { return self._s[2771]! } + public var PeopleNearby_Groups: String { return self._s[2772]! } + public var Checkout_PayWithFaceId: String { return self._s[2773]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2774]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2776]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2777]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2778]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2776]!, self._r[2776]!, [_0]) + return formatWithArgumentRanges(self._s[2779]!, self._r[2779]!, [_0]) } - public var Profile_AddToExisting: String { return self._s[2778]! } + public var Profile_AddToExisting: String { return self._s[2781]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2779]!, self._r[2779]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2781]! } - public var Permissions_PrivacyPolicy: String { return self._s[2782]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2783]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2784]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2786]! } - public var Calls_NoCallsPlaceholder: String { return self._s[2788]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2789]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2791]! } + public var Cache_Files: String { return self._s[2784]! } + public var Permissions_PrivacyPolicy: String { return self._s[2785]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2786]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2787]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2789]! } + public var Calls_NoCallsPlaceholder: String { return self._s[2791]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2792]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2794]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2795]!, self._r[2795]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2793]! } - public var Passport_FieldAddressHelp: String { return self._s[2794]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2795]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2796]! } + public var Passport_FieldAddressHelp: String { return self._s[2797]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2798]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2796]!, self._r[2796]!, [_0]) + return formatWithArgumentRanges(self._s[2799]!, self._r[2799]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[2797]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2799]! } - public var Login_UnknownError: String { return self._s[2800]! } - public var Group_UpgradeNoticeText2: String { return self._s[2802]! } - public var Watch_Compose_AddContact: String { return self._s[2803]! } - public var Web_Error: String { return self._s[2804]! } - public var Gif_Search: String { return self._s[2805]! } - public var Profile_MessageLifetime1h: String { return self._s[2806]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2807]! } - public var Channel_Username_CheckingUsername: String { return self._s[2808]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[2809]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2810]! } - public var Channel_AboutItem: String { return self._s[2811]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2813]! } - public var GroupInfo_SharedMedia: String { return self._s[2814]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[2800]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2802]! } + public var Login_UnknownError: String { return self._s[2803]! } + public var Group_UpgradeNoticeText2: String { return self._s[2805]! } + public var Watch_Compose_AddContact: String { return self._s[2806]! } + public var Web_Error: String { return self._s[2807]! } + public var Gif_Search: String { return self._s[2808]! } + public var Profile_MessageLifetime1h: String { return self._s[2809]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2810]! } + public var Channel_Username_CheckingUsername: String { return self._s[2811]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[2812]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2813]! } + public var Channel_AboutItem: String { return self._s[2814]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2816]! } + public var GroupInfo_SharedMedia: String { return self._s[2817]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_1]) + return formatWithArgumentRanges(self._s[2818]!, self._r[2818]!, [_1]) } - public var Call_PhoneCallInProgressMessage: String { return self._s[2816]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[2819]! } public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_1]) + return formatWithArgumentRanges(self._s[2820]!, self._r[2820]!, [_1]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[2818]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2819]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[2820]! } - public var CreatePoll_AddOption: String { return self._s[2821]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2822]! } - public var Group_UpgradeNoticeHeader: String { return self._s[2823]! } - public var Channel_Management_AddModerator: String { return self._s[2824]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2825]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[2826]! } - public var NotificationsSound_Hello: String { return self._s[2827]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2828]! } - public var Channel_Stickers_Placeholder: String { return self._s[2830]! } + public var ChatList_UndoArchiveRevealedText: String { return self._s[2821]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2822]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[2823]! } + public var CreatePoll_AddOption: String { return self._s[2824]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2825]! } + public var Group_UpgradeNoticeHeader: String { return self._s[2826]! } + public var Channel_Management_AddModerator: String { return self._s[2827]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2828]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[2829]! } + public var NotificationsSound_Hello: String { return self._s[2830]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2831]! } + public var Channel_Stickers_Placeholder: String { return self._s[2833]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2831]!, self._r[2831]!, [_0]) + return formatWithArgumentRanges(self._s[2834]!, self._r[2834]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2832]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[2833]! } - public var ContactInfo_BirthdayLabel: String { return self._s[2834]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2835]! } - public var AutoDownloadSettings_Channels: String { return self._s[2836]! } - public var Passport_Language_mn: String { return self._s[2837]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[2840]! } - public var Passport_Language_ja: String { return self._s[2842]! } - public var Settings_About_Title: String { return self._s[2843]! } - public var Settings_NotificationsAndSounds: String { return self._s[2844]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2845]! } - public var Settings_BlockedUsers: String { return self._s[2846]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2835]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[2836]! } + public var ContactInfo_BirthdayLabel: String { return self._s[2837]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2838]! } + public var AutoDownloadSettings_Channels: String { return self._s[2839]! } + public var Passport_Language_mn: String { return self._s[2840]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[2843]! } + public var Passport_Language_ja: String { return self._s[2845]! } + public var Settings_About_Title: String { return self._s[2846]! } + public var Settings_NotificationsAndSounds: String { return self._s[2847]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2848]! } + public var Settings_BlockedUsers: String { return self._s[2849]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2847]!, self._r[2847]!, [_0]) + return formatWithArgumentRanges(self._s[2850]!, self._r[2850]!, [_0]) } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[2848]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[2849]! } - public var Channel_Username_Title: String { return self._s[2850]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[2851]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[2852]! } + public var Channel_Username_Title: String { return self._s[2853]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2851]!, self._r[2851]!, [_0]) + return formatWithArgumentRanges(self._s[2854]!, self._r[2854]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[2853]! } - public var AppleWatch_Title: String { return self._s[2854]! } - public var Activity_RecordingVideoMessage: String { return self._s[2855]! } + public var AttachmentMenu_File: String { return self._s[2856]! } + public var AppleWatch_Title: String { return self._s[2857]! } + public var Activity_RecordingVideoMessage: String { return self._s[2858]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2856]!, self._r[2856]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2859]!, self._r[2859]!, [_1, _2]) } - public var Weekday_Saturday: String { return self._s[2857]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2858]! } - public var Profile_CreateEncryptedChatError: String { return self._s[2859]! } - public var Common_Next: String { return self._s[2861]! } - public var Channel_Stickers_YourStickers: String { return self._s[2863]! } - public var Call_AudioRouteHeadphones: String { return self._s[2864]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2866]! } - public var Watch_Contacts_NoResults: String { return self._s[2868]! } - public var PhotoEditor_TintTool: String { return self._s[2871]! } - public var LoginPassword_ResetAccount: String { return self._s[2873]! } - public var Settings_SavedMessages: String { return self._s[2874]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2875]! } - public var Bot_GenericSupportStatus: String { return self._s[2876]! } - public var StickerPack_Add: String { return self._s[2877]! } - public var Checkout_TotalAmount: String { return self._s[2878]! } - public var Your_cards_number_is_invalid: String { return self._s[2879]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2880]! } + public var Weekday_Saturday: String { return self._s[2860]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2861]! } + public var Profile_CreateEncryptedChatError: String { return self._s[2862]! } + public var Common_Next: String { return self._s[2864]! } + public var Channel_Stickers_YourStickers: String { return self._s[2866]! } + public var Call_AudioRouteHeadphones: String { return self._s[2867]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2869]! } + public var Watch_Contacts_NoResults: String { return self._s[2871]! } + public var PhotoEditor_TintTool: String { return self._s[2874]! } + public var LoginPassword_ResetAccount: String { return self._s[2876]! } + public var Settings_SavedMessages: String { return self._s[2877]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2878]! } + public var Bot_GenericSupportStatus: String { return self._s[2879]! } + public var StickerPack_Add: String { return self._s[2880]! } + public var Checkout_TotalAmount: String { return self._s[2881]! } + public var Your_cards_number_is_invalid: String { return self._s[2882]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2883]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2881]!, self._r[2881]!, [_0]) + return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2882]!, self._r[2882]!, [_1, _2]) - } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2883]! } - public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2885]!, self._r[2885]!, [_1, _2]) } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2886]! } + public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2888]!, self._r[2888]!, [_1, _2]) + } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_0]) + return formatWithArgumentRanges(self._s[2889]!, self._r[2889]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[2887]! } - public var StickerPack_Share: String { return self._s[2888]! } - public var Passport_DeleteAddress: String { return self._s[2889]! } - public var Settings_Passport: String { return self._s[2890]! } - public var SharedMedia_EmptyFilesText: String { return self._s[2891]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[2892]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2893]! } - public var Contacts_PermissionsText: String { return self._s[2894]! } - public var Group_Setup_HistoryVisible: String { return self._s[2895]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[2897]! } - public var SocksProxySetup_Title: String { return self._s[2898]! } - public var Notification_Mute1h: String { return self._s[2899]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[2890]! } + public var StickerPack_Share: String { return self._s[2891]! } + public var Passport_DeleteAddress: String { return self._s[2892]! } + public var Settings_Passport: String { return self._s[2893]! } + public var SharedMedia_EmptyFilesText: String { return self._s[2894]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[2895]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2896]! } + public var Contacts_PermissionsText: String { return self._s[2897]! } + public var Group_Setup_HistoryVisible: String { return self._s[2898]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[2900]! } + public var SocksProxySetup_Title: String { return self._s[2901]! } + public var Notification_Mute1h: String { return self._s[2902]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2900]!, self._r[2900]!, [_0]) + return formatWithArgumentRanges(self._s[2903]!, self._r[2903]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2901]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2904]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2902]!, self._r[2902]!, [_1]) + return formatWithArgumentRanges(self._s[2905]!, self._r[2905]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[2903]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2906]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2908]! } - public var DialogList_NoMessagesText: String { return self._s[2909]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[2910]! } - public var Privacy_Calls_P2PHelp: String { return self._s[2911]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2913]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[2914]! } - public var Common_TakePhotoOrVideo: String { return self._s[2915]! } - public var Call_StatusBusy: String { return self._s[2916]! } - public var Conversation_PinnedMessage: String { return self._s[2917]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2918]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2919]! } - public var Undo_ChatCleared: String { return self._s[2920]! } - public var AppleWatch_ReplyPresets: String { return self._s[2921]! } - public var Passport_DiscardMessageDescription: String { return self._s[2923]! } - public var Login_NetworkError: String { return self._s[2924]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[2906]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2909]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2911]! } + public var DialogList_NoMessagesText: String { return self._s[2912]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[2913]! } + public var Privacy_Calls_P2PHelp: String { return self._s[2914]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2916]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[2917]! } + public var Common_TakePhotoOrVideo: String { return self._s[2918]! } + public var Call_StatusBusy: String { return self._s[2919]! } + public var Conversation_PinnedMessage: String { return self._s[2920]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2921]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2922]! } + public var Undo_ChatCleared: String { return self._s[2923]! } + public var AppleWatch_ReplyPresets: String { return self._s[2924]! } + public var Passport_DiscardMessageDescription: String { return self._s[2926]! } + public var Login_NetworkError: String { return self._s[2927]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2925]!, self._r[2925]!, [_0]) + return formatWithArgumentRanges(self._s[2928]!, self._r[2928]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_0]) + return formatWithArgumentRanges(self._s[2929]!, self._r[2929]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2927]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2929]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2930]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2932]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2931]!, self._r[2931]!, [_0]) + return formatWithArgumentRanges(self._s[2934]!, self._r[2934]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[2932]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2933]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2935]! } - public var ConversationMedia_Title: String { return self._s[2936]! } - public var EncryptionKey_Title: String { return self._s[2938]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2939]! } - public var Notification_Exceptions_AddException: String { return self._s[2940]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2941]! } - public var Profile_MessageLifetime1m: String { return self._s[2942]! } + public var Call_ConnectionErrorMessage: String { return self._s[2935]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2936]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2938]! } + public var ConversationMedia_Title: String { return self._s[2939]! } + public var EncryptionKey_Title: String { return self._s[2941]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2942]! } + public var Notification_Exceptions_AddException: String { return self._s[2943]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2944]! } + public var Profile_MessageLifetime1m: String { return self._s[2945]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_1]) + return formatWithArgumentRanges(self._s[2946]!, self._r[2946]!, [_1]) } - public var Month_GenMay: String { return self._s[2944]! } + public var Month_GenMay: String { return self._s[2947]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2945]!, self._r[2945]!, [_0]) + return formatWithArgumentRanges(self._s[2948]!, self._r[2948]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[2946]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2947]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[2948]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2950]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[2951]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[2952]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2953]! } - public var Camera_TapAndHoldForVideo: String { return self._s[2954]! } - public var Channel_JoinChannel: String { return self._s[2956]! } - public var Appearance_Animations: String { return self._s[2959]! } + public var PeopleNearby_Users: String { return self._s[2949]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2950]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[2951]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2953]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[2954]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[2955]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2956]! } + public var Camera_TapAndHoldForVideo: String { return self._s[2957]! } + public var Channel_JoinChannel: String { return self._s[2959]! } + public var Appearance_Animations: String { return self._s[2962]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2960]!, self._r[2960]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2963]!, self._r[2963]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[2962]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[2964]! } - public var Passport_Address_Street: String { return self._s[2965]! } - public var Conversation_AddContact: String { return self._s[2966]! } - public var Login_PhonePlaceholder: String { return self._s[2967]! } - public var Channel_Members_InviteLink: String { return self._s[2969]! } - public var Bot_Stop: String { return self._s[2970]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2972]! } - public var Notification_PassportValueAddress: String { return self._s[2973]! } - public var Month_ShortJuly: String { return self._s[2974]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2975]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[2976]! } - public var Passport_Identity_ReverseSide: String { return self._s[2977]! } - public var Watch_Stickers_Recents: String { return self._s[2980]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2982]! } - public var Map_SendThisLocation: String { return self._s[2983]! } + public var Stickers_GroupStickers: String { return self._s[2965]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[2967]! } + public var Passport_Address_Street: String { return self._s[2968]! } + public var Conversation_AddContact: String { return self._s[2969]! } + public var Login_PhonePlaceholder: String { return self._s[2970]! } + public var Channel_Members_InviteLink: String { return self._s[2972]! } + public var Bot_Stop: String { return self._s[2973]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2975]! } + public var Notification_PassportValueAddress: String { return self._s[2976]! } + public var Month_ShortJuly: String { return self._s[2977]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2978]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[2979]! } + public var Passport_Identity_ReverseSide: String { return self._s[2980]! } + public var Watch_Stickers_Recents: String { return self._s[2983]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2985]! } + public var Map_SendThisLocation: String { return self._s[2986]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0]) - } - public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2985]!, self._r[2985]!, [_0]) - } - public var ConvertToSupergroup_Note: String { return self._s[2986]! } - public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2988]! } + public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0]) + } + public var ConvertToSupergroup_Note: String { return self._s[2989]! } + public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2990]!, self._r[2990]!, [_0]) + } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2991]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2989]!, self._r[2989]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2992]!, self._r[2992]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[2991]! } - public var Wallpaper_SearchShort: String { return self._s[2992]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2994]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2995]! } + public var Login_CallRequestState3: String { return self._s[2994]! } + public var Wallpaper_SearchShort: String { return self._s[2995]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2997]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2998]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2996]!, self._r[2996]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2999]!, self._r[2999]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[2997]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3001]! } + public var Channel_AdminLogFilter_Title: String { return self._s[3000]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3004]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_0]) + return formatWithArgumentRanges(self._s[3005]!, self._r[3005]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[3003]! } + public var Passport_CorrectErrors: String { return self._s[3006]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_0]) + return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[3005]! } - public var Channel_DiscussionGroup: String { return self._s[3006]! } + public var Map_SendMyCurrentLocation: String { return self._s[3008]! } + public var Channel_DiscussionGroup: String { return self._s[3009]! } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3010]!, self._r[3010]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[3008]! } - public var Permissions_NotificationsText_v0: String { return self._s[3009]! } - public var Appearance_AppIcon: String { return self._s[3010]! } - public var LoginPassword_FloodError: String { return self._s[3011]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3013]! } + public var SharedMedia_SearchNoResults: String { return self._s[3011]! } + public var Permissions_NotificationsText_v0: String { return self._s[3012]! } + public var Appearance_AppIcon: String { return self._s[3013]! } + public var LoginPassword_FloodError: String { return self._s[3014]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3016]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[3015]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3016]!, self._r[3016]!, [_0]) - } - public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3017]!, self._r[3017]!, [_0]) } + public var Passport_Language_bn: String { return self._s[3018]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0]) + } + public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3020]!, self._r[3020]!, [_0]) + } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3018]!, self._r[3018]!, [_0]) + return formatWithArgumentRanges(self._s[3021]!, self._r[3021]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3021]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3023]! } - public var Contacts_PermissionsAllow: String { return self._s[3024]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3025]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3026]! } - public var WallpaperPreview_Pattern: String { return self._s[3027]! } - public var Paint_Duplicate: String { return self._s[3028]! } - public var Passport_Address_Country: String { return self._s[3029]! } - public var Notification_RenamedChannel: String { return self._s[3031]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3032]! } - public var Group_MessagePhotoUpdated: String { return self._s[3033]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3034]! } - public var Conversation_ContextMenuBan: String { return self._s[3035]! } - public var TwoStepAuth_EmailSent: String { return self._s[3036]! } - public var MessagePoll_NoVotes: String { return self._s[3037]! } - public var Passport_Language_is: String { return self._s[3038]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3040]! } - public var Tour_Text5: String { return self._s[3041]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3024]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3026]! } + public var Contacts_PermissionsAllow: String { return self._s[3027]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3028]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3029]! } + public var WallpaperPreview_Pattern: String { return self._s[3030]! } + public var Paint_Duplicate: String { return self._s[3031]! } + public var Passport_Address_Country: String { return self._s[3032]! } + public var Notification_RenamedChannel: String { return self._s[3034]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3035]! } + public var Group_MessagePhotoUpdated: String { return self._s[3036]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3037]! } + public var Conversation_ContextMenuBan: String { return self._s[3038]! } + public var TwoStepAuth_EmailSent: String { return self._s[3039]! } + public var MessagePoll_NoVotes: String { return self._s[3040]! } + public var Passport_Language_is: String { return self._s[3041]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3043]! } + public var Tour_Text5: String { return self._s[3044]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3043]!, self._r[3043]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3046]!, self._r[3046]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3044]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3045]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3046]! } - public var Paint_Edit: String { return self._s[3048]! } - public var Undo_DeletedGroup: String { return self._s[3051]! } - public var LoginPassword_ForgotPassword: String { return self._s[3052]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3053]! } + public var Undo_SecretChatDeleted: String { return self._s[3047]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3048]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3049]! } + public var Paint_Edit: String { return self._s[3051]! } + public var Undo_DeletedGroup: String { return self._s[3054]! } + public var LoginPassword_ForgotPassword: String { return self._s[3055]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3056]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3054]!, self._r[3054]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3057]!, self._r[3057]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3055]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3056]! } - public var Passport_Language_uz: String { return self._s[3057]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3058]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3059]! } - public var Map_StopLiveLocation: String { return self._s[3061]! } - public var PasscodeSettings_Help: String { return self._s[3063]! } - public var NotificationsSound_Input: String { return self._s[3064]! } - public var Share_Title: String { return self._s[3067]! } - public var LogoutOptions_Title: String { return self._s[3068]! } - public var Login_TermsOfServiceAgree: String { return self._s[3069]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3070]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3071]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3072]! } - public var EnterPasscode_EnterTitle: String { return self._s[3073]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3058]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3059]! } + public var Passport_Language_uz: String { return self._s[3060]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3061]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3062]! } + public var Map_StopLiveLocation: String { return self._s[3064]! } + public var PasscodeSettings_Help: String { return self._s[3066]! } + public var NotificationsSound_Input: String { return self._s[3067]! } + public var Share_Title: String { return self._s[3070]! } + public var LogoutOptions_Title: String { return self._s[3071]! } + public var Login_TermsOfServiceAgree: String { return self._s[3072]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3073]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3074]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3075]! } + public var EnterPasscode_EnterTitle: String { return self._s[3076]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3074]!, self._r[3074]!, [_0]) + return formatWithArgumentRanges(self._s[3077]!, self._r[3077]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3075]! } - public var Conversation_AddToContacts: String { return self._s[3076]! } - public var NotificationsSound_Keys: String { return self._s[3077]! } + public var Settings_CopyPhoneNumber: String { return self._s[3078]! } + public var Conversation_AddToContacts: String { return self._s[3079]! } + public var NotificationsSound_Keys: String { return self._s[3080]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3078]!, self._r[3078]!, [_0]) + return formatWithArgumentRanges(self._s[3081]!, self._r[3081]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3079]! } - public var Message_Video: String { return self._s[3080]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3081]! } + public var Notification_MessageLifetime1w: String { return self._s[3082]! } + public var Message_Video: String { return self._s[3083]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3084]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3082]!, self._r[3082]!, [_1]) + return formatWithArgumentRanges(self._s[3085]!, self._r[3085]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3085]!, self._r[3085]!, [_0]) + return formatWithArgumentRanges(self._s[3088]!, self._r[3088]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3086]!, self._r[3086]!, [_0]) + return formatWithArgumentRanges(self._s[3089]!, self._r[3089]!, [_0]) } - public var Passport_Language_mk: String { return self._s[3087]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3088]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3090]! } - public var PrivacyPolicy_Decline: String { return self._s[3091]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3092]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3093]! } - public var Permissions_SiriAllow_v0: String { return self._s[3095]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3096]! } + public var Passport_Language_mk: String { return self._s[3090]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3091]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3093]! } + public var PrivacyPolicy_Decline: String { return self._s[3094]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3095]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3096]! } + public var Permissions_SiriAllow_v0: String { return self._s[3098]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3099]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3097]!, self._r[3097]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3100]!, self._r[3100]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3098]!, self._r[3098]!, [_0]) + return formatWithArgumentRanges(self._s[3101]!, self._r[3101]!, [_0]) } - public var Paint_Regular: String { return self._s[3099]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3100]! } - public var SocksProxySetup_ShareLink: String { return self._s[3101]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3102]! } - public var GroupInfo_InviteByLink: String { return self._s[3104]! } - public var MessageTimer_Custom: String { return self._s[3105]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3106]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3108]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3109]! } - public var Channel_Username_InvalidTaken: String { return self._s[3110]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3111]! } - public var Settings_ChatBackground: String { return self._s[3112]! } - public var Channel_Subscribers_Title: String { return self._s[3113]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3114]! } - public var Watch_ConnectionDescription: String { return self._s[3115]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3119]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3120]! } - public var EditProfile_Title: String { return self._s[3121]! } - public var NotificationsSound_Bamboo: String { return self._s[3123]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3125]! } - public var Login_SmsRequestState2: String { return self._s[3126]! } - public var Passport_Language_ar: String { return self._s[3127]! } + public var Paint_Regular: String { return self._s[3102]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3103]! } + public var SocksProxySetup_ShareLink: String { return self._s[3104]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3105]! } + public var GroupInfo_InviteByLink: String { return self._s[3107]! } + public var MessageTimer_Custom: String { return self._s[3108]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3109]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3111]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3112]! } + public var Channel_Username_InvalidTaken: String { return self._s[3113]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3114]! } + public var Settings_ChatBackground: String { return self._s[3115]! } + public var Channel_Subscribers_Title: String { return self._s[3116]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3117]! } + public var Watch_ConnectionDescription: String { return self._s[3118]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3122]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3123]! } + public var EditProfile_Title: String { return self._s[3124]! } + public var NotificationsSound_Bamboo: String { return self._s[3126]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3128]! } + public var Login_SmsRequestState2: String { return self._s[3129]! } + public var Passport_Language_ar: String { return self._s[3130]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3128]!, self._r[3128]!, [_0]) + return formatWithArgumentRanges(self._s[3131]!, self._r[3131]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3129]! } - public var Conversation_MessageDialogEdit: String { return self._s[3130]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3132]! } + public var Conversation_MessageDialogEdit: String { return self._s[3133]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3131]!, self._r[3131]!, [_1]) + return formatWithArgumentRanges(self._s[3134]!, self._r[3134]!, [_1]) } - public var Common_Close: String { return self._s[3132]! } - public var GroupInfo_PublicLink: String { return self._s[3133]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3134]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3135]! } + public var Common_Close: String { return self._s[3135]! } + public var GroupInfo_PublicLink: String { return self._s[3136]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3137]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3138]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3139]!, self._r[3139]!, [_0]) + return formatWithArgumentRanges(self._s[3142]!, self._r[3142]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3140]! } + public var UserInfo_About_Placeholder: String { return self._s[3143]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3141]!, self._r[3141]!, [_0]) + return formatWithArgumentRanges(self._s[3144]!, self._r[3144]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3142]! } - public var Channel_Info_Banned: String { return self._s[3144]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3145]! } + public var Channel_Info_Banned: String { return self._s[3147]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3145]!, self._r[3145]!, [_0]) + return formatWithArgumentRanges(self._s[3148]!, self._r[3148]!, [_0]) } - public var Appearance_Other: String { return self._s[3146]! } - public var Passport_Language_my: String { return self._s[3147]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3148]! } + public var Appearance_Other: String { return self._s[3149]! } + public var Passport_Language_my: String { return self._s[3150]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3151]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3149]!, self._r[3149]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3152]!, self._r[3152]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3150]! } - public var Preview_CopyAddress: String { return self._s[3151]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3153]! } + public var Preview_CopyAddress: String { return self._s[3154]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3152]!, self._r[3152]!, [_0]) + return formatWithArgumentRanges(self._s[3155]!, self._r[3155]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3153]! } - public var UserInfo_BotSettings: String { return self._s[3154]! } - public var LiveLocation_MenuStopAll: String { return self._s[3156]! } - public var Passport_PasswordCreate: String { return self._s[3157]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3158]! } - public var Message_PinnedLocationMessage: String { return self._s[3159]! } - public var Map_Satellite: String { return self._s[3160]! } - public var Watch_Message_Unsupported: String { return self._s[3161]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3162]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3163]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3156]! } + public var UserInfo_BotSettings: String { return self._s[3157]! } + public var LiveLocation_MenuStopAll: String { return self._s[3159]! } + public var Passport_PasswordCreate: String { return self._s[3160]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3161]! } + public var Message_PinnedLocationMessage: String { return self._s[3162]! } + public var Map_Satellite: String { return self._s[3163]! } + public var Watch_Message_Unsupported: String { return self._s[3164]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3165]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3166]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3164]!, self._r[3164]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3167]!, self._r[3167]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3165]!, self._r[3165]!, [_0]) + return formatWithArgumentRanges(self._s[3168]!, self._r[3168]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3166]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3167]! } - public var NotificationsSound_None: String { return self._s[3168]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3170]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3171]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3169]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3170]! } + public var NotificationsSound_None: String { return self._s[3171]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3173]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3174]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3172]!, self._r[3172]!, [_1]) + return formatWithArgumentRanges(self._s[3175]!, self._r[3175]!, [_1]) } - public var Cache_Indexing: String { return self._s[3173]! } - public var DialogList_RecentTitlePeople: String { return self._s[3175]! } - public var DialogList_EncryptionRejected: String { return self._s[3176]! } - public var GroupInfo_Administrators: String { return self._s[3177]! } - public var Passport_ScanPassportHelp: String { return self._s[3178]! } - public var Application_Name: String { return self._s[3179]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3180]! } - public var Appearance_ThemeCarouselDay: String { return self._s[3182]! } - public var Passport_Identity_TranslationHelp: String { return self._s[3183]! } + public var Cache_Indexing: String { return self._s[3176]! } + public var DialogList_RecentTitlePeople: String { return self._s[3178]! } + public var DialogList_EncryptionRejected: String { return self._s[3179]! } + public var GroupInfo_Administrators: String { return self._s[3180]! } + public var Passport_ScanPassportHelp: String { return self._s[3181]! } + public var Application_Name: String { return self._s[3182]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3183]! } + public var Appearance_ThemeCarouselDay: String { return self._s[3185]! } + public var Passport_Identity_TranslationHelp: String { return self._s[3186]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3184]!, self._r[3184]!, [_0]) + return formatWithArgumentRanges(self._s[3187]!, self._r[3187]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3185]!, self._r[3185]!, [_0]) + return formatWithArgumentRanges(self._s[3188]!, self._r[3188]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3186]! } - public var Privacy_ChatsTitle: String { return self._s[3187]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[3188]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3189]! } - public var Watch_Suggestion_HoldOn: String { return self._s[3190]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3191]! } - public var Group_LinkedChannel: String { return self._s[3192]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[3193]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3194]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[3195]! } - public var Channel_Setup_TypePublic: String { return self._s[3198]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3189]! } + public var Privacy_ChatsTitle: String { return self._s[3190]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[3191]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3192]! } + public var Watch_Suggestion_HoldOn: String { return self._s[3193]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3194]! } + public var Group_LinkedChannel: String { return self._s[3195]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[3196]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3197]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[3198]! } + public var Channel_Setup_TypePublic: String { return self._s[3201]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3199]!, self._r[3199]!, [_0]) + return formatWithArgumentRanges(self._s[3202]!, self._r[3202]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[3201]! } - public var Map_OpenInMaps: String { return self._s[3203]! } + public var Channel_TypeSetup_Title: String { return self._s[3204]! } + public var Map_OpenInMaps: String { return self._s[3206]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3204]!, self._r[3204]!, [_1]) + return formatWithArgumentRanges(self._s[3207]!, self._r[3207]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[3206]! } + public var NotificationsSound_Tremolo: String { return self._s[3209]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3207]!, self._r[3207]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3210]!, self._r[3210]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3208]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3209]! } - public var Passport_PasswordHelp: String { return self._s[3210]! } - public var Login_CodeExpiredError: String { return self._s[3211]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3212]! } - public var Conversation_TitleUnmute: String { return self._s[3213]! } - public var Passport_Identity_ScansHelp: String { return self._s[3214]! } - public var Passport_Language_lo: String { return self._s[3215]! } - public var Camera_FlashAuto: String { return self._s[3216]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3217]! } - public var Common_Cancel: String { return self._s[3218]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[3219]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3220]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3211]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3212]! } + public var Passport_PasswordHelp: String { return self._s[3213]! } + public var Login_CodeExpiredError: String { return self._s[3214]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3215]! } + public var Conversation_TitleUnmute: String { return self._s[3216]! } + public var Passport_Identity_ScansHelp: String { return self._s[3217]! } + public var Passport_Language_lo: String { return self._s[3218]! } + public var Camera_FlashAuto: String { return self._s[3219]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3220]! } + public var Common_Cancel: String { return self._s[3221]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[3222]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3223]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3221]!, self._r[3221]!, [_1]) + return formatWithArgumentRanges(self._s[3224]!, self._r[3224]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[3222]! } - public var ChatSettings_Title: String { return self._s[3224]! } - public var Passport_PasswordReset: String { return self._s[3225]! } - public var SocksProxySetup_TypeNone: String { return self._s[3226]! } - public var PhoneNumberHelp_Help: String { return self._s[3228]! } - public var Checkout_EnterPassword: String { return self._s[3229]! } - public var Share_AuthTitle: String { return self._s[3231]! } - public var Activity_UploadingDocument: String { return self._s[3232]! } - public var State_Connecting: String { return self._s[3233]! } - public var Profile_MessageLifetime1w: String { return self._s[3234]! } - public var Conversation_ContextMenuReport: String { return self._s[3235]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3236]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3237]! } - public var AuthSessions_Terminate: String { return self._s[3238]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3239]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3240]! } - public var PhotoEditor_Set: String { return self._s[3241]! } - public var EmptyGroupInfo_Title: String { return self._s[3242]! } - public var Login_PadPhoneHelp: String { return self._s[3243]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3245]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3247]! } - public var NotificationsSound_Complete: String { return self._s[3248]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3249]! } - public var Group_Info_AdminLog: String { return self._s[3250]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3251]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3252]! } - public var Conversation_Admin: String { return self._s[3254]! } - public var Conversation_GifTooltip: String { return self._s[3255]! } - public var Passport_NotLoggedInMessage: String { return self._s[3256]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[3225]! } + public var ChatSettings_Title: String { return self._s[3227]! } + public var Passport_PasswordReset: String { return self._s[3228]! } + public var SocksProxySetup_TypeNone: String { return self._s[3229]! } + public var PhoneNumberHelp_Help: String { return self._s[3231]! } + public var Checkout_EnterPassword: String { return self._s[3232]! } + public var Share_AuthTitle: String { return self._s[3234]! } + public var Activity_UploadingDocument: String { return self._s[3235]! } + public var State_Connecting: String { return self._s[3236]! } + public var Profile_MessageLifetime1w: String { return self._s[3237]! } + public var Conversation_ContextMenuReport: String { return self._s[3238]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3239]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3240]! } + public var AuthSessions_Terminate: String { return self._s[3241]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3242]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3243]! } + public var PhotoEditor_Set: String { return self._s[3244]! } + public var EmptyGroupInfo_Title: String { return self._s[3245]! } + public var Login_PadPhoneHelp: String { return self._s[3246]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3248]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3250]! } + public var NotificationsSound_Complete: String { return self._s[3251]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3252]! } + public var Group_Info_AdminLog: String { return self._s[3253]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3254]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3255]! } + public var Conversation_Admin: String { return self._s[3257]! } + public var Conversation_GifTooltip: String { return self._s[3258]! } + public var Passport_NotLoggedInMessage: String { return self._s[3259]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3257]!, self._r[3257]!, [_0]) + return formatWithArgumentRanges(self._s[3260]!, self._r[3260]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[3258]! } - public var SharedMedia_EmptyTitle: String { return self._s[3260]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3262]! } - public var Username_Help: String { return self._s[3263]! } - public var DialogList_LanguageTooltip: String { return self._s[3265]! } - public var Map_LoadError: String { return self._s[3266]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3267]! } - public var Channel_AdminLog_AddMembers: String { return self._s[3268]! } - public var ArchivedChats_IntroTitle2: String { return self._s[3269]! } - public var Notification_Exceptions_NewException: String { return self._s[3270]! } - public var TwoStepAuth_EmailTitle: String { return self._s[3271]! } - public var WatchRemote_AlertText: String { return self._s[3272]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[3275]! } + public var Profile_MessageLifetimeForever: String { return self._s[3261]! } + public var SharedMedia_EmptyTitle: String { return self._s[3263]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3265]! } + public var Username_Help: String { return self._s[3266]! } + public var DialogList_LanguageTooltip: String { return self._s[3268]! } + public var Map_LoadError: String { return self._s[3269]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3270]! } + public var Channel_AdminLog_AddMembers: String { return self._s[3271]! } + public var ArchivedChats_IntroTitle2: String { return self._s[3272]! } + public var Notification_Exceptions_NewException: String { return self._s[3273]! } + public var TwoStepAuth_EmailTitle: String { return self._s[3274]! } + public var WatchRemote_AlertText: String { return self._s[3275]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[3278]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3276]!, self._r[3276]!, [_0]) - } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3277]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[3278]! } - public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3279]!, self._r[3279]!, [_0]) } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3280]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[3281]! } + public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3282]!, self._r[3282]!, [_0]) + } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3280]!, self._r[3280]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3283]!, self._r[3283]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[3281]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3282]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[3284]! } - public var ChatList_UndoArchiveText1: String { return self._s[3285]! } - public var AccessDenied_VideoMicrophone: String { return self._s[3286]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3287]! } - public var Cache_ClearNone: String { return self._s[3288]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[3289]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[3290]! } + public var Group_AdminLog_EmptyText: String { return self._s[3284]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3285]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[3287]! } + public var ChatList_UndoArchiveText1: String { return self._s[3288]! } + public var AccessDenied_VideoMicrophone: String { return self._s[3289]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3290]! } + public var Cache_ClearNone: String { return self._s[3291]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[3292]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[3293]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3291]!, self._r[3291]!, [_0]) - } - public var Passport_Identity_Country: String { return self._s[3292]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3293]!, self._r[3293]!, [_0]) - } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3294]!, self._r[3294]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[3295]! } - public var AccessDenied_Settings: String { return self._s[3296]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3297]! } - public var Month_ShortMay: String { return self._s[3298]! } - public var Compose_NewGroup: String { return self._s[3299]! } - public var Group_Setup_TypePrivate: String { return self._s[3301]! } - public var Login_PadPhoneHelpTitle: String { return self._s[3303]! } - public var Appearance_ThemeDayClassic: String { return self._s[3304]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3305]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3306]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3307]! } - public var Conversation_typing: String { return self._s[3309]! } - public var Paint_Masks: String { return self._s[3310]! } - public var Username_InvalidTaken: String { return self._s[3311]! } - public var Call_StatusNoAnswer: String { return self._s[3312]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[3313]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3314]! } - public var Passport_Identity_Selfie: String { return self._s[3315]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[3316]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3317]! } - public var Conversation_ClearSecretHistory: String { return self._s[3318]! } - public var PeopleNearby_Description: String { return self._s[3320]! } - public var NetworkUsageSettings_Title: String { return self._s[3321]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3323]! } + public var Passport_Identity_Country: String { return self._s[3295]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3296]!, self._r[3296]!, [_0]) + } + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3297]!, self._r[3297]!, [_0]) + } + public var Exceptions_AddToExceptions: String { return self._s[3298]! } + public var AccessDenied_Settings: String { return self._s[3299]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3300]! } + public var Month_ShortMay: String { return self._s[3301]! } + public var Compose_NewGroup: String { return self._s[3302]! } + public var Group_Setup_TypePrivate: String { return self._s[3304]! } + public var Login_PadPhoneHelpTitle: String { return self._s[3306]! } + public var Appearance_ThemeDayClassic: String { return self._s[3307]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3308]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3309]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3310]! } + public var Conversation_typing: String { return self._s[3312]! } + public var Paint_Masks: String { return self._s[3313]! } + public var Username_InvalidTaken: String { return self._s[3314]! } + public var Call_StatusNoAnswer: String { return self._s[3315]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[3316]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3317]! } + public var Passport_Identity_Selfie: String { return self._s[3318]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[3319]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3320]! } + public var Conversation_ClearSecretHistory: String { return self._s[3321]! } + public var PeopleNearby_Description: String { return self._s[3323]! } + public var NetworkUsageSettings_Title: String { return self._s[3324]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3326]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3325]!, self._r[3325]!, [_0]) + return formatWithArgumentRanges(self._s[3328]!, self._r[3328]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3326]!, self._r[3326]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3329]!, self._r[3329]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[3328]! } - public var Map_LiveLocationTitle: String { return self._s[3329]! } - public var Login_InfoAvatarAdd: String { return self._s[3330]! } - public var Passport_Identity_FilesView: String { return self._s[3331]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3332]! } - public var Privacy_Calls_NeverAllow: String { return self._s[3333]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[3331]! } + public var Map_LiveLocationTitle: String { return self._s[3332]! } + public var Login_InfoAvatarAdd: String { return self._s[3333]! } + public var Passport_Identity_FilesView: String { return self._s[3334]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3335]! } + public var Privacy_Calls_NeverAllow: String { return self._s[3336]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3334]!, self._r[3334]!, [_0]) + return formatWithArgumentRanges(self._s[3337]!, self._r[3337]!, [_0]) } - public var ContactInfo_PhoneNumberHidden: String { return self._s[3335]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[3336]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3337]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[3338]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[3339]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3340]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3338]!, self._r[3338]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3341]!, self._r[3341]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3339]! } - public var Tour_Title2: String { return self._s[3340]! } - public var Conversation_FileOpenIn: String { return self._s[3341]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3342]! } - public var Wallpaper_Set: String { return self._s[3343]! } - public var Passport_Identity_Translations: String { return self._s[3345]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3342]! } + public var Tour_Title2: String { return self._s[3343]! } + public var Conversation_FileOpenIn: String { return self._s[3344]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3345]! } + public var Wallpaper_Set: String { return self._s[3346]! } + public var Passport_Identity_Translations: String { return self._s[3348]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3346]!, self._r[3346]!, [_0]) + return formatWithArgumentRanges(self._s[3349]!, self._r[3349]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[3347]! } + public var Channel_LeaveChannel: String { return self._s[3350]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3348]!, self._r[3348]!, [_1]) + return formatWithArgumentRanges(self._s[3351]!, self._r[3351]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3349]! } - public var PhotoEditor_HighlightsTint: String { return self._s[3350]! } - public var Passport_Email_Delete: String { return self._s[3351]! } - public var Conversation_Mute: String { return self._s[3353]! } - public var Channel_AddBotAsAdmin: String { return self._s[3354]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3356]! } - public var Channel_Management_LabelOwner: String { return self._s[3358]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3352]! } + public var PhotoEditor_HighlightsTint: String { return self._s[3353]! } + public var Passport_Email_Delete: String { return self._s[3354]! } + public var Conversation_Mute: String { return self._s[3356]! } + public var Channel_AddBotAsAdmin: String { return self._s[3357]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3359]! } + public var Channel_Management_LabelOwner: String { return self._s[3361]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3359]!, self._r[3359]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3362]!, self._r[3362]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[3360]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[3361]! } - public var Common_No: String { return self._s[3362]! } - public var Weekday_Sunday: String { return self._s[3363]! } - public var Notification_Reply: String { return self._s[3364]! } - public var Conversation_ViewMessage: String { return self._s[3365]! } + public var Calls_CallTabDescription: String { return self._s[3363]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[3364]! } + public var Common_No: String { return self._s[3365]! } + public var Weekday_Sunday: String { return self._s[3366]! } + public var Notification_Reply: String { return self._s[3367]! } + public var Conversation_ViewMessage: String { return self._s[3368]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3366]!, self._r[3366]!, [_0]) + return formatWithArgumentRanges(self._s[3369]!, self._r[3369]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3367]!, self._r[3367]!, [_0]) + return formatWithArgumentRanges(self._s[3370]!, self._r[3370]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3368]! } - public var Message_PinnedDocumentMessage: String { return self._s[3369]! } - public var DialogList_TabTitle: String { return self._s[3371]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[3372]! } - public var Passport_FieldEmail: String { return self._s[3373]! } - public var Conversation_UnpinMessageAlert: String { return self._s[3374]! } - public var Passport_Address_TypeBankStatement: String { return self._s[3375]! } - public var Passport_Identity_ExpiryDate: String { return self._s[3376]! } - public var Privacy_Calls_P2P: String { return self._s[3377]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3371]! } + public var Message_PinnedDocumentMessage: String { return self._s[3372]! } + public var DialogList_TabTitle: String { return self._s[3374]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[3375]! } + public var Passport_FieldEmail: String { return self._s[3376]! } + public var Conversation_UnpinMessageAlert: String { return self._s[3377]! } + public var Passport_Address_TypeBankStatement: String { return self._s[3378]! } + public var Passport_Identity_ExpiryDate: String { return self._s[3379]! } + public var Privacy_Calls_P2P: String { return self._s[3380]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3379]!, self._r[3379]!, [_0]) + return formatWithArgumentRanges(self._s[3382]!, self._r[3382]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[3380]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[3383]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3381]!, self._r[3381]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3384]!, self._r[3384]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[3382]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3383]! } - public var Passport_InfoText: String { return self._s[3384]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3385]! } + public var Stickers_ClearRecent: String { return self._s[3385]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3386]! } + public var Passport_InfoText: String { return self._s[3387]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3388]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3386]!, self._r[3386]!, [_0]) + return formatWithArgumentRanges(self._s[3389]!, self._r[3389]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3387]!, self._r[3387]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3390]!, self._r[3390]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3388]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[3389]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[3391]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3392]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3391]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[3392]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[3394]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3395]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3393]!, self._r[3393]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3396]!, self._r[3396]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3395]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3398]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3397]!, self._r[3397]!, [_0]) + return formatWithArgumentRanges(self._s[3400]!, self._r[3400]!, [_0]) } - public var DialogList_Unread: String { return self._s[3398]! } + public var DialogList_Unread: String { return self._s[3401]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3399]!, self._r[3399]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3402]!, self._r[3402]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[3400]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3401]! } + public var User_DeletedAccount: String { return self._s[3403]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3404]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3402]!, self._r[3402]!, [_0]) + return formatWithArgumentRanges(self._s[3405]!, self._r[3405]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[3403]! } - public var SharedMedia_CategoryMedia: String { return self._s[3404]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3405]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3406]! } - public var Watch_ChatList_Compose: String { return self._s[3407]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3408]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3409]! } - public var Watch_Microphone_Access: String { return self._s[3410]! } - public var Group_Setup_HistoryHeader: String { return self._s[3411]! } - public var Map_SetThisLocation: String { return self._s[3412]! } - public var Activity_UploadingPhoto: String { return self._s[3413]! } - public var Conversation_Edit: String { return self._s[3415]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3416]! } - public var Login_TermsOfServiceDecline: String { return self._s[3417]! } - public var Message_PinnedContactMessage: String { return self._s[3418]! } + public var UserInfo_NotificationsDefault: String { return self._s[3406]! } + public var SharedMedia_CategoryMedia: String { return self._s[3407]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3408]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3409]! } + public var Watch_ChatList_Compose: String { return self._s[3410]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3411]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3412]! } + public var Watch_Microphone_Access: String { return self._s[3413]! } + public var Group_Setup_HistoryHeader: String { return self._s[3414]! } + public var Map_SetThisLocation: String { return self._s[3415]! } + public var Activity_UploadingPhoto: String { return self._s[3416]! } + public var Conversation_Edit: String { return self._s[3418]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3419]! } + public var Login_TermsOfServiceDecline: String { return self._s[3420]! } + public var Message_PinnedContactMessage: String { return self._s[3421]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3419]!, self._r[3419]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3422]!, self._r[3422]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3420]!, self._r[3420]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3423]!, self._r[3423]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[3421]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3423]! } + public var Appearance_LargeEmoji: String { return self._s[3424]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3426]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3424]!, self._r[3424]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3427]!, self._r[3427]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3425]! } - public var Message_PinnedPhotoMessage: String { return self._s[3426]! } - public var Passport_FieldPhone: String { return self._s[3427]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3428]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[3429]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3431]! } - public var Conversation_Call: String { return self._s[3432]! } - public var Common_TakePhoto: String { return self._s[3434]! } - public var Channel_NotificationLoading: String { return self._s[3435]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3428]! } + public var Message_PinnedPhotoMessage: String { return self._s[3429]! } + public var Passport_FieldPhone: String { return self._s[3430]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3431]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[3432]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3434]! } + public var Conversation_Call: String { return self._s[3435]! } + public var Common_TakePhoto: String { return self._s[3437]! } + public var Channel_NotificationLoading: String { return self._s[3438]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3436]!, self._r[3436]!, [_0]) - } - public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_1]) - } - public var Permissions_SiriTitle_v0: String { return self._s[3438]! } - public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3439]!, self._r[3439]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3440]! } - public var Common_edit: String { return self._s[3441]! } - public var PrivacySettings_AuthSessions: String { return self._s[3442]! } - public var Month_ShortJune: String { return self._s[3443]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3444]! } - public var Call_ReportSend: String { return self._s[3445]! } - public var Watch_LastSeen_JustNow: String { return self._s[3446]! } - public var Notifications_MessageNotifications: String { return self._s[3447]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3448]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3450]! } - public var Group_Status: String { return self._s[3451]! } + public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3440]!, self._r[3440]!, [_1]) + } + public var Permissions_SiriTitle_v0: String { return self._s[3441]! } + public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3442]!, self._r[3442]!, [_0]) + } + public var Channel_MessagePhotoRemoved: String { return self._s[3443]! } + public var Common_edit: String { return self._s[3444]! } + public var PrivacySettings_AuthSessions: String { return self._s[3445]! } + public var Month_ShortJune: String { return self._s[3446]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3447]! } + public var Call_ReportSend: String { return self._s[3448]! } + public var Watch_LastSeen_JustNow: String { return self._s[3449]! } + public var Notifications_MessageNotifications: String { return self._s[3450]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3451]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3453]! } + public var Group_Status: String { return self._s[3454]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3452]!, self._r[3452]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3455]!, self._r[3455]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[3453]! } - public var ShareMenu_ShareTo: String { return self._s[3454]! } - public var Conversation_Moderate_Ban: String { return self._s[3455]! } + public var TextFormat_AddLinkTitle: String { return self._s[3456]! } + public var ShareMenu_ShareTo: String { return self._s[3457]! } + public var Conversation_Moderate_Ban: String { return self._s[3458]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3456]!, self._r[3456]!, [_0]) + return formatWithArgumentRanges(self._s[3459]!, self._r[3459]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3457]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3458]! } + public var SharedMedia_ViewInChat: String { return self._s[3460]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3461]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3459]!, self._r[3459]!, [_1]) + return formatWithArgumentRanges(self._s[3462]!, self._r[3462]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3463]!, self._r[3463]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3462]!, self._r[3462]!, [_0]) + return formatWithArgumentRanges(self._s[3465]!, self._r[3465]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[3463]! } - public var Appearance_ReduceMotion: String { return self._s[3464]! } + public var Map_OpenInHereMaps: String { return self._s[3466]! } + public var Appearance_ReduceMotion: String { return self._s[3467]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3465]!, self._r[3465]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3468]!, self._r[3468]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[3466]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3467]! } - public var PhotoEditor_Skip: String { return self._s[3468]! } - public func Map_ETAMinutes(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[3469]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3470]! } + public var PhotoEditor_Skip: String { return self._s[3471]! } + public func UserCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_SharePhoto(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _1, _2) } public func MessageTimer_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _1, _2) } public func SharedMedia_Photo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + public func MuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedGifs(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedLocations(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } - public func UserCount(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_Exceptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPolls(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, _1, _2) + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) } public func MuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { diff --git a/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift b/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift index 51e4729cf4..9555616558 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelMembersController.swift @@ -376,6 +376,8 @@ public func channelMembersController(context: AccountContext, peerId: PeerId) -> switch error { case .limitExceeded: text = presentationData.strings.Channel_ErrorAddTooMuch + case .tooMuchJoined: + text = presentationData.strings.Invite_ChannelsTooMuch case .generic: text = presentationData.strings.Login_UnknownError case .restricted: diff --git a/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift index 91caff52eb..0e36f74726 100644 --- a/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatChannelSubscriberInputPanelNode.swift @@ -126,15 +126,20 @@ final class ChatChannelSubscriberInputPanelNode: ChatInputPanelNode { strongSelf.activityIndicator.stopAnimating() } } - }).start(error: { [weak self] _ in + }).start(error: { [weak self] error in guard let strongSelf = self, let presentationInterfaceState = strongSelf.presentationInterfaceState, let peer = presentationInterfaceState.renderedPeer?.peer else { return } let text: String - if let channel = peer as? TelegramChannel, case .broadcast = channel.info { - text = presentationInterfaceState.strings.Channel_ErrorAccessDenied - } else { - text = presentationInterfaceState.strings.Group_ErrorAccessDenied + switch error { + case .tooMuchJoined: + text = presentationInterfaceState.strings.Join_ChannelsTooMuch + default: + if let channel = peer as? TelegramChannel, case .broadcast = channel.info { + text = presentationInterfaceState.strings.Channel_ErrorAccessDenied + } else { + text = presentationInterfaceState.strings.Group_ErrorAccessDenied + } } strongSelf.interfaceInteraction?.presentController(textAlertController(context: context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: presentationInterfaceState.strings.Common_OK, action: {})]), nil) })) diff --git a/submodules/TelegramUI/TelegramUI/CreateChannelController.swift b/submodules/TelegramUI/TelegramUI/CreateChannelController.swift index 9f01800eb9..3aca3a705c 100644 --- a/submodules/TelegramUI/TelegramUI/CreateChannelController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateChannelController.swift @@ -262,6 +262,8 @@ public func createChannelController(context: AccountContext) -> ViewController { switch error { case .generic, .tooMuchLocationBasedGroups: text = presentationData.strings.Login_UnknownError + case .tooMuchJoined: + text = presentationData.strings.CreateGroup_ChannelsTooMuch case .restricted: text = presentationData.strings.Common_ActionNotAllowedError default: diff --git a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift index c5ccb77daa..967f710c82 100644 --- a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift @@ -356,6 +356,8 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in return .generic case .restricted: return .restricted + case .tooMuchJoined: + return .tooMuchJoined case .tooMuchLocationBasedGroups: return .tooMuchLocationBasedGroups case let .serverProvided(error): @@ -381,6 +383,8 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in return .generic case .restricted: return .restricted + case .tooMuchJoined: + return .tooMuchJoined case .tooMuchLocationBasedGroups: return .tooMuchLocationBasedGroups case let .serverProvided(error): @@ -448,6 +452,8 @@ public func createGroupController(context: AccountContext, peerIds: [PeerId], in text = presentationData.strings.Login_UnknownError case .restricted: text = presentationData.strings.Common_ActionNotAllowedError + case .tooMuchJoined: + text = presentationData.strings.CreateGroup_ChannelsTooMuch case .tooMuchLocationBasedGroups: text = presentationData.strings.CreateGroup_ErrorLocatedGroupsTooMuch default: diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift index e800268453..fc5207af2c 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift @@ -1815,13 +1815,13 @@ public func groupInfoController(context: AccountContext, peerId originalPeerId: |> deliverOnMainQueue).start(error: { error in if peers.count == 1, case .restricted = error { switch peers[0] { - case let .peer(peerId): - let _ = (context.account.postbox.loadedPeerWithId(peerId) - |> deliverOnMainQueue).start(next: { peer in - presentControllerImpl?(textAlertController(context: context, title: nil, text: presentationData.strings.Privacy_GroupsAndChannels_InviteToGroupError(peer.compactDisplayTitle, peer.compactDisplayTitle).0, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: {})]), nil) - }) - default: - break + case let .peer(peerId): + let _ = (context.account.postbox.loadedPeerWithId(peerId) + |> deliverOnMainQueue).start(next: { peer in + presentControllerImpl?(textAlertController(context: context, title: nil, text: presentationData.strings.Privacy_GroupsAndChannels_InviteToGroupError(peer.compactDisplayTitle, peer.compactDisplayTitle).0, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: {})]), nil) + }) + default: + break } } diff --git a/submodules/TelegramUI/TelegramUI/PeerChannelMemberCategoriesContextsManager.swift b/submodules/TelegramUI/TelegramUI/PeerChannelMemberCategoriesContextsManager.swift index f258c50927..0e02c1f831 100644 --- a/submodules/TelegramUI/TelegramUI/PeerChannelMemberCategoriesContextsManager.swift +++ b/submodules/TelegramUI/TelegramUI/PeerChannelMemberCategoriesContextsManager.swift @@ -327,23 +327,6 @@ final class PeerChannelMemberCategoriesContextsManager { |> mapToSignal { _ -> Signal in return .complete() } - - /*return addChannelMembers(account: account, peerId: peerId, memberIds: memberIds) - |> deliverOnMainQueue - |> beforeNext { [weak self] result in - if let strongSelf = self { - strongSelf.impl.with { impl in - for (contextPeerId, context) in impl.contexts { - if peerId == contextPeerId { - context.reset(.recent) - } - } - } - } - } - |> mapToSignal { _ -> Signal in - return .single(Void()) - }*/ } func recentOnline(postbox: Postbox, network: Network, accountPeerId: PeerId, peerId: PeerId) -> Signal { diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping index 072e1832387de0db7d90a522d4dea3c83d77f368..31f789d1e6545366a83e15f1627d4c8be6a42fec 100644 GIT binary patch delta 20217 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 delta 19822 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 Date: Wed, 26 Jun 2019 18:10:20 +0200 Subject: [PATCH 15/16] Fixed secret chats layer support value --- .../ProcessSecretChatIncomingDecryptedOperations.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift b/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift index a03847477b..ebbc7936db 100644 --- a/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift +++ b/submodules/TelegramCore/TelegramCore/ProcessSecretChatIncomingDecryptedOperations.swift @@ -237,11 +237,11 @@ func processSecretChatIncomingDecryptedOperations(mediaBox: MediaBox, transactio } else if layerSupport >= 73 { let sequenceBasedLayerState = SecretChatSequenceBasedLayerState(layerNegotiationState: SecretChatLayerNegotiationState(activeLayer: .layer73, locallyRequestedLayer: 73, remotelyRequestedLayer: layerSupport), rekeyState: nil, baseIncomingOperationIndex: entry.tagLocalIndex, baseOutgoingOperationIndex: transaction.operationLogGetNextEntryLocalIndex(peerId: peerId, tag: OperationLogTags.SecretOutgoing), topProcessedCanonicalIncomingOperationIndex: nil) updatedState = updatedState.withUpdatedEmbeddedState(.sequenceBasedLayer(sequenceBasedLayerState)) - updatedState = addSecretChatOutgoingOperation(transaction: transaction, peerId: peerId, operation: .reportLayerSupport(layer: .layer73, actionGloballyUniqueId: arc4random64(), layerSupport: 73), state: updatedState) + updatedState = addSecretChatOutgoingOperation(transaction: transaction, peerId: peerId, operation: .reportLayerSupport(layer: .layer73, actionGloballyUniqueId: arc4random64(), layerSupport: 101), state: updatedState) } else if layerSupport >= 46 { let sequenceBasedLayerState = SecretChatSequenceBasedLayerState(layerNegotiationState: SecretChatLayerNegotiationState(activeLayer: .layer46, locallyRequestedLayer: 46, remotelyRequestedLayer: layerSupport), rekeyState: nil, baseIncomingOperationIndex: entry.tagLocalIndex, baseOutgoingOperationIndex: transaction.operationLogGetNextEntryLocalIndex(peerId: peerId, tag: OperationLogTags.SecretOutgoing), topProcessedCanonicalIncomingOperationIndex: nil) updatedState = updatedState.withUpdatedEmbeddedState(.sequenceBasedLayer(sequenceBasedLayerState)) - updatedState = addSecretChatOutgoingOperation(transaction: transaction, peerId: peerId, operation: .reportLayerSupport(layer: .layer46, actionGloballyUniqueId: arc4random64(), layerSupport: 73), state: updatedState) + updatedState = addSecretChatOutgoingOperation(transaction: transaction, peerId: peerId, operation: .reportLayerSupport(layer: .layer46, actionGloballyUniqueId: arc4random64(), layerSupport: 101), state: updatedState) } else { throw MessageParsingError.contentParsingError } From 4bc333bfdf16233441b6e5e925ede597bfcd39ef Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 26 Jun 2019 20:25:14 +0200 Subject: [PATCH 16/16] More CHANNELS_TOO_MUCH errors support Fixed gallery transition out for gifs in Instant View Don't display close button in live location panel in chats if not sharing own location --- .../ChannelOwnershipTransfer.swift | 3 ++ .../TelegramCore/TelegramCore/JoinLink.swift | 47 ++++++++++--------- .../JoinLinkPreviewController.swift | 7 +++ ...ionBroadcastNavigationAccessoryPanel.swift | 9 ++-- .../TelegramUI/TelegramController.swift | 46 +++++++++++++----- .../UniversalVideoGalleryItem.swift | 2 +- 6 files changed, 75 insertions(+), 39 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/ChannelOwnershipTransfer.swift b/submodules/TelegramCore/TelegramCore/ChannelOwnershipTransfer.swift index 26ebaf4c7a..a72975a992 100644 --- a/submodules/TelegramCore/TelegramCore/ChannelOwnershipTransfer.swift +++ b/submodules/TelegramCore/TelegramCore/ChannelOwnershipTransfer.swift @@ -21,6 +21,7 @@ public enum ChannelOwnershipTransferError { case adminsTooMuch case userPublicChannelsTooMuch case userLocatedGroupsTooMuch + case tooMuchJoined case restricted case userBlocked } @@ -64,6 +65,8 @@ public func checkOwnershipTranfserAvailability(postbox: Postbox, network: Networ return .restricted } else if error.errorDescription == "USER_BLOCKED" { return .userBlocked + } else if error.errorDescription == "CHANNELS_TOO_MUCH" { + return .tooMuchJoined } return .generic } diff --git a/submodules/TelegramCore/TelegramCore/JoinLink.swift b/submodules/TelegramCore/TelegramCore/JoinLink.swift index b204bb6da5..b82edfd858 100644 --- a/submodules/TelegramCore/TelegramCore/JoinLink.swift +++ b/submodules/TelegramCore/TelegramCore/JoinLink.swift @@ -14,6 +14,11 @@ #endif #endif +public enum JoinLinkError { + case generic + case tooMuchJoined +} + func apiUpdatesGroups(_ updates: Api.Updates) -> [Api.Chat] { switch updates { case let .updates( _, _, chats, _, _): @@ -31,31 +36,31 @@ public enum ExternalJoiningChatState { case invalidHash } -public func joinChatInteractively(with hash: String, account: Account) -> Signal { +public func joinChatInteractively(with hash: String, account: Account) -> Signal { return account.network.request(Api.functions.messages.importChatInvite(hash: hash)) - |> map(Optional.init) - |> `catch` { _ -> Signal in - return .single(nil) - } - |> mapToSignal { updates -> Signal in - if let updates = updates { - account.stateManager.addUpdates(updates) - if let peerId = apiUpdatesGroups(updates).first?.peerId { - return account.postbox.multiplePeersView([peerId]) - |> filter { view in - return view.peers[peerId] != nil - } - |> take(1) - |> map { _ in - return peerId - } - |> timeout(5.0, queue: Queue.concurrentDefaultQueue(), alternate: .single(nil)) - } - return .single(nil) + |> mapError { error -> JoinLinkError in + if error.errorDescription == "CHANNELS_TOO_MUCH" { + return .tooMuchJoined } else { - return .single(nil) + return .generic } } + |> mapToSignal { updates -> Signal in + account.stateManager.addUpdates(updates) + if let peerId = apiUpdatesGroups(updates).first?.peerId { + return account.postbox.multiplePeersView([peerId]) + |> introduceError(JoinLinkError.self) + |> filter { view in + return view.peers[peerId] != nil + } + |> take(1) + |> map { _ in + return peerId + } + |> timeout(5.0, queue: Queue.concurrentDefaultQueue(), alternate: .single(nil) |> introduceError(JoinLinkError.self)) + } + return .single(nil) + } } public func joinLinkInformation(_ hash: String, account: Account) -> Signal { diff --git a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift index 9c33b501fd..6ff6b8c655 100644 --- a/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/JoinLinkPreviewController.swift @@ -105,6 +105,13 @@ public final class JoinLinkPreviewController: ViewController { strongSelf.dismiss() } } + }, error: { [weak self] error in + if let strongSelf = self { + if case .tooMuchJoined = error { + strongSelf.present(textAlertController(context: strongSelf.context, title: nil, text: strongSelf.presentationData.strings.Join_ChannelsTooMuch, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root)) + strongSelf.dismiss() + } + } })) } } diff --git a/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift b/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift index 6a170aae68..f8d6f8f136 100644 --- a/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift +++ b/submodules/TelegramUI/TelegramUI/LocationBroadcastNavigationAccessoryPanel.swift @@ -32,7 +32,7 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { private let separatorNode: ASDisplayNode private var validLayout: (CGSize, CGFloat, CGFloat)? - private var peersAndMode: ([Peer], LocationBroadcastNavigationAccessoryPanelMode)? + private var peersAndMode: ([Peer], LocationBroadcastNavigationAccessoryPanelMode, Bool)? init(accountPeerId: PeerId, theme: PresentationTheme, strings: PresentationStrings, tapAction: @escaping () -> Void, close: @escaping () -> Void) { self.accountPeerId = accountPeerId @@ -108,7 +108,7 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { let titleString = NSAttributedString(string: self.strings.Conversation_LiveLocation, font: titleFont, textColor: self.theme.rootController.navigationBar.primaryTextColor) var subtitleString: NSAttributedString? - if let (peers, mode) = self.peersAndMode { + if let (peers, mode, canClose) = self.peersAndMode { switch mode { case .summary: let text: String @@ -119,6 +119,7 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { } subtitleString = NSAttributedString(string: text, font: subtitleFont, textColor: self.theme.rootController.navigationBar.secondaryTextColor) case .peer: + self.closeButton.isHidden = !canClose let filteredPeers = peers.filter { $0.id != self.accountPeerId } @@ -172,8 +173,8 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: size.height - UIScreenPixel), size: CGSize(width: size.width, height: UIScreenPixel))) } - func update(peers: [Peer], mode: LocationBroadcastNavigationAccessoryPanelMode) { - self.peersAndMode = (peers, mode) + func update(peers: [Peer], mode: LocationBroadcastNavigationAccessoryPanelMode, canClose: Bool) { + self.peersAndMode = (peers, mode, canClose) if let layout = validLayout { self.updateLayout(size: layout.0, leftInset: layout.1, rightInset: layout.2, transition: .immediate) } diff --git a/submodules/TelegramUI/TelegramUI/TelegramController.swift b/submodules/TelegramUI/TelegramUI/TelegramController.swift index a8b312ca8d..52f845c2a1 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramController.swift +++ b/submodules/TelegramUI/TelegramUI/TelegramController.swift @@ -184,24 +184,24 @@ public class TelegramController: ViewController, KeyShortcutResponder { peers?.append(author) } } - return (peers, nil) + return (peers, outgoingMessages) } default: self.locationBroadcastMode = .summary signal = liveLocationManager.summaryManager.broadcastingToMessages() - |> map { messages -> ([Peer]?, [MessageId: Message]?) in - if messages.isEmpty { - return (nil, nil) - } else { - var peers: [Peer] = [] - for message in messages.values.sorted(by: { $0.index < $1.index }) { - if let peer = message.peers[message.id.peerId] { - peers.append(peer) - } + |> map { messages -> ([Peer]?, [MessageId: Message]?) in + if messages.isEmpty { + return (nil, nil) + } else { + var peers: [Peer] = [] + for message in messages.values.sorted(by: { $0.index < $1.index }) { + if let peer = message.peers[message.id.peerId] { + peers.append(peer) } - return (peers, messages) } + return (peers, messages) } + } } @@ -223,7 +223,16 @@ public class TelegramController: ViewController, KeyShortcutResponder { if wasEmpty != (peers == nil) { strongSelf.requestLayout(transition: .animated(duration: 0.4, curve: .spring)) } else if let peers = peers, let locationBroadcastMode = strongSelf.locationBroadcastMode { - strongSelf.locationBroadcastAccessoryPanel?.update(peers: peers, mode: locationBroadcastMode) + var canClose = true + if case let .peer(peerId) = strongSelf.locationBroadcastPanelSource, let messages = messages { + canClose = false + for messageId in messages.keys { + if messageId.peerId == peerId { + canClose = true + } + } + } + strongSelf.locationBroadcastAccessoryPanel?.update(peers: peers, mode: locationBroadcastMode, canClose: canClose) } } } @@ -401,7 +410,18 @@ public class TelegramController: ViewController, KeyShortcutResponder { } self.locationBroadcastAccessoryPanel = locationBroadcastAccessoryPanel locationBroadcastAccessoryPanel.frame = panelFrame - locationBroadcastAccessoryPanel.update(peers: locationBroadcastPeers, mode: locationBroadcastMode) + + var canClose = true + if case let .peer(peerId) = self.locationBroadcastPanelSource, let messages = self.locationBroadcastMessages { + canClose = false + for messageId in messages.keys { + if messageId.peerId == peerId { + canClose = true + } + } + } + + locationBroadcastAccessoryPanel.update(peers: locationBroadcastPeers, mode: locationBroadcastMode, canClose: canClose) locationBroadcastAccessoryPanel.updateLayout(size: panelFrame.size, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: .immediate) if transition.isAnimated { locationBroadcastAccessoryPanel.animateIn(transition) diff --git a/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift b/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift index a116dcecb7..62820724c3 100644 --- a/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/UniversalVideoGalleryItem.swift @@ -890,7 +890,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { transformedSuperFrame = transformedSuperFrame.offsetBy(dx: videoNode.position.x - previousFrame.center.x, dy: videoNode.position.y - previousFrame.center.y) } - let initialScale = min(videoNode.layer.bounds.width / node.0.view.bounds.width, videoNode.layer.bounds.height / node.0.view.bounds.height) + let initialScale: CGFloat = 1.0 //min(videoNode.layer.bounds.width / node.0.view.bounds.width, videoNode.layer.bounds.height / node.0.view.bounds.height) let targetScale = max(transformedFrame.size.width / videoNode.layer.bounds.size.width, transformedFrame.size.height / videoNode.layer.bounds.size.height) videoNode.backgroundColor = .clear