From afb5fab47dfaa2ec9e4f4bfbe2449a5e54696371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C3=ABl=20Warnault?= Date: Wed, 22 Apr 2020 00:00:01 +0200 Subject: [PATCH] SHA 256/512 + prefs cleaning + localize --- Sources/WCConnect.m | 5 +- Sources/WCLinkConnection.m | 3 + Sources/WCPreferences.m | 53 +- Sources/WCServerBookmarkController.h | 2 +- Sources/WCServerBookmarkController.m | 70 +- Sources/WCServerInfo.h | 2 + Sources/WCServerInfo.m | 23 + Sources/WCSettings.h | 1 + Sources/WCSettings.m | 1 + WiredClient.xcodeproj/project.pbxproj | 6 +- .../xcschemes/xcschememanagement.plist | 4 +- de.lproj/Preferences.xib | 907 +--- de.lproj/PublicChatWindow.xib | 69 +- de.lproj/ServerInfo.xib | 152 +- en.lproj/Preferences.xib | 696 +-- en.lproj/PublicChatWindow.xib | 135 +- en.lproj/ServerInfo.xib | 161 +- en.lproj/UserInfo.xib | 85 +- fr.lproj/Preferences.xib | 699 +-- fr.lproj/PublicChatWindow.xib | 63 +- fr.lproj/ServerInfo.xib | 159 +- .../WiredNetworking/NSString-WINetworking.m | 2 +- .../WiredNetworking/WIP7Link.m | 23 +- .../WiredNetworking/WIP7Socket.h | 16 +- .../WiredNetworking/WIP7Spec.h | 5 +- .../WiredNetworking/WIP7Spec.m | 91 + .../libwired/libwired/base/wi-assert.c | 2 +- .../libwired/libwired/base/wi-base.c | 9 +- .../libwired/libwired/base/wi-byteorder.h | 126 +- .../libwired/libwired/crypto/wi-cipher.c | 1 - .../libwired/libwired/crypto/wi-digest.c | 325 +- .../libwired/libwired/crypto/wi-digest.h | 50 +- .../libwired/libwired/crypto/wi-rsa.c | 26 +- .../libwired/libwired/data/wi-data.c | 8 +- .../libwired/libwired/data/wi-data.h | 3 +- .../libwired/libwired/data/wi-string.c | 8 +- .../libwired/libwired/data/wi-string.h | 3 +- .../libwired/libwired/p7/wi-p7-socket.c | 3117 +++++++------ .../libwired/libwired/p7/wi-p7-socket.h | 52 +- .../libwired/libwired/p7/wi-p7-spec.c | 4059 +++++++++-------- .../libwired/libwired/system/wi-system.c | 4 +- .../libwired/libwired/thread/wi-timer.c | 2 +- 42 files changed, 4869 insertions(+), 6359 deletions(-) diff --git a/Sources/WCConnect.m b/Sources/WCConnect.m index 10f33d0a..2c43709a 100644 --- a/Sources/WCConnect.m +++ b/Sources/WCConnect.m @@ -50,14 +50,13 @@ - (id)_initConnectWithURL:(WIURL *)url bookmark:(NSDictionary *)bookmark { _url = [url retain]; // check that bookmark password was loaded from keychain - if (_url.password == nil) { + if (_url.password == nil) [_url setPassword:[[WCKeychain keychain] passwordForBookmark:bookmark]]; - } _connection = [[WCServerConnection connection] retain]; [_connection setURL:url]; [_connection setBookmark:bookmark]; - + theme = [[WCSettings settings] themeWithIdentifier:[bookmark objectForKey:WCBookmarksTheme]]; if(!theme) diff --git a/Sources/WCLinkConnection.m b/Sources/WCLinkConnection.m index 7ba6e3e8..9fa2915b 100644 --- a/Sources/WCLinkConnection.m +++ b/Sources/WCLinkConnection.m @@ -351,6 +351,9 @@ - (WIError *)linkDisconnectedError:(WIP7Link *)link { - (NSUInteger)linkCipher:(WIP7Link *)link { + if(_bookmark && [_bookmark objectForKey:WCBookmarksEncryptionCipher]) + return [[_bookmark objectForKey:WCBookmarksEncryptionCipher] integerValue]; + if([[WCSettings settings] objectForKey:WCNetworkEncryptionCipher]) return [[[WCSettings settings] objectForKey:WCNetworkEncryptionCipher] integerValue]; diff --git a/Sources/WCPreferences.m b/Sources/WCPreferences.m index 29440f5b..e555dfe2 100644 --- a/Sources/WCPreferences.m +++ b/Sources/WCPreferences.m @@ -118,34 +118,31 @@ - (void)_bookmarkDidChange:(NSDictionary *)bookmark { #pragma mark - - (void)_updateTheme:(NSMutableDictionary *)theme { - [theme setObject:WIStringFromColor([_themesChatTextColorWell color]) forKey:WCThemesChatTextColor]; - [theme setObject:WIStringFromColor([_themesChatBackgroundColorWell color]) forKey:WCThemesChatBackgroundColor]; - [theme setObject:WIStringFromColor([_themesChatEventsColorWell color]) forKey:WCThemesChatEventsColor]; - [theme setObject:WIStringFromColor([_themesChatTimestampEveryLineColorWell color]) forKey:WCThemesChatTimestampEveryLineColor]; - [theme setObject:WIStringFromColor([_themesChatURLsColorWell color]) forKey:WCThemesChatURLsColor]; - - [theme setObject:WIStringFromColor([_themesMessagesTextColorWell color]) forKey:WCThemesMessagesTextColor]; - [theme setObject:WIStringFromColor([_themesMessagesBackgroundColorWell color]) forKey:WCThemesMessagesBackgroundColor]; - [theme setObject:WIStringFromColor([_themesBoardsTextColorWell color]) forKey:WCThemesBoardsTextColor]; - [theme setObject:WIStringFromColor([_themesBoardsBackgroundColorWell color]) forKey:WCThemesBoardsBackgroundColor]; - - [theme setBool:[_themesShowSmileysButton state] forKey:WCThemesShowSmileys]; - - [theme setBool:[_themesChatTimestampEveryLineButton state] forKey:WCThemesChatTimestampEveryLine]; - - [theme setInteger:[_themesUserListIconSizeMatrix selectedTag] forKey:WCThemesUserListIconSize]; - [theme setBool:[_themesUserListAlternateRowsButton state] forKey:WCThemesUserListAlternateRows]; - - [theme setInteger:[_themesFileListIconSizeMatrix selectedTag] forKey:WCThemesFileListIconSize]; - [theme setBool:[_themesFileListAlternateRowsButton state] forKey:WCThemesFileListAlternateRows]; - - [theme setBool:[_themesTransferListShowProgressBarButton state] forKey:WCThemesTransferListShowProgressBar]; - [theme setBool:[_themesTransferListAlternateRowsButton state] forKey:WCThemesTransferListAlternateRows]; - - [theme setBool:[_themesTrackerListAlternateRowsButton state] forKey:WCThemesTrackerListAlternateRows]; - - [theme setInteger:[_themesMonitorIconSizeMatrix selectedTag] forKey:WCThemesMonitorIconSize]; - [theme setBool:[_themesMonitorAlternateRowsButton state] forKey:WCThemesMonitorAlternateRows]; +// [theme setObject:WIStringFromColor([_themesChatTextColorWell color]) forKey:WCThemesChatTextColor]; +// [theme setObject:WIStringFromColor([_themesChatBackgroundColorWell color]) forKey:WCThemesChatBackgroundColor]; +// [theme setObject:WIStringFromColor([_themesMessagesTextColorWell color]) forKey:WCThemesMessagesTextColor]; +// [theme setObject:WIStringFromColor([_themesMessagesBackgroundColorWell color]) forKey:WCThemesMessagesBackgroundColor]; +// [theme setObject:WIStringFromColor([_themesBoardsTextColorWell color]) forKey:WCThemesBoardsTextColor]; +// [theme setObject:WIStringFromColor([_themesBoardsBackgroundColorWell color]) forKey:WCThemesBoardsBackgroundColor]; + + [theme setObject:WIStringFromColor([_themesChatEventsColorWell color]) forKey:WCThemesChatEventsColor]; + [theme setObject:WIStringFromColor([_themesChatTimestampEveryLineColorWell color]) forKey:WCThemesChatTimestampEveryLineColor]; + [theme setObject:WIStringFromColor([_themesChatURLsColorWell color]) forKey:WCThemesChatURLsColor]; + [theme setBool:[_themesShowSmileysButton state] forKey:WCThemesShowSmileys]; + [theme setBool:[_themesChatTimestampEveryLineButton state] forKey:WCThemesChatTimestampEveryLine]; + [theme setInteger:[_themesUserListIconSizeMatrix selectedTag] forKey:WCThemesUserListIconSize]; + [theme setBool:[_themesUserListAlternateRowsButton state] forKey:WCThemesUserListAlternateRows]; + + [theme setInteger:[_themesFileListIconSizeMatrix selectedTag] forKey:WCThemesFileListIconSize]; + [theme setBool:[_themesFileListAlternateRowsButton state] forKey:WCThemesFileListAlternateRows]; + + [theme setBool:[_themesTransferListShowProgressBarButton state] forKey:WCThemesTransferListShowProgressBar]; + [theme setBool:[_themesTransferListAlternateRowsButton state] forKey:WCThemesTransferListAlternateRows]; + + [theme setBool:[_themesTrackerListAlternateRowsButton state] forKey:WCThemesTrackerListAlternateRows]; + + [theme setInteger:[_themesMonitorIconSizeMatrix selectedTag] forKey:WCThemesMonitorIconSize]; + [theme setBool:[_themesMonitorAlternateRowsButton state] forKey:WCThemesMonitorAlternateRows]; } - (NSInteger)_selectedThemeRow { diff --git a/Sources/WCServerBookmarkController.h b/Sources/WCServerBookmarkController.h index f94cc9be..584395b4 100644 --- a/Sources/WCServerBookmarkController.h +++ b/Sources/WCServerBookmarkController.h @@ -9,11 +9,11 @@ #import "WCBookmarkController.h" @interface WCServerBookmarkController : WCBookmarkController { - IBOutlet NSPopUpButton *_bookmarksThemePopUpButton; IBOutlet NSButton *_bookmarksAutoConnectButton; IBOutlet NSButton *_bookmarksAutoReconnectButton; IBOutlet NSTextField *_bookmarksNickTextField; IBOutlet NSTextField *_bookmarksStatusTextField; + IBOutlet NSPopUpButton *_bookmarksCipherPopUpButton; } @end diff --git a/Sources/WCServerBookmarkController.m b/Sources/WCServerBookmarkController.m index e3747785..973272a2 100644 --- a/Sources/WCServerBookmarkController.m +++ b/Sources/WCServerBookmarkController.m @@ -15,7 +15,7 @@ @interface WCServerBookmarkController (Private) - (void)_savePasswordForBookmark:(NSArray *)arguments; -- (void)_reloadThemes; +- (void)_reloadCiphers; @end @@ -41,24 +41,22 @@ - (void)_savePasswordForBookmark:(NSArray *)arguments { #pragma mark - -- (void)_reloadThemes { -// NSEnumerator *enumerator; -// NSDictionary *theme; -// NSMenuItem *item; -// NSInteger index; -// -// while((index = [_bookmarksThemePopUpButton indexOfItemWithTag:0]) != -1) -// [_bookmarksThemePopUpButton removeItemAtIndex:index]; -// -// enumerator = [[[WCSettings settings] objectForKey:WCThemes] objectEnumerator]; -// -// while((theme = [enumerator nextObject])) { -// item = [NSMenuItem itemWithTitle:[theme objectForKey:WCThemesName]]; -// [item setRepresentedObject:[theme objectForKey:WCThemesIdentifier]]; -// [item setImage:[[WCPreferences preferences] imageForTheme:theme size:NSMakeSize(16.0, 12.0)]]; -// -// [[_bookmarksThemePopUpButton menu] addItem:item]; -// } +- (void)_reloadCiphers { + NSMenuItem *item; + NSDictionary *schemes; + NSArray *schemeKeys; + + [[_bookmarksCipherPopUpButton menu] removeAllItems]; + + schemes = [WCP7Spec encryptionSchemes]; + schemeKeys = [[schemes allKeys] sortedArrayUsingSelector:@selector(compare:)]; + + for(NSNumber *key in schemeKeys) { + NSString *name = [WCP7Spec nameForEncryptionSchemeID:[key stringValue]]; + item = [NSMenuItem itemWithTitle:name tag:[key intValue]]; + + [[_bookmarksCipherPopUpButton menu] addItem:item]; + } } @@ -69,10 +67,9 @@ @implementation WCServerBookmarkController #pragma mark - - (void)load { - NSDictionary *theme; - NSInteger index; + NSNumber *encryptionCipher; - [self _reloadThemes]; + [self _reloadCiphers]; if(_bookmark) { [_bookmarksNameTextField setStringValue:[_bookmark objectForKey:WCBookmarksName]]; @@ -87,12 +84,12 @@ - (void)load { else [_bookmarksPasswordTextField setStringValue:@""]; -// theme = [_bookmark objectForKey:WCBookmarksTheme]; -// -// if(theme && (index = [_bookmarksThemePopUpButton indexOfItemWithRepresentedObject:theme]) != -1) -// [_bookmarksThemePopUpButton selectItemAtIndex:index]; -// else -// [_bookmarksThemePopUpButton selectItemAtIndex:0]; + encryptionCipher = [_bookmark objectForKey:WCBookmarksEncryptionCipher]; + + if (encryptionCipher) + [_bookmarksCipherPopUpButton selectItemWithTag:[encryptionCipher intValue]]; + else + [_bookmarksCipherPopUpButton selectItemWithTag:[[WCSettings settings] intForKey:WCNetworkEncryptionCipher]]; [_bookmarksAutoConnectButton setState:[_bookmark boolForKey:WCBookmarksAutoConnect]]; [_bookmarksAutoReconnectButton setState:[_bookmark boolForKey:WCBookmarksAutoReconnect]]; @@ -123,11 +120,6 @@ - (void)save { [_bookmark setObject:[_bookmarksAddressTextField stringValue] forKey:WCBookmarksAddress]; [_bookmark setObject:[_bookmarksLoginTextField stringValue] forKey:WCBookmarksLogin]; -// if([_bookmarksThemePopUpButton representedObjectOfSelectedItem]) -// [_bookmark setObject:[_bookmarksThemePopUpButton representedObjectOfSelectedItem] forKey:WCBookmarksTheme]; -// else -// [_bookmark removeObjectForKey:WCBookmarksTheme]; - [_bookmark setBool:[_bookmarksAutoConnectButton state] forKey:WCBookmarksAutoConnect]; [_bookmark setBool:[_bookmarksAutoReconnectButton state] forKey:WCBookmarksAutoReconnect]; [_bookmark setObject:[_bookmarksNickTextField stringValue] forKey:WCBookmarksNick]; @@ -149,6 +141,10 @@ - (void)save { passwordChanged = YES; } + if(([_bookmarksCipherPopUpButton selectedTag] != [[WCSettings settings] intForKey:WCNetworkEncryptionCipher]) || + ([_bookmark integerForKey:WCBookmarksEncryptionCipher] != [_bookmarksCipherPopUpButton selectedTag])) + [_bookmark setObject:[NSNumber numberWithInt:[_bookmarksCipherPopUpButton selectedTag]] forKey:WCBookmarksEncryptionCipher]; + if(![_oldBookmark isEqualToDictionary:_bookmark] || passwordChanged) { [[WCSettings settings] replaceObjectAtIndex:row withObject:_bookmark inArrayForKey:WCBookmarks]; @@ -167,16 +163,14 @@ - (void)save { [_bookmark setObject:[_bookmarksAddressTextField stringValue] forKey:WCBookmarksAddress]; [_bookmark setObject:[_bookmarksLoginTextField stringValue] forKey:WCBookmarksLogin]; -// if([_bookmarksThemePopUpButton representedObjectOfSelectedItem]) -// [_bookmark setObject:[_bookmarksThemePopUpButton representedObjectOfSelectedItem] forKey:WCBookmarksTheme]; -// else -// [_bookmark removeObjectForKey:WCBookmarksTheme]; - [_bookmark setBool:[_bookmarksAutoConnectButton state] forKey:WCBookmarksAutoConnect]; [_bookmark setBool:[_bookmarksAutoReconnectButton state] forKey:WCBookmarksAutoReconnect]; [_bookmark setObject:[_bookmarksNickTextField stringValue] forKey:WCBookmarksNick]; [_bookmark setObject:[_bookmarksStatusTextField stringValue] forKey:WCBookmarksStatus]; + if([[WCSettings settings] intForKey:WCNetworkEncryptionCipher] != [_bookmarksCipherPopUpButton selectedTag]) + [_bookmark setObject:[NSNumber numberWithInt:[_bookmarksCipherPopUpButton selectedTag]] forKey:WCBookmarksEncryptionCipher]; + [[WCKeychain keychain] setPassword:password forBookmark:_bookmark]; [_bookmarksPassword release]; diff --git a/Sources/WCServerInfo.h b/Sources/WCServerInfo.h index 3434031c..f2de9e8b 100644 --- a/Sources/WCServerInfo.h +++ b/Sources/WCServerInfo.h @@ -48,6 +48,8 @@ IBOutlet NSTextField *_protocolTextField; IBOutlet NSTextField *_cipherTitleTextField; IBOutlet NSTextField *_cipherTextField; + IBOutlet NSTextField *_checksumTitleTextField; + IBOutlet NSTextField *_checksumTextField; IBOutlet NSTextField *_serializationTitleTextField; IBOutlet NSTextField *_serializationTextField; IBOutlet NSTextField *_compressionTitleTextField; diff --git a/Sources/WCServerInfo.m b/Sources/WCServerInfo.m index 4b0ca04d..78723f96 100644 --- a/Sources/WCServerInfo.m +++ b/Sources/WCServerInfo.m @@ -96,6 +96,28 @@ - (void)_updateServerInfo { } else { [_cipherTextField setStringValue:NSLS(@"None", @"Encryption disabled")]; } + + wi_p7_options_t options = wi_p7_socket_options([socket P7Socket]); + + if (options & WI_P7_ENCRYPTION_RSA_AES128_SHA1 || + options & WI_P7_ENCRYPTION_RSA_AES192_SHA1 || + options & WI_P7_ENCRYPTION_RSA_AES256_SHA1 || + options & WI_P7_ENCRYPTION_RSA_BF128_SHA1 || + options & WI_P7_ENCRYPTION_RSA_3DES192_SHA1) { + [_checksumTextField setStringValue:@"SHA1"]; + } else if (options & WI_P7_ENCRYPTION_RSA_AES128_SHA256 || + options & WI_P7_ENCRYPTION_RSA_AES192_SHA256 || + options & WI_P7_ENCRYPTION_RSA_AES256_SHA256 || + options & WI_P7_ENCRYPTION_RSA_BF128_SHA256 || + options & WI_P7_ENCRYPTION_RSA_3DES192_SHA256) { + [_checksumTextField setStringValue:@"SHA256"]; + } else if (options & WI_P7_ENCRYPTION_RSA_AES128_SHA512 || + options & WI_P7_ENCRYPTION_RSA_AES192_SHA512 || + options & WI_P7_ENCRYPTION_RSA_AES256_SHA512 || + options & WI_P7_ENCRYPTION_RSA_BF128_SHA512 || + options & WI_P7_ENCRYPTION_RSA_3DES192_SHA512) { + [_checksumTextField setStringValue:@"SHA512"]; + } if([socket usesCompression]) { [_compressionTextField setStringValue:[NSSWF:NSLS(@"Yes, compression ratio %.2f", @"Compression enabled (ratio)"), @@ -108,6 +130,7 @@ - (void)_updateServerInfo { [self resizeTitleTextField:_compressionTitleTextField withTextField:_compressionTextField]; [self resizeTitleTextField:_serializationTitleTextField withTextField:_serializationTextField]; + [self resizeTitleTextField:_checksumTitleTextField withTextField:_checksumTextField]; [self resizeTitleTextField:_cipherTitleTextField withTextField:_cipherTextField]; [self resizeTitleTextField:_protocolTitleTextField withTextField:_protocolTextField]; [self resizeTitleTextField:_versionTitleTextField withTextField:_versionTextField]; diff --git a/Sources/WCSettings.h b/Sources/WCSettings.h index 1a18e956..7d2b8cd5 100644 --- a/Sources/WCSettings.h +++ b/Sources/WCSettings.h @@ -114,6 +114,7 @@ extern NSString * const WCBookmarksStatus; extern NSString * const WCBookmarksAutoConnect; extern NSString * const WCBookmarksAutoReconnect; extern NSString * const WCBookmarksTheme; +extern NSString * const WCBookmarksEncryptionCipher; extern NSString * const WCChatHistoryScrollback; extern NSString * const WCChatHistoryScrollbackModifier; diff --git a/Sources/WCSettings.m b/Sources/WCSettings.m index e33783a8..e2364719 100644 --- a/Sources/WCSettings.m +++ b/Sources/WCSettings.m @@ -132,6 +132,7 @@ NSString * const WCBookmarksAutoConnect = @"AutoJoin"; NSString * const WCBookmarksAutoReconnect = @"AutoReconnect"; NSString * const WCBookmarksTheme = @"Theme"; +NSString * const WCBookmarksEncryptionCipher = @"EncryptionCipher"; NSString * const WCChatHistoryScrollback = @"WCHistoryScrollback"; NSString * const WCChatHistoryScrollbackModifier = @"WCHistoryScrollbackModifier"; diff --git a/WiredClient.xcodeproj/project.pbxproj b/WiredClient.xcodeproj/project.pbxproj index ad385dd3..f9d4437a 100644 --- a/WiredClient.xcodeproj/project.pbxproj +++ b/WiredClient.xcodeproj/project.pbxproj @@ -2344,7 +2344,7 @@ CODE_SIGN_IDENTITY = "Developer ID Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 50; DEVELOPMENT_TEAM = 7KTXA5Y36K; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -2598,7 +2598,7 @@ CODE_SIGN_IDENTITY = "Developer ID Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 50; DEVELOPMENT_TEAM = 7KTXA5Y36K; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -2700,7 +2700,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = "Wired Client.entitlements"; CODE_SIGN_IDENTITY = "-"; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 50; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/WiredClient.xcodeproj/xcuserdata/nark.xcuserdatad/xcschemes/xcschememanagement.plist b/WiredClient.xcodeproj/xcuserdata/nark.xcuserdatad/xcschemes/xcschememanagement.plist index f332eb7b..8672c56a 100644 --- a/WiredClient.xcodeproj/xcuserdata/nark.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/WiredClient.xcodeproj/xcuserdata/nark.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,12 +12,12 @@ Localize Strings.xcscheme_^#shared#^_ orderHint - 24 + 25 Neo.xcscheme_^#shared#^_ orderHint - 25 + 24 Wired Client (Distribute Debug).xcscheme_^#shared#^_ diff --git a/de.lproj/Preferences.xib b/de.lproj/Preferences.xib index 9fc74de6..68f4f828 100755 --- a/de.lproj/Preferences.xib +++ b/de.lproj/Preferences.xib @@ -10,8 +10,6 @@ - - @@ -65,34 +63,26 @@ - - - - - - - - @@ -102,9 +92,9 @@ - + @@ -122,7 +112,7 @@ - + @@ -130,7 +120,7 @@ - + @@ -139,7 +129,7 @@ - + @@ -148,7 +138,7 @@ - + @@ -162,7 +152,7 @@ - + @@ -171,7 +161,7 @@ - + @@ -180,7 +170,7 @@ - + @@ -189,7 +179,7 @@ - + @@ -209,7 +199,7 @@ - + @@ -245,9 +235,9 @@ - + @@ -641,7 +631,7 @@ - + @@ -649,7 +639,7 @@ - + @@ -658,7 +648,7 @@ - + @@ -666,7 +656,7 @@ - + @@ -675,7 +665,7 @@ - + @@ -683,7 +673,7 @@ - + @@ -692,7 +682,7 @@ - + @@ -712,7 +702,7 @@ - + @@ -721,7 +711,7 @@ - + @@ -757,12 +747,12 @@ - + - + @@ -784,7 +774,7 @@ - + @@ -804,7 +794,7 @@ - + @@ -824,7 +814,7 @@ - + @@ -836,7 +826,7 @@ - + @@ -848,7 +838,7 @@ - + @@ -868,7 +858,7 @@ - + @@ -877,7 +867,7 @@ - + - + - + @@ -1125,35 +1118,8 @@ - - - - - + - + - + - + @@ -1215,7 +1172,7 @@ - + @@ -1225,7 +1182,7 @@ - + @@ -1274,7 +1231,7 @@ - + @@ -1294,7 +1251,7 @@ - + @@ -1310,7 +1267,7 @@ - + @@ -1419,14 +1376,14 @@ - + - + @@ -1435,7 +1392,7 @@ - + @@ -1451,7 +1408,7 @@ - + @@ -1460,7 +1417,7 @@ - + @@ -1469,7 +1426,7 @@ - + @@ -1509,7 +1466,7 @@ - + @@ -1529,7 +1486,7 @@ - + @@ -1547,689 +1504,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/de.lproj/PublicChatWindow.xib b/de.lproj/PublicChatWindow.xib index e7d9c50c..db10f297 100755 --- a/de.lproj/PublicChatWindow.xib +++ b/de.lproj/PublicChatWindow.xib @@ -1,8 +1,8 @@ - + - + @@ -29,7 +29,7 @@ - + @@ -46,11 +46,11 @@ - + - + @@ -63,7 +63,7 @@ - + @@ -102,7 +102,7 @@ - +