From e8d51183acdd2410a38dcf8f0efbf7c30cd6c581 Mon Sep 17 00:00:00 2001 From: Charles McGarvey Date: Fri, 19 Mar 2004 12:00:00 -0700 Subject: [PATCH] The Cheat 1.1.2 Bug Fixes: - Crash when trying to display more results than there are. Other Changes: - Internal improvements to the status displayer. - Internal modifications to the document system. - Quitting the target is now reported through status, not by sheets. --- AboutBoxController.h | 3 +- AboutBoxController.m | 2 - AppController.h | 3 + AppController.m | 124 +- CheatClient.h | 1 + CheatClient.m | 24 +- CheatListener.h | 1 + CheatListener.m | 14 +- CheatServer.h | 3 +- CheatServer.m | 177 +- English.lproj/InfoPlist.strings | Bin 416 -> 416 bytes English.lproj/MainMenu.nib/classes.nib | 1 + English.lproj/MainMenu.nib/keyedobjects.nib | Bin 8962 -> 8975 bytes English.lproj/MainMenu.nib/objects.nib | Bin 4557 -> 4571 bytes English.lproj/MainMenu~.nib/classes.nib | 2 + English.lproj/MainMenu~.nib/keyedobjects.nib | Bin 8767 -> 8979 bytes English.lproj/MainMenu~.nib/objects.nib | Bin 4468 -> 4563 bytes English.lproj/Record.nib/classes.nib | 4 + English.lproj/Record.nib/info.nib | 16 + English.lproj/Record.nib/keyedobjects.nib | Bin 0 -> 11548 bytes English.lproj/Record~.nib/classes.nib | 4 + English.lproj/Record~.nib/info.nib | 16 + English.lproj/Record~.nib/keyedobjects.nib | Bin 0 -> 11548 bytes English.lproj/Session.nib/classes.nib | 58 + English.lproj/Session.nib/info.nib | 39 + English.lproj/Session.nib/keyedobjects.nib | Bin 0 -> 22036 bytes English.lproj/Session.nib/objects.nib | Bin 0 -> 11764 bytes .../classes.nib | 0 .../{MyDocument.nib => Session~.nib}/info.nib | 0 .../keyedobjects.nib | Bin .../objects.nib | Bin Info-The_Cheat.plist | 18 +- NetTrafficController.h | 1 + PreferenceController.h | 1 + Read Me.rtf | 16 +- MyDocument.h => SessionController.h | 17 +- MyDocument.m => SessionController.m | 144 +- The Cheat.pbproj/chaz.pbxuser | 1744 ++++++++--------- The Cheat.pbproj/project.pbxproj | 54 +- cheat_globals.h | 2 +- cheat_globals.m | 2 +- cheat_net.h | 6 +- cheat_net.m | 2 +- icondoc.icns | Bin 0 -> 57395 bytes 44 files changed, 1281 insertions(+), 1218 deletions(-) create mode 100644 English.lproj/Record.nib/classes.nib create mode 100644 English.lproj/Record.nib/info.nib create mode 100644 English.lproj/Record.nib/keyedobjects.nib create mode 100644 English.lproj/Record~.nib/classes.nib create mode 100644 English.lproj/Record~.nib/info.nib create mode 100644 English.lproj/Record~.nib/keyedobjects.nib create mode 100644 English.lproj/Session.nib/classes.nib create mode 100644 English.lproj/Session.nib/info.nib create mode 100644 English.lproj/Session.nib/keyedobjects.nib create mode 100644 English.lproj/Session.nib/objects.nib rename English.lproj/{MyDocument.nib => Session~.nib}/classes.nib (100%) rename English.lproj/{MyDocument.nib => Session~.nib}/info.nib (100%) rename English.lproj/{MyDocument.nib => Session~.nib}/keyedobjects.nib (100%) rename English.lproj/{MyDocument.nib => Session~.nib}/objects.nib (100%) rename MyDocument.h => SessionController.h (91%) rename MyDocument.m => SessionController.m (91%) create mode 100644 icondoc.icns diff --git a/AboutBoxController.h b/AboutBoxController.h index 05f4e5d..d932f59 100644 --- a/AboutBoxController.h +++ b/AboutBoxController.h @@ -8,7 +8,8 @@ // Copyright: 2003 Chaz McGarvey. All rights reserved. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#import +#import +#import @interface AboutBoxController : NSWindowController diff --git a/AboutBoxController.m b/AboutBoxController.m index e499ef8..6211a41 100644 --- a/AboutBoxController.m +++ b/AboutBoxController.m @@ -12,8 +12,6 @@ #include "cheat_shared.h" -#import - @implementation AboutBoxController diff --git a/AppController.h b/AppController.h index db42eed..af9c654 100644 --- a/AppController.h +++ b/AppController.h @@ -9,6 +9,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #import "PreferenceControlling.h" #import "NetTrafficControlling.h" @@ -49,6 +50,8 @@ - (void)broadcastWithName:(NSString *)name; - (void)stopBroadcast; +- (IBAction)newSessionWindow:(id)sender; + - (IBAction)showAboutBoxWindow:(id)sender; - (IBAction)showPreferenceWindow:(id)sender; - (IBAction)showNetTrafficWindow:(id)sender; diff --git a/AppController.m b/AppController.m index acd33b8..af247bd 100644 --- a/AppController.m +++ b/AppController.m @@ -12,6 +12,7 @@ #include "cheat_shared.h" +#import "SessionController.h" #import "AboutBoxController.h" #import "PreferenceController.h" #import "NetTrafficController.h" @@ -21,16 +22,25 @@ #import "ServerHolder.h" -#import - @implementation AppController + +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Initialization +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ + + + (void)initialize { NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; char temp[104]; + // set up logging +//#ifndef TC_SHOW_LOGS + CMLogDisable(); +//#endif + // change the socket path to reside in the home directory of the current user strncpy( temp, [NSHomeDirectory() lossyCString], 103 ); strncat( temp, TCDefaultListenPath, 103 - strlen(TCDefaultListenPath) ); @@ -78,14 +88,50 @@ } +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [self stopListener]; + [self stopBroadcast]; + + [servers release]; + + [browser release]; + [serverList release]; + + [super dealloc]; +} + + +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark NSApplication Delegate +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ + + - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { if ( TCGlobalUpdateCheck ) { [CMUpdateCheck checkWithURL:@"http://www.brokenzipper.com/software.plist" verbose:NO]; } + + [self newSessionWindow:self]; } +- (void)applicationDidBecomeActive:(NSNotification *)aNotification +{ + /*if ( TCGlobalSessionCount == 0 ) + { + [self newSessionWindow:self]; + }*/ +} + + +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Server Starting/Stopping +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ + - (void)listenOnPort:(int)port remote:(BOOL)remote { @@ -130,6 +176,16 @@ } +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Interface Activation +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ + + +- (IBAction)newSessionWindow:(id)sender +{ + [[[SessionController alloc] init] showWindow:self]; +} + - (IBAction)showAboutBoxWindow:(id)sender { if ( !aboutBoxController ) @@ -190,25 +246,9 @@ } -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [self stopListener]; - [self stopBroadcast]; - - [servers release]; - - [browser release]; - [serverList release]; - - [super dealloc]; -} - - -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%% PreferenceControlling -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Controlling Preferences +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - (void)preferenceSetWindowsOnTop:(BOOL)windowsOnTop @@ -276,9 +316,9 @@ */ -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%% NetTrafficControlling -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Controlling NetTraffic +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - (int)netTrafficConnectionCount @@ -293,15 +333,15 @@ - (void)netTrafficKillConnection:(int)index { - NSLog( @"kill connection" ); + CMLog( @"kill connection" ); close( [[servers objectAtIndex:index] sockfd] ); } -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%% ListenerDelegate -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Controlling Listener +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - (void)listenerListeningWithSocket:(int)sock @@ -339,9 +379,9 @@ } -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%% ServerDelegate -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark Controlling Server +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - (void)server:(CheatServer *)server connectedWithSocket:(int)sock @@ -419,20 +459,20 @@ } -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%% NetService Delegate -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark NetService Delegate +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - (void)netServiceWillPublish:(NSNetService *)sender { - NSLog( @"service will publish" ); + CMLog( @"service will publish" ); [sender resolve]; } - (void)netService:(NSNetService *)sender didNotPublish:(NSDictionary *)errorDict { - NSLog( @"service did not publish" ); + CMLog( @"service did not publish" ); if ( [[errorDict objectForKey:@"NSNetServicesErrorCode"] intValue] == NSNetServicesCollisionError ) { @@ -446,14 +486,14 @@ - (void)netServiceDidStop:(NSNetService *)sender { - NSLog( @"service stopped" ); + CMLog( @"service stopped" ); [sender release]; } -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%% NSNetServiceBrowser Delegate -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#pragma mark NetServiceBrowser Delegate +/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - (void)netServiceBrowser:(NSNetServiceBrowser *)browser didFindService:(NSNetService *)aService moreComing:(BOOL)more @@ -483,7 +523,7 @@ } [serverList addObject:aService]; - NSLog( @"server added: %i", [serverList count] ); + CMLog( @"server added: %i", [serverList count] ); [[NSNotificationCenter defaultCenter] postNotificationName:@"TCServerFound" object:aService]; } @@ -497,7 +537,7 @@ if ( [[aService name] isEqualToString:[(NSNetService *)[serverList objectAtIndex:i] name]] ) { [serverList removeObjectAtIndex:i]; - NSLog( @"server deleted: %i", [serverList count] ); + CMLog( @"server deleted: %i", [serverList count] ); break; } } diff --git a/CheatClient.h b/CheatClient.h index 553e238..227fcb6 100644 --- a/CheatClient.h +++ b/CheatClient.h @@ -9,6 +9,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #include "cheat_types.h" #include "cheat_globals.h" diff --git a/CheatClient.m b/CheatClient.m index a4ebd97..dac94e2 100644 --- a/CheatClient.m +++ b/CheatClient.m @@ -10,7 +10,7 @@ #import "CheatClient.h" -#import "MyDocument.h" +#import "SessionController.h" @implementation CheatClient @@ -65,7 +65,7 @@ if ( (sockfd = socket( identifier.sa_family, SOCK_STREAM, 0 )) == -1 ) { - NSLog( @"ERROR: socket() failed" ); + CMLog( @"ERROR: socket() failed" ); [rootProxy clientError:@"Network Error" message:@"Attempt to connect to server failed."]; return; } @@ -80,7 +80,7 @@ { close( sockfd ); - NSLog( @"ERROR: connect() failed" ); + CMLog( @"ERROR: connect() failed" ); [rootProxy clientError:@"Network Error" message:@"Attempt to connect to server failed."]; return; } @@ -95,7 +95,7 @@ { close( sockfd ); - NSLog( @"ERROR: connect() failed" ); + CMLog( @"ERROR: connect() failed" ); [rootProxy clientError:@"Network Error" message:@"Attempt to connect to server failed."]; return; } @@ -115,11 +115,11 @@ if ( sockfd == -1 ) { - NSLog( @"ERROR: can't run when not connected" ); + CMLog( @"ERROR: can't run when not connected" ); return; } - NSLog( @"CLIENT start" ); + CMLog( @"CLIENT start" ); for (;;) { @@ -127,7 +127,7 @@ { if ( result != 0 && result != -1 ) { - NSLog( @"ERROR: incomplete header received" ); + CMLog( @"ERROR: incomplete header received" ); close( sockfd ); break; } @@ -137,25 +137,25 @@ if ( !VerifyChecksum( header.checksum ) ) { - NSLog( @"ERROR: checksum verification failed" ); + CMLog( @"ERROR: checksum verification failed" ); close( sockfd ); break; } - //NSLog( @"CLIENT message %i/%i/%i", header.checksum, header.function, header.size ); + //CMLog( @"CLIENT message %i/%i/%i", header.checksum, header.function, header.size ); if ( header.size != 0 ) { if ( (bytes = (char *)malloc( header.size )) == NULL ) { - NSLog( @"ERROR: failed to allocate buffer for reading a network packet" ); + CMLog( @"ERROR: failed to allocate buffer for reading a network packet" ); close( sockfd ); break; } if ( (result = ReadBuffer( sockfd, bytes, header.size )) != header.size ) { - NSLog( @"ERROR: failed to read the data of a network packet; only read %i bytes out of %i", result, header.size ); + CMLog( @"ERROR: failed to read the data of a network packet; only read %i bytes out of %i", result, header.size ); free( bytes ); close( sockfd ); break; @@ -223,7 +223,7 @@ [rootProxy clientDisconnected]; - NSLog( @"CLIENT close" ); + CMLog( @"CLIENT close" ); } diff --git a/CheatListener.h b/CheatListener.h index 78b4bed..e2a3d66 100644 --- a/CheatListener.h +++ b/CheatListener.h @@ -9,6 +9,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #import "ListenerDelegate.h" diff --git a/CheatListener.m b/CheatListener.m index 40c4eb0..1f3869e 100644 --- a/CheatListener.m +++ b/CheatListener.m @@ -68,7 +68,7 @@ if ( (sockfd = socket( family, SOCK_STREAM, 0 )) == -1 ) { - NSLog( @"ERROR: failed to start server because socket() failed" ); + CMLog( @"ERROR: failed to start server because socket() failed" ); [rootProxy listenerError:@"Network Error" message:@"Server couldn't start. Local can't be cheated."]; return; } @@ -83,14 +83,14 @@ if ( setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int) ) == -1 ) { - NSLog( @"ERROR: failed to start server because setsockopt() failed" ); + CMLog( @"ERROR: failed to start server because setsockopt() failed" ); [rootProxy listenerError:@"Network Error" message:@"Server couldn't start. Local can't be cheated."]; return; } if ( bind( sockfd, (struct sockaddr *)(&addr), sizeof(struct sockaddr) ) == -1 ) { - NSLog( @"ERROR: failed to start server because bind() failed" ); + CMLog( @"ERROR: failed to start server because bind() failed" ); [rootProxy listenerError:@"Network Error" message:@"The cheat server could not start, probably because the port is already in use. Local can not be cheated."]; return; } @@ -106,7 +106,7 @@ if ( bind( sockfd, (struct sockaddr *)(&addr), sizeof(addr) ) == -1 ) { - NSLog( @"ERROR: failed to start server because bind() failed" ); + CMLog( @"ERROR: failed to start server because bind() failed" ); [rootProxy listenerError:@"Network Error" message:@"The cheat server could not start, probably because the path is already in use. Local can not be cheated."]; return; } @@ -114,7 +114,7 @@ if ( listen( sockfd, 50 ) == -1 ) { - NSLog( @"ERROR: failed to start server because listen() failed" ); + CMLog( @"ERROR: failed to start server because listen() failed" ); [rootProxy listenerError:@"Network Error" message:@"Server couldn't start. Local can't be cheated."]; return; } @@ -128,7 +128,7 @@ { int result; - NSLog( @"LISTENER start" ); + CMLog( @"LISTENER start" ); if ( listenRemote ) { @@ -165,7 +165,7 @@ } } - NSLog( @"LISTENER close" ); + CMLog( @"LISTENER close" ); [rootProxy listenerDisconnected]; } diff --git a/CheatServer.h b/CheatServer.h index ad0c12a..92e602c 100644 --- a/CheatServer.h +++ b/CheatServer.h @@ -9,6 +9,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #import "ServerDelegate.h" @@ -41,7 +42,7 @@ NSMutableArray *searchResults; NSMutableArray *searchResultsUndone; - int maxSearchResultsAmount; + int searchResultsAmountDisplayed; } + (NSConnection *)serverWithDelegate:(id)delegate socket:(int)sock; diff --git a/CheatServer.m b/CheatServer.m index dd1c868..04cbdd9 100644 --- a/CheatServer.m +++ b/CheatServer.m @@ -93,7 +93,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( getpeername( sockfd, &identifier, &addrLen ) == -1 ) { - NSLog( @"ERROR: getpeername() failed" ); + CMLog( @"ERROR: getpeername() failed" ); } if ( identifier.sa_family == AF_INET ) @@ -104,12 +104,12 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( getpeername( sockfd, (struct sockaddr *)(&addr), &addrLen ) == -1 ) { - NSLog( @"ERROR: getpeername() failed" ); + CMLog( @"ERROR: getpeername() failed" ); } if ( (addressCString = inet_ntoa( addr.sin_addr )) == NULL ) { - NSLog( @"ERROR: inet_ntoa() failed" ); + CMLog( @"ERROR: inet_ntoa() failed" ); } address = [NSString stringWithCString:addressCString]; @@ -122,10 +122,10 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( getpeername( sockfd, (struct sockaddr *)(&addr), &addrLen ) == -1 ) { - NSLog( @"ERROR: getpeername() failed" ); + CMLog( @"ERROR: getpeername() failed" ); } - NSLog( @"client connection: %s", addr.sun_path ); + CMLog( @"client connection: %s", addr.sun_path ); address = [NSString stringWithString:@"127.0.0.1"]; } @@ -156,7 +156,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); numfds = sockfd + 1; - NSLog( @"SERVER start" ); + CMLog( @"SERVER start" ); for (;;) { @@ -173,26 +173,26 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( !VerifyChecksum( header.checksum ) ) { - NSLog( @"checksum failed" ); + CMLog( @"checksum failed" ); } if ( header.size != 0 ) { if ( (data = (char *)malloc( header.size )) == NULL ) { - NSLog( @"failed to allocate buffer for reading a network packet" ); + CMLog( @"failed to allocate buffer for reading a network packet" ); break; } if ( (result = ReadBuffer( sockfd, data, header.size )) != header.size ) { - NSLog( @"failed to read the data of a network packet" ); + CMLog( @"failed to read the data of a network packet" ); free( data ); break; } } - //NSLog( @"SERVER message %i/%i/%i", header.checksum, header.function, header.size ); + //CMLog( @"SERVER message %i/%i/%i", header.checksum, header.function, header.size ); switch ( header.function ) { @@ -239,7 +239,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); close( sockfd ); - NSLog( @"SERVER close" ); + CMLog( @"SERVER close" ); [rootProxy serverDisconnected:self]; } @@ -284,7 +284,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_INVALID_ADDRESS ) { - NSLog( @"vm_region returned error: %i", result ); + CMLog( @"vm_region returned error: %i", result ); } break; } @@ -296,7 +296,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = vm_read_overwrite( processTask, address, size, (vm_address_t)data, &dataLength )) != KERN_SUCCESS && result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); free( data ); break; } @@ -307,7 +307,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = realloc( results, TCAddressSize*resultsAmount + dataLength )) == NULL ) { - NSLog( @"ERROR: could not expand buffer" ); + CMLog( @"ERROR: could not expand buffer" ); exit(0); } @@ -333,7 +333,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_8_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)firstSearchIntegerChar:(int8_t)value @@ -358,7 +358,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_INVALID_ADDRESS ) { - NSLog( @"vm_region returned error: %i", result ); + CMLog( @"vm_region returned error: %i", result ); } break; } @@ -370,7 +370,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = vm_read_overwrite( processTask, address, size, (vm_address_t)data, &dataLength )) != KERN_SUCCESS && result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); free( data ); break; } @@ -381,7 +381,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)realloc( results, TCAddressSize*resultsAmount + TCAddressSize*dataLength )) == NULL ) { - NSLog( @"ERROR: could not expand buffer" ); + CMLog( @"ERROR: could not expand buffer" ); exit(0); } @@ -403,7 +403,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_8_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)firstSearchIntegerShort:(int16_t)value @@ -428,7 +428,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_INVALID_ADDRESS ) { - NSLog( @"vm_region returned error: %i", result ); + CMLog( @"vm_region returned error: %i", result ); } break; } @@ -440,7 +440,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = vm_read_overwrite( processTask, address, size, (vm_address_t)data, &dataLength )) != KERN_SUCCESS && result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); free( data ); break; } @@ -451,7 +451,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)realloc( results, TCAddressSize*resultsAmount + 2*dataLength )) == NULL ) { - NSLog( @"ERROR: could not expand buffer" ); + CMLog( @"ERROR: could not expand buffer" ); exit(0); } @@ -473,7 +473,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_16_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)firstSearchIntegerLong:(int32_t)value @@ -498,7 +498,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = malloc_get_all_zones( processTask, NULL, &zones, &zone_count )) != KERN_SUCCESS ) { - NSLog( @"malloc_get_all_zones error: %i", result ); + CMLog( @"malloc_get_all_zones error: %i", result ); } else { @@ -508,7 +508,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); for ( i = 0; i < 10; i++ ) { - NSLog( @"malloc_get_all_zones[%i] = %X", i, (vm_address_t)zones[i] ); + CMLog( @"malloc_get_all_zones[%i] = %X", i, (vm_address_t)zones[i] ); } }*/ @@ -518,7 +518,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_INVALID_ADDRESS ) { - NSLog( @"vm_region returned error: %i", result ); + CMLog( @"vm_region returned error: %i", result ); } break; } @@ -528,11 +528,11 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); data = (int32_t *)malloc( size ); dataLength = size; - //NSLog( @"address: %.8X size: %i", address, size ); + //CMLog( @"address: %.8X size: %i", address, size ); if ( (result = vm_read_overwrite( processTask, address, size, (vm_address_t)data, &dataLength )) != KERN_SUCCESS && result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); free( data ); break; } @@ -543,7 +543,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)realloc( results, TCAddressSize*resultsAmount + dataLength )) == NULL ) { - NSLog( @"ERROR: could not expand buffer" ); + CMLog( @"ERROR: could not expand buffer" ); exit(0); } @@ -565,7 +565,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_32_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)firstSearchDecimalFloat:(float)value @@ -590,7 +590,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_INVALID_ADDRESS ) { - NSLog( @"vm_region returned error: %i", result ); + CMLog( @"vm_region returned error: %i", result ); } break; } @@ -602,7 +602,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = vm_read_overwrite( processTask, address, size, (vm_address_t)data, &dataLength )) != KERN_SUCCESS && result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); free( data ); break; } @@ -613,7 +613,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = realloc( results, TCAddressSize*resultsAmount + dataLength )) == NULL ) { - NSLog( @"ERROR: could not expand buffer" ); + CMLog( @"ERROR: could not expand buffer" ); exit(0); } @@ -635,7 +635,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_DECIMAL size:SIZE_32_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)firstSearchDecimalDouble:(double)value @@ -654,7 +654,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); TCaddress *results = NULL; int resultsAmount = 0; - NSLog( @"float search" ); + CMLog( @"float search" ); for (;;) { @@ -662,7 +662,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_INVALID_ADDRESS ) { - NSLog( @"vm_region returned error: %i", result ); + CMLog( @"vm_region returned error: %i", result ); } break; } @@ -674,7 +674,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = vm_read_overwrite( processTask, address, size, (vm_address_t)data, &dataLength )) != KERN_SUCCESS && result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); free( data ); break; } @@ -685,7 +685,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = realloc( results, TCAddressSize*resultsAmount + dataLength )) == NULL ) { - NSLog( @"ERROR: could not expand buffer" ); + CMLog( @"ERROR: could not expand buffer" ); exit(0); } @@ -707,7 +707,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_DECIMAL size:SIZE_64_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } @@ -733,7 +733,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (data = (char *)malloc( vsize )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; return; @@ -741,7 +741,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)malloc( TCAddressSize*lastResultsAmount )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; free( data ); @@ -765,7 +765,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); break; } } @@ -776,7 +776,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); free( data ); - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)searchIntegerChar:(int8_t)value @@ -801,7 +801,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)malloc( TCAddressSize*lastResultsAmount )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; return; @@ -824,7 +824,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); break; } } @@ -833,7 +833,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_8_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)searchIntegerShort:(int16_t)value @@ -858,7 +858,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)malloc( TCAddressSize*lastResultsAmount )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; return; @@ -881,7 +881,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); break; } } @@ -890,7 +890,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_16_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)searchIntegerLong:(int32_t)value @@ -915,7 +915,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)malloc( TCAddressSize*lastResultsAmount )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; return; @@ -938,7 +938,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); break; } } @@ -947,7 +947,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_INTEGER size:SIZE_32_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)searchDecimalFloat:(float)value @@ -972,7 +972,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)malloc( TCAddressSize*lastResultsAmount )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; return; @@ -995,7 +995,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); break; } } @@ -1004,7 +1004,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_DECIMAL size:SIZE_32_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } - (void)searchDecimalDouble:(double)value @@ -1029,7 +1029,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (results = (TCaddress *)malloc( TCAddressSize*lastResultsAmount )) == NULL ) { - NSLog( @"ERROR: could not create buffer" ); + CMLog( @"ERROR: could not create buffer" ); [self sendError:@"The server cancelled the search because it ran out of memory." fatal:NO]; return; @@ -1052,7 +1052,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); { if ( result != KERN_PROTECTION_FAILURE ) { - NSLog( @"vm_read_overwrite returned error: %i", result ); + CMLog( @"vm_read_overwrite returned error: %i", result ); break; } } @@ -1061,7 +1061,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); realloc( results, TCAddressSize*resultsAmount ); [searchResults addObject:[SearchResults resultsWithType:TYPE_DECIMAL size:SIZE_64_BIT data:results amount:resultsAmount]]; - NSLog( @"found %i of %i", resultsAmount, value ); + CMLog( @"found %i of %i", resultsAmount, value ); } @@ -1218,7 +1218,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (buffer = (char *)malloc( length ))==NULL ) { - NSLog( @"sendProcessList failed" ); + CMLog( @"sendProcessList failed" ); return; } @@ -1240,7 +1240,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendProcessList failed" ); + CMLog( @"sendProcessList failed" ); } free( buffer ); @@ -1258,7 +1258,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendSearchFinished failed" ); + CMLog( @"sendSearchFinished failed" ); } } @@ -1267,19 +1267,21 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); PacketHeader header; int length; int lengthAfter; + int displayAmount = ( searchResultsAmountDisplayed > amount )? amount : searchResultsAmountDisplayed; + int resultsLength = TCAddressSize * displayAmount; char *buffer, *ptr; header.checksum = RandomChecksum(); header.function = 7; - header.size = sizeof(amount) + sizeof(maxSearchResultsAmount) + TCAddressSize*maxSearchResultsAmount; - // AMOUNT MAX AMOUNT DATA + header.size = sizeof(amount) + sizeof(displayAmount) + resultsLength; + // AMOUNT DISPLAY AMOUNT DATA lengthAfter = length = header.size + sizeof(header); if ( (buffer = (char *)malloc( length )) == NULL ) { - NSLog( @"sendVariableList:amount: failed" ); + CMLog( @"sendVariableList:amount: failed" ); return; } @@ -1287,15 +1289,17 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); COPY_TO_BUFFER( ptr, &header, sizeof(header) ); COPY_TO_BUFFER( ptr, &amount, sizeof(amount) ); - COPY_TO_BUFFER( ptr, &maxSearchResultsAmount, sizeof(maxSearchResultsAmount) ); - COPY_TO_BUFFER( ptr, data, TCAddressSize*maxSearchResultsAmount ); + COPY_TO_BUFFER( ptr, &displayAmount, sizeof(displayAmount) ); + COPY_TO_BUFFER( ptr, data, resultsLength ); if ( SendBuffer( sockfd, buffer, &length ) == -1 || lengthAfter != length ) { - NSLog( @"sendVariableList:amount: failed" ); + CMLog( @"sendVariableList:amount: failed" ); } free( buffer ); + + CMLog( @"SERVER sending %i out of %i results", displayAmount, amount ); } - (void)sendChangeFinished @@ -1309,7 +1313,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendChangeFinished failed" ); + CMLog( @"sendChangeFinished failed" ); } } @@ -1332,7 +1336,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (buffer = (char *)malloc( length )) == NULL ) { - NSLog( @"sendError:fatal: failed" ); + CMLog( @"sendError:fatal: failed" ); return; } @@ -1344,7 +1348,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, buffer, &length ) == -1 || lengthAfter != length ) { - NSLog( @"sendError:fatal: failed" ); + CMLog( @"sendError:fatal: failed" ); } free( buffer ); @@ -1366,7 +1370,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendUndoFinished failed" ); + CMLog( @"sendUndoFinished failed" ); } } @@ -1381,7 +1385,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendRedoFinished failed" ); + CMLog( @"sendRedoFinished failed" ); } } @@ -1404,7 +1408,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (buffer = (char *)malloc( length )) == NULL ) { - NSLog( @"sendSetTargetPID: failed" ); + CMLog( @"sendSetTargetPID: failed" ); } ptr = buffer; @@ -1415,7 +1419,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendUndoRedoStatus: failed" ); + CMLog( @"sendUndoRedoStatus: failed" ); } free( buffer ); @@ -1445,7 +1449,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (buffer = (char *)malloc( length ))==NULL ) { - NSLog( @"sendAppLaunched: failed" ); + CMLog( @"sendAppLaunched: failed" ); return; } @@ -1460,7 +1464,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendAppLaunched: failed" ); + CMLog( @"sendAppLaunched: failed" ); } free( buffer ); @@ -1490,7 +1494,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (buffer = (char *)malloc( length ))==NULL ) { - NSLog( @"sendAppQuit: failed" ); + CMLog( @"sendAppQuit: failed" ); return; } @@ -1504,7 +1508,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendAppQuit: failed" ); + CMLog( @"sendAppQuit: failed" ); } free( buffer ); @@ -1521,7 +1525,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendTargetAppQuit failed" ); + CMLog( @"sendTargetAppQuit failed" ); } } @@ -1544,7 +1548,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (buffer = (char *)malloc( length ))==NULL ) { - NSLog( @"sendPauseFinished: failed" ); + CMLog( @"sendPauseFinished: failed" ); return; } @@ -1558,7 +1562,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendPauseFinished: failed" ); + CMLog( @"sendPauseFinished: failed" ); } free( buffer ); @@ -1585,7 +1589,8 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); COPY_FROM_BUFFER( &type, ptr, sizeof(type) ); COPY_FROM_BUFFER( &size, ptr, sizeof(size) ); - COPY_FROM_BUFFER( &maxSearchResultsAmount, ptr, sizeof(maxSearchResultsAmount) ); + // receive the amount of results to return + COPY_FROM_BUFFER( &searchResultsAmountDisplayed, ptr, sizeof(searchResultsAmountDisplayed) ); if ( ![searchResults lastObject] ) { @@ -1875,21 +1880,21 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); } else { - NSLog( @"ERROR: process couldn't be paused" ); + CMLog( @"ERROR: process couldn't be paused" ); [self sendPauseFinished:NO]; [self sendError:@"Could not pause target because of an unknown error." fatal:NO]; } } else { - NSLog( @"ERROR: process couldn't be paused" ); + CMLog( @"ERROR: process couldn't be paused" ); [self sendPauseFinished:NO]; [self sendError:@"Could not pause target because of an unknown error." fatal:NO]; } } else { - NSLog( @"ERROR: process couldn't be paused" ); + CMLog( @"ERROR: process couldn't be paused" ); [self sendPauseFinished:NO]; switch ( errno ) @@ -2010,7 +2015,7 @@ int bmsearch( char *pat, int m, char *text, int n, void *base, void *loc[] ); if ( (result = task_for_pid( current_task(), processID, &processTask)) != KERN_SUCCESS ) { - NSLog( @"task_for_pid returned error: %i", result ); + CMLog( @"task_for_pid returned error: %i", result ); } } diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings index 2db152c254d426f28677dcf8e79dec62d2040ac1..315ce0077e9bef73f95e933839116abdfe59b0a3 100644 GIT binary patch delta 17 ZcmZ3$ynuPaT}Gpc_Z%6GCMz&D0024^1^xg4 delta 17 ZcmZ3$ynuPaT}H!+_Z%4wCo3>E0024#1^fU2 diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib index 331fb3a..a30170a 100644 --- a/English.lproj/MainMenu.nib/classes.nib +++ b/English.lproj/MainMenu.nib/classes.nib @@ -6,6 +6,7 @@ launchEmailMenu = id; launchHelpFile = id; launchWebsiteMenu = id; + newSessionWindow = id; showAboutBoxWindow = id; showNetTrafficWindow = id; showPreferenceWindow = id; diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index 46a09cbd0427c480b4d7f06b37a5026030dc735a..9ef368ddd24ddfa373cd51278fee340cd9531237 100644 GIT binary patch delta 4782 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 Zcuu?^UKX#4y<(p@DBcZx)jtM4{vU_QIxYYJ diff --git a/English.lproj/MainMenu.nib/objects.nib b/English.lproj/MainMenu.nib/objects.nib index bb4317df74319fc047af1f2b3f33fe416f8e2b69..2d16e82868ca270f2490e0fd1789030df49763d9 100644 GIT binary patch delta 1819 zcmZ8he@s(X6uuYwYD+tdL&2ysC?V>cQ*e{Xh8rWO#DG!U%;v9^@{~7Ai~TX;ex$ov z-j?i-33r^dD;pB`hv#hsWsx`%O~{;NvSuVClCY2v64T6>$#5gxNObo?MOgp%-o4-X z&Uemzz30XAe#<*|-fF3IYMx5f6KpotP^I~oeSq_I@KA_!;uKl&yY;g{O_TH z@M3?krd}vZT>;JODJD%VO)cTJHX>B>bK0Z!mhhJ?Mtk$vGJ1h`&>U*;8d@lDg60YQ zfo_{!JB)UjY^hd#?`ba8&;PWn;+1JT=9HJxq%x7VRp83>^(JYXGO0)}x9BZVSt-V2 zmNopGqAcl+n96H4(RX{)A|rABQ~Gl>&L?M(TJprY%(PLU*ChEi(WjV~fok$h2E^H^{@t zhU8j$n50LN-&(YdCTFsfJm0cKtlzZk;Xx&Lt3ORX~FWvfyfbE{RqU%YbO zrL3jOOtQkKlua2i7>mQhBy<|QD5Hcf;lYf}g0w4e#ej(f|0ko2F6Sk-tpZQkwh6pw zE6Iw(ofzCOU?2vMlF((qP@IojHp*sqiX+Pg6xl#NUv1q?^LdrEK;XyL7X|iMcL@C3 z`m!kwJqG{XR!DpKD*Mrp0{0Wp5d)(G?k3=N9LD2t(}3wD^c!GN;IaYN448_+)gBm* z!$=&GQxI!~>jq3FfF{AFK(_&daflDVy#y#x7>z@p0S^+8xD#Cg$#8Fk7V3~KZj8OE zT3*?TfLdR$RfoZFBowhd;e;wKROVSmhp0#;I*bZ#o@%=e7U?OTQ}S7$L!t?~g($tC zP;7?&S4dC;g35SOM+c=0Vj|a48A?r&4tWc!6zMRskP$w^3mI{Q=`t8wNWP%MxM1cV zb&C$IqMBV^lXd>wy^S8#r-My4zd_Wor%ur?(o6;7r^9WrT+r}j8UOLALwWa_gf^=| z^&R*6>MJ#m<_rXV+WTs;E=J((iw{JYmoCo9>6i5~0;;cG^Ed;K!+qSlcunYft1wsU zwA#n?4M}7NJ(4PQyGt7y+?vZNzZL$J@31Uuas>ma{ixiV8=U?*>v73s_*J*+3J8ys zZbY(*%iC}|McA9d+~LSxI@TmgE~*vsIfuJ^pCjkQpbS`pVu0mENo5VqkUn(*IU&1V z=CAWMR;hslKIie{nrn9QQ(4ne;BY&G9#@?lX8HD0p-%p*V>RvOe>ie!7k6Z?2tAVG z%vo`Hy;F0~D^F$Y>DkypwZ^Xn)Ok_MOr}R|ObvVL>m&Y^bNG_ z#V$qh8#l9BJRhmo@wddTRj*v$yTX)k&i>BG)q>}TXtbTGOSE&I`4fpJC< z2O0Sq?=$)eUSZ^ObTZO{ml?T*6O5MNy&PoZ6Golb$mnjo#>hE5#>i(lbpo$4at2Q@ z(uEo$m$2g{^fOwFtrU&Wc9F&yJ%ZVcTt#Ic4l{Bd?_}X9Bj4f(BVXZ1j2^%v>(IqW z1e5RLT}HQK>=}G3A5Sy75BnHt#@mdv;R8juH8J`Q1{vLj{&*S;SELr zuQQ_K5F?#9z)1N8oIH#wBT;*LPCa{{vuS8*cyr delta 1886 zcmZ8hdrXs86u-B$r4O(&vuSV-9C0i@hTxRR=H#JHV#N50+3>MiKA{s@>|>4Dqq*9C zF4-T$-f=?x+|=kF9+XXHNHjAcEcr4vHd#nW7z@n|X+k22>tb9qD!aE75ZmN@=lh-W z`<-*|ckcbG@b|*jb2jVlMx~&-QE>)N;gaH&59>j=?b{Lo^pP|uw_Q(pR`O-)@p&&WxZ~WPgS~{wMo=@ zWswGvGiOMoyWO~{-W^aQXX6%`pz~tm3aaycX)7Djd8cu?uz#izvuS0Ho^H#$QE5^F zJkOTTTP;SBaKKcuTqvYvMc3P$ZqGK+o0K+5=|q|~vvHgn7v*W`^-o2No83(cKWca} zUo<6s$;^_>WSW^(tAu#1QyX(|);sHITYI&j_zECB;LSPXDpgR2^l1oZ1LntA(f$X?Hk% zKBuQasqt*~c|C!0Rh*FzF7?VCumu!fv)khgC>iu756xTh+>JINYie}YPs2UDW8RYR zfK)TOg3}U1^4;9x^v}>oBx3W6gX{`aHZ^5L2PJB9d0UQUfQhKk&uvkBhrPb$>L#y$ zy3V)^lM!oBoKrbD8U6k==u_r^59Oks z_cwY&wMt;O&w2Q;+ckB-Gc1!#a5OoC9#^A0uW~vvq4T`Q@iOh?2}c3#;FFI0u=T0r zP0dbsQ~GL3@2p*h@}_k5Du?{;fHD{zOuU4BjC_mzjCA5CBNs&F zD5D4QC?h}N5F?ibaDvhOc#DxUX!r>4F}e=RKE?N!;s_&G@DoON;4mW>@g^gua2X@l zG0f<0d~8BDBUkYuqw9spNk%`!5ToxEVGkpKHyBalj5^~aCPr+2O;xqm<#lfMIh&P` J*LOr!{|AL|HLd^v diff --git a/English.lproj/MainMenu~.nib/classes.nib b/English.lproj/MainMenu~.nib/classes.nib index df3e57d..a30170a 100644 --- a/English.lproj/MainMenu~.nib/classes.nib +++ b/English.lproj/MainMenu~.nib/classes.nib @@ -3,8 +3,10 @@ { ACTIONS = { checkForUpdate = id; + launchEmailMenu = id; launchHelpFile = id; launchWebsiteMenu = id; + newSessionWindow = id; showAboutBoxWindow = id; showNetTrafficWindow = id; showPreferenceWindow = id; diff --git a/English.lproj/MainMenu~.nib/keyedobjects.nib b/English.lproj/MainMenu~.nib/keyedobjects.nib index 76e0352b6120c2762a0349cfa0ac21139610891b..88943c664419b30d0a8a7a52673ea3d2472b273c 100644 GIT binary patch literal 8979 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 C>JgCu literal 8767 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 diff --git a/English.lproj/MainMenu~.nib/objects.nib b/English.lproj/MainMenu~.nib/objects.nib index b3ba7f253d614ade7a57691312c20843d169bf77..7dc130724d3424b850e761094a0faa26d3ac52aa 100644 GIT binary patch literal 4563 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 diff --git a/English.lproj/Record.nib/classes.nib b/English.lproj/Record.nib/classes.nib new file mode 100644 index 0000000..b9b4b09 --- /dev/null +++ b/English.lproj/Record.nib/classes.nib @@ -0,0 +1,4 @@ +{ + IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); + IBVersion = 1; +} \ No newline at end of file diff --git a/English.lproj/Record.nib/info.nib b/English.lproj/Record.nib/info.nib new file mode 100644 index 0000000..036e61d --- /dev/null +++ b/English.lproj/Record.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 98 99 356 240 0 0 1280 1002 + IBFramework Version + 349.0 + IBOpenObjects + + 6 + + IBSystem Version + 7D24 + + diff --git a/English.lproj/Record.nib/keyedobjects.nib b/English.lproj/Record.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..5c012804810bcae0c9d49416d876720230b5d5cd GIT binary patch literal 11548 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 slXgkFr7xs?(thb{=^N==>5z0-`dK + + + + IBDocumentLocation + 98 99 356 240 0 0 1280 1002 + IBFramework Version + 349.0 + IBOpenObjects + + 6 + + IBSystem Version + 7D24 + + diff --git a/English.lproj/Record~.nib/keyedobjects.nib b/English.lproj/Record~.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..5c504287a6ccf0dbd3cda6759bd252448e715a16 GIT binary patch literal 11548 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 literal 0 HcmV?d00001 diff --git a/English.lproj/Session.nib/classes.nib b/English.lproj/Session.nib/classes.nib new file mode 100644 index 0000000..72ac787 --- /dev/null +++ b/English.lproj/Session.nib/classes.nib @@ -0,0 +1,58 @@ +{ + IBClasses = ( + {CLASS = CMStatusView; LANGUAGE = ObjC; SUPERCLASS = NSTextField; }, + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = { + cancelButton = id; + changeButton = id; + clearSearchButton = id; + okButton = id; + pauseButton = id; + processMenuItem = id; + recurringChangeButton = id; + redoMenu = id; + searchButton = id; + serverMenuDisconnect = id; + serverMenuItem = id; + serverMenuLocal = id; + sizePopup = id; + typePopup = id; + undoMenu = id; + }; + CLASS = MyDocument; + LANGUAGE = ObjC; + OUTLETS = { + addressTable = NSTableView; + cancelButton = NSButton; + changeButton = NSButton; + changeSecondsCombo = NSComboBox; + changeSheet = NSWindow; + changeTextField = NSTextField; + cheatWindow = NSWindow; + clearSearchButton = NSButton; + decimalSizeMenu = NSMenu; + descriptionText = NSTextField; + integerSizeMenu = NSMenu; + okButton = NSButton; + pauseButton = NSButton; + processMenu = NSMenu; + processPopup = NSPopUpButton; + recurringChangeButton = NSButton; + searchButton = NSButton; + searchRadioMatrix = NSMatrix; + searchTextField = NSTextField; + serverMenu = NSMenu; + serverPopup = NSPopUpButton; + sizePopup = NSPopUpButton; + statusBar = NSProgressIndicator; + statusText = NSTextField; + stringSizeMenu = NSMenu; + typeMenu = NSMenu; + typePopup = NSPopUpButton; + }; + SUPERCLASS = NSDocument; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/English.lproj/Session.nib/info.nib b/English.lproj/Session.nib/info.nib new file mode 100644 index 0000000..5268009 --- /dev/null +++ b/English.lproj/Session.nib/info.nib @@ -0,0 +1,39 @@ + + + + + IBDocumentLocation + 294 88 356 407 0 0 1280 1002 + IBEditorPositions + + 143 + 402 411 86 87 0 0 1280 1002 + 192 + 272 343 101 49 0 0 1280 1002 + 207 + 376 382 134 49 0 0 1280 1002 + 400 + 202 287 69 87 0 0 1280 1002 + 405 + 264 308 79 68 0 0 1280 1002 + 410 + 509 326 69 49 0 0 1280 1002 + 735 + 499 516 296 322 0 0 1280 1002 + + IBFramework Version + 349.0 + IBLockedObjects + + 285 + + IBOldestOS + 2 + IBOpenObjects + + 285 + + IBSystem Version + 7F44 + + diff --git a/English.lproj/Session.nib/keyedobjects.nib b/English.lproj/Session.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..4426d8a0a7442af8566b9a30202780ca76b77a4a GIT binary patch literal 22036 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 cFsNW?L0LgL(S87ritr!#UHxyh5!Hn literal 0 HcmV?d00001 diff --git a/English.lproj/Session.nib/objects.nib b/English.lproj/Session.nib/objects.nib new file mode 100644 index 0000000000000000000000000000000000000000..3e639c89ca94db27bdd3e63eb5841bd94623624a GIT binary patch literal 11764 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 DeIB2! literal 0 HcmV?d00001 diff --git a/English.lproj/MyDocument.nib/classes.nib b/English.lproj/Session~.nib/classes.nib similarity index 100% rename from English.lproj/MyDocument.nib/classes.nib rename to English.lproj/Session~.nib/classes.nib diff --git a/English.lproj/MyDocument.nib/info.nib b/English.lproj/Session~.nib/info.nib similarity index 100% rename from English.lproj/MyDocument.nib/info.nib rename to English.lproj/Session~.nib/info.nib diff --git a/English.lproj/MyDocument.nib/keyedobjects.nib b/English.lproj/Session~.nib/keyedobjects.nib similarity index 100% rename from English.lproj/MyDocument.nib/keyedobjects.nib rename to English.lproj/Session~.nib/keyedobjects.nib diff --git a/English.lproj/MyDocument.nib/objects.nib b/English.lproj/Session~.nib/objects.nib similarity index 100% rename from English.lproj/MyDocument.nib/objects.nib rename to English.lproj/Session~.nib/objects.nib diff --git a/Info-The_Cheat.plist b/Info-The_Cheat.plist index 60bd6dc..4f0df19 100644 --- a/Info-The_Cheat.plist +++ b/Info-The_Cheat.plist @@ -7,18 +7,26 @@ CFBundleDocumentTypes + CFBundleTypeExtensions + + cheat + + CFBundleTypeIconFile + icondoc.icns CFBundleTypeName - The Cheat + Cheat Document + CFBundleTypeOSTypes + + ThCh + CFBundleTypeRole Editor - NSDocumentClass - MyDocument CFBundleExecutable The Cheat CFBundleGetInfoString - The Cheat 1.1.1 + The Cheat 1.1.2 CFBundleIconFile icon.icns CFBundleIdentifier @@ -30,7 +38,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.1.1 + 1.1.2 CFBundleSignature ThCh NSMainNibFile diff --git a/NetTrafficController.h b/NetTrafficController.h index fb7a116..d356904 100644 --- a/NetTrafficController.h +++ b/NetTrafficController.h @@ -9,6 +9,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #import "NetTrafficControlling.h" diff --git a/PreferenceController.h b/PreferenceController.h index d7dada7..6b42051 100644 --- a/PreferenceController.h +++ b/PreferenceController.h @@ -9,6 +9,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #import "PreferenceControlling.h" diff --git a/Read Me.rtf b/Read Me.rtf index e15a74e..9377d54 100644 --- a/Read Me.rtf +++ b/Read Me.rtf @@ -6,12 +6,12 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc \f0\b\fs42 \cf0 The Cheat -\fs24 v1.1.1 +\fs24 v1.1.2 \fs42 \ \fs24 Chaz McGarvey\ -\f1\b0\fs32 March 8, 2004 +\f1\b0\fs32 March 19, 2004 \f0\b\fs24 \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qj @@ -54,7 +54,7 @@ That said, The Cheat does support a feature called remote cheating. This allows \f0\b So who writes this software? \f1\b0 \ \ -I do. If you need to contact me, my hours are 12 a.m. to 11:59:59 p.m. (yes, I need at least a second off) Monday through Saturday. Get ahold of me if you have questions about the software or if you have bugs to report. There are also resources on my web site (including discussion forums and source code for developers).\ +I do. If you need to contact me, my hours are 12 a.m. to 11:59:59 p.m. (yes, I need at least a second off) Monday through Saturday (and a day). Get ahold of me if you have questions about the software or if you have bugs to report. There are also resources on my web site (including discussion forums and source code for developers).\ \ Web: http://www.brokenzipper.com\ Email: chaz@brokenzipper.com\ @@ -69,7 +69,15 @@ Against my better judgment, yes. Here it is:\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qj -\f4\fs24 \cf0 1.1.1 (03/08/04, public)\ +\f4\fs24 \cf0 1.1.2 (03/19/04, public)\ +Bug Fixes:\ +- Crash when trying to display more results than there are.\ +Other Changes:\ +- Internal improvements to the status displayer.\ +- Internal modifications to the document system.\ +- Quitting the target is now reported through status, not by sheets.\ +\ +1.1.1 (03/08/04, public)\ Bug Fixes:\ - String searches can now be narrowed down (sorry about that).\ \ diff --git a/MyDocument.h b/SessionController.h similarity index 91% rename from MyDocument.h rename to SessionController.h index 352874e..178ecfe 100644 --- a/MyDocument.h +++ b/SessionController.h @@ -2,13 +2,14 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Project: The Cheat // -// File: MyDocument.h +// File: SessionController.h // Created: Sun Sep 07 2003 // // Copyright: 2003 Chaz McGarvey. All rights reserved. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #import +#import #include @@ -21,7 +22,7 @@ #include "cheat_net.h" -@interface MyDocument : NSDocument < ClientDelegate > +@interface SessionController : NSWindowController < ClientDelegate > { // allows for easy interface updating TCstatus status, lastStatus; @@ -43,7 +44,7 @@ TCaddress *searchResults; int searchResultsAmount; - int maxSearchResultsAmount; + int searchResultsAmountDisplayed; // to allow for connecting on new document BOOL everConnected; @@ -74,7 +75,7 @@ IBOutlet NSButton *clearSearchButton; IBOutlet NSButton *changeButton; IBOutlet NSTableView *addressTable; - IBOutlet NSTextField *statusText; + IBOutlet CMStatusView *statusText; IBOutlet NSProgressIndicator *statusBar; IBOutlet NSTextField *descriptionText; @@ -112,11 +113,11 @@ - (void)setStatusChangingContinuously; - (void)setStatusUndoing; - (void)setStatusRedoing; -- (void)setStatusToLast; +//- (void)setStatusToLast; -- (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds; -- (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds color:(NSColor *)color; -- (void)statusTextTimer:(NSTimer *)timer; +//- (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds; +//- (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds color:(NSColor *)color; +//- (void)statusTextTimer:(NSTimer *)timer; // UPDATE CHANGE SHEET diff --git a/MyDocument.m b/SessionController.m similarity index 91% rename from MyDocument.m rename to SessionController.m index cd8d768..35763fe 100644 --- a/MyDocument.m +++ b/SessionController.m @@ -2,13 +2,13 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Project: The Cheat // -// File: MyDocument.m +// File: SessionController.m // Created: Sun Sep 07 2003 // // Copyright: 2003 Chaz McGarvey. All rights reserved. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#import "MyDocument.h" +#import "SessionController.h" #import "AppController.h" @@ -19,11 +19,11 @@ void TCPlaySound( NSString *name ); -@implementation MyDocument +@implementation SessionController - (id)init { - if ( self = [super init] ) + if ( self = [super initWithWindowNibName:@"Session"] ) { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; @@ -48,7 +48,7 @@ void TCPlaySound( NSString *name ); return self; } -- (NSString *)windowNibName +/*- (NSString *)windowNibName { return @"MyDocument"; } @@ -63,10 +63,16 @@ void TCPlaySound( NSString *name ); [super windowControllerDidLoadNib:controller]; [self initialInterfaceSetup]; -} +}*/ +- (void)windowDidLoad +{ + [cheatWindow setTitle:[NSString stringWithFormat:@"The Cheat %i", ++TCGlobalSessionCount]]; + + [self initialInterfaceSetup]; +} -- (void)close +- (void)windowWillClose:(NSNotification *)aNotification { // closing the window will automatically disconnect the client from the server, // but if the application is quitting, the client may not get a chance to exit. @@ -81,7 +87,8 @@ void TCPlaySound( NSString *name ); [statusTextTimer invalidate]; [statusTextTimer release], statusTextTimer = nil; - [super close]; + // we keep track of ourselves so we have to release ourself. + [self release]; } @@ -245,6 +252,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusDisconnected { + if ( status == STATUS_DISCONNECTED ) return; lastStatus = status; status = STATUS_DISCONNECTED; @@ -258,7 +266,7 @@ void TCPlaySound( NSString *name ); [searchRadioMatrix setEnabled:NO]; [searchButton setEnabled:NO]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Not Connected" duration:0]; + [statusText addStatus:@"Not Connected" duration:CM_STATUS_FOREVER]; [statusText setToolTip:@""]; [statusBar stopAnimation:self]; [addressTable setEnabled:NO]; @@ -270,6 +278,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusConnected { + if ( status == STATUS_CONNECTED ) return; lastStatus = status; status = STATUS_CONNECTED; @@ -282,7 +291,7 @@ void TCPlaySound( NSString *name ); [self updateSearchBoxes]; [self updateSearchButton]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Connected" duration:0]; + [statusText addStatus:@"Connected" duration:CM_STATUS_FOREVER]; [statusText setToolTip:@""]; [statusBar stopAnimation:self]; [addressTable setEnabled:NO]; @@ -294,6 +303,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusCheating { + if ( status == STATUS_CHEATING ) return; lastStatus = status; status = STATUS_CHEATING; @@ -306,25 +316,25 @@ void TCPlaySound( NSString *name ); [self updateSearchBoxes]; [self updateSearchButton]; [clearSearchButton setEnabled:YES]; - if ( searchResultsAmount < maxSearchResultsAmount ) + if ( searchResultsAmount <= searchResultsAmountDisplayed ) { if ( searchResultsAmount == 1 ) { - [self setStatusText:[NSString stringWithFormat:@"Results: %i", searchResultsAmount] duration:0 color:[NSColor colorWithCalibratedRed:0.0f green:0.5f blue:0.0f alpha:1.0f]]; + [statusText addStatus:@"One Result" color:[NSColor colorWithCalibratedRed:0.0f green:0.5f blue:0.0f alpha:1.0f] duration:CM_STATUS_FOREVER]; } else if ( searchResultsAmount == 0 ) { - [self setStatusText:[NSString stringWithFormat:@"Results: %i", searchResultsAmount] duration:0 color:[NSColor colorWithCalibratedRed:0.5f green:0.0f blue:0.0f alpha:1.0f]]; + [statusText addStatus:@"No Results" color:[NSColor colorWithCalibratedRed:0.5f green:0.0f blue:0.0f alpha:1.0f] duration:CM_STATUS_FOREVER]; } else { - [self setStatusText:[NSString stringWithFormat:@"Results: %i", searchResultsAmount] duration:0]; + [statusText addStatus:[NSString stringWithFormat:@"Results: %i", searchResultsAmount] duration:CM_STATUS_FOREVER]; } [statusText setToolTip:@""]; } else { - [self setStatusText:[NSString stringWithFormat:@"Results: >%i", maxSearchResultsAmount] duration:0]; + [statusText addStatus:[NSString stringWithFormat:@"Results: >%i", searchResultsAmountDisplayed] duration:CM_STATUS_FOREVER]; [statusText setToolTip:[NSString stringWithFormat:@"Results: %i", searchResultsAmount]]; } [statusBar stopAnimation:self]; @@ -337,6 +347,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusSearching { + if ( status == STATUS_SEARCHING ) return; lastStatus = status; status = STATUS_SEARCHING; @@ -350,7 +361,7 @@ void TCPlaySound( NSString *name ); [searchRadioMatrix setEnabled:NO]; [searchButton setEnabled:NO]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Searching..." duration:0]; + [statusText addStatus:@"Searching..." duration:CM_STATUS_FOREVER]; [statusText setToolTip:@""]; [statusBar startAnimation:self]; [addressTable setEnabled:NO]; @@ -362,6 +373,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusChanging { + if ( status == STATUS_CHANGING ) return; lastStatus = status; status = STATUS_CHANGING; @@ -387,6 +399,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusChangingLater { + if ( status == STATUS_CHANGING_LATER ) return; lastStatus = status; status = STATUS_CHANGING_LATER; @@ -400,7 +413,7 @@ void TCPlaySound( NSString *name ); [searchRadioMatrix setEnabled:NO]; [searchButton setEnabled:NO]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Changing Later..." duration:0]; + [statusText addStatus:@"Changing Later..." duration:CM_STATUS_FOREVER]; [statusText setToolTip:@""]; [statusBar startAnimation:self]; [addressTable setEnabled:NO]; @@ -412,6 +425,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusChangingContinuously { + if ( status == STATUS_CHANGING_CONTINUOUSLY ) return; lastStatus = status; status = STATUS_CHANGING_CONTINUOUSLY; @@ -425,7 +439,7 @@ void TCPlaySound( NSString *name ); [searchRadioMatrix setEnabled:NO]; [searchButton setEnabled:NO]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Repeating Change..." duration:0]; + [statusText addStatus:@"Repeating Change..." duration:CM_STATUS_FOREVER]; [statusText setToolTip:@""]; [statusBar startAnimation:self]; [addressTable setEnabled:NO]; @@ -437,6 +451,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusUndoing { + if ( status == STATUS_UNDOING ) return; lastStatus = status; status = STATUS_UNDOING; @@ -450,7 +465,7 @@ void TCPlaySound( NSString *name ); [searchRadioMatrix setEnabled:NO]; [searchButton setEnabled:NO]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Undoing..." duration:0]; + [statusText addStatus:@"Undoing..." duration:CM_STATUS_FOREVER]; [statusBar startAnimation:self]; [addressTable setEnabled:NO]; [changeButton setTitle:@"Change..."]; @@ -461,6 +476,7 @@ void TCPlaySound( NSString *name ); - (void)setStatusRedoing { + if ( status == STATUS_REDOING ) return; lastStatus = status; status = STATUS_REDOING; @@ -474,7 +490,7 @@ void TCPlaySound( NSString *name ); [searchRadioMatrix setEnabled:NO]; [searchButton setEnabled:NO]; [clearSearchButton setEnabled:NO]; - [self setStatusText:@"Redoing..." duration:0]; + [statusText addStatus:@"Redoing..." duration:CM_STATUS_FOREVER]; [statusText setToolTip:@""]; [statusBar startAnimation:self]; [addressTable setEnabled:NO]; @@ -484,7 +500,7 @@ void TCPlaySound( NSString *name ); [[serverMenu itemAtIndex:0] setTitle:@"Disconnect"]; } -- (void)setStatusToLast +/*- (void)setStatusToLast { switch ( lastStatus ) { @@ -524,8 +540,9 @@ void TCPlaySound( NSString *name ); [self setStatusRedoing]; break; } -} +}*/ +/* - (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds { [self setStatusText:msg duration:seconds color:[NSColor blackColor]]; @@ -564,7 +581,7 @@ void TCPlaySound( NSString *name ); [savedStatusText release], savedStatusText = nil; [statusTextTimer invalidate]; [statusTextTimer release], statusTextTimer = nil; -} +}*/ - (void)connectToLocal @@ -649,7 +666,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendProcessListRequest failed on socket %i", sockfd ); + CMLog( @"sendProcessListRequest failed on socket %i", sockfd ); } } @@ -664,7 +681,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendClearSearch failed on socket %i", sockfd ); + CMLog( @"sendClearSearch failed on socket %i", sockfd ); } } @@ -682,7 +699,7 @@ void TCPlaySound( NSString *name ); if ( (buffer = (char *)malloc( length )) == NULL ) { - NSLog( @"sendSearch:size: failed" ); + CMLog( @"sendSearch:size: failed" ); } ptr = buffer; @@ -692,7 +709,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendSearch:size: failed" ); + CMLog( @"sendSearch:size: failed" ); } free( buffer ); @@ -712,7 +729,7 @@ void TCPlaySound( NSString *name ); if ( (buffer = (char *)malloc( length )) == NULL ) { - NSLog( @"sendChange:size: failed" ); + CMLog( @"sendChange:size: failed" ); } ptr = buffer; @@ -722,7 +739,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendChange:size: failed" ); + CMLog( @"sendChange:size: failed" ); } free( buffer ); @@ -739,7 +756,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendPauseTarget failed" ); + CMLog( @"sendPauseTarget failed" ); } } @@ -759,7 +776,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendUndoRequest failed" ); + CMLog( @"sendUndoRequest failed" ); } } @@ -774,7 +791,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, (char *)(&header), &length ) == -1 || length != sizeof(header) ) { - NSLog( @"sendRedoRequest failed" ); + CMLog( @"sendRedoRequest failed" ); } } @@ -794,7 +811,7 @@ void TCPlaySound( NSString *name ); if ( (buffer = (char *)malloc( length )) == NULL ) { - NSLog( @"sendSetTargetPID: failed" ); + CMLog( @"sendSetTargetPID: failed" ); } ptr = buffer; @@ -804,7 +821,7 @@ void TCPlaySound( NSString *name ); if ( SendBuffer( sockfd, buffer, &lengthAfter ) == -1 || lengthAfter != length ) { - NSLog( @"sendSetTargetPID: failed" ); + CMLog( @"sendSetTargetPID: failed" ); } free( buffer ); @@ -849,7 +866,7 @@ void TCPlaySound( NSString *name ); TCPlaySound( @"Basso" ); } - [self setStatusToLast]; + [self setStatusCheating]; //[self setStatusText:@"Search Finished" duration:1.5]; [cheatWindow makeFirstResponder:searchTextField]; } @@ -861,18 +878,21 @@ void TCPlaySound( NSString *name ); [self destroyResults]; COPY_FROM_BUFFER( &searchResultsAmount, ptr, sizeof(searchResultsAmount) ); - COPY_FROM_BUFFER( &maxSearchResultsAmount, ptr, sizeof(maxSearchResultsAmount) ); + COPY_FROM_BUFFER( &searchResultsAmountDisplayed, ptr, sizeof(searchResultsAmountDisplayed) ); - if ( searchResultsAmount > 0 ) + if ( searchResultsAmountDisplayed > 0 ) { - int memSize = TCAddressSize*maxSearchResultsAmount; + int memSize = TCAddressSize * searchResultsAmountDisplayed; + // TCAddressSize*maxSearchResultsAmount; if ( (searchResults = (TCaddress *)malloc( memSize )) == NULL ) { - NSLog( @"receivedVariableList failed: malloc failed" ); + CMLog( @"receivedVariableList failed: malloc failed" ); searchResultsAmount = 0; + searchResultsAmountDisplayed = 0; return; } + CMLog( @"CLIENT setting display amount to %i", searchResultsAmountDisplayed ); COPY_FROM_BUFFER( searchResults, ptr, memSize ); } @@ -882,15 +902,10 @@ void TCPlaySound( NSString *name ); - (void)receivedChangeFinished { - [self setStatusToLast]; - - if ( status == STATUS_CHANGING_CONTINUOUSLY ) - { - [self setStatusText:@"Change Occured" duration:1.5]; - } - else + if ( status != STATUS_CHANGING_CONTINUOUSLY ) { TCPlaySound( @"Tink" ); + [self setStatusCheating]; } } @@ -911,12 +926,12 @@ void TCPlaySound( NSString *name ); - (void)receivedUndoFinished { - [self setStatusToLast]; + [self setStatusCheating]; } - (void)receivedRedoFinished { - [self setStatusToLast]; + [self setStatusCheating]; } - (void)receivedUndoRedoStatus:(NSData *)data @@ -926,7 +941,7 @@ void TCPlaySound( NSString *name ); COPY_FROM_BUFFER( &undoCount, ptr, sizeof(undoCount) ); COPY_FROM_BUFFER( &redoCount, ptr, sizeof(redoCount) ); - NSLog( @"UNDO: %i, REDO: %i", undoCount, redoCount ); + CMLog( @"UNDO: %i, REDO: %i", undoCount, redoCount ); } - (void)receivedAppLaunched:(NSData *)data @@ -968,8 +983,10 @@ void TCPlaySound( NSString *name ); [self sendSetTargetPID:targetPID]; // alert the user. - [self handleErrorMessage:@"The application that was being cheated has quit." fatal:NO]; + TCPlaySound( @"Frog" ); + //[self handleErrorMessage:@"The application that was being cheated has quit." fatal:NO]; + [statusText addStatus:@"Target Quit"]; [self setStatusConnected]; } @@ -1006,7 +1023,7 @@ void TCPlaySound( NSString *name ); // copy the number of results to return. COPY_TO_BUFFER( ptr, &TCGlobalHitsDisplayed, sizeof(TCGlobalHitsDisplayed) ); - NSLog( @"type: %i, size: %i", type, size ); + CMLog( @"type: %i, size: %i", type, size ); // switch to cheating mode if this is the first search. if ( status == STATUS_CONNECTED ) @@ -1266,8 +1283,6 @@ void TCPlaySound( NSString *name ); [self sendChange:data size:dataSize]; free( data ); - - [self setStatusChanging]; } @@ -1352,8 +1367,8 @@ void TCPlaySound( NSString *name ); { [self clearSearch]; + [statusText addStatus:@"Search Cleared" duration:1.5]; [self setStatusConnected]; - [self setStatusText:@"Search Cleared" duration:1.5]; [self sendClearSearch]; } @@ -1405,8 +1420,8 @@ void TCPlaySound( NSString *name ); targetPID = [sender tag]; [self sendSetTargetPID:targetPID]; - - [self setStatusText:[NSString stringWithFormat:@"PID: %i", targetPID] duration:0]; + + [statusText addStatus:[NSString stringWithFormat:@"PID: %i", targetPID] duration:CM_STATUS_FOREVER]; } @@ -1483,6 +1498,14 @@ void TCPlaySound( NSString *name ); { [changeSheet orderOut:sender]; [NSApp endSheet:changeSheet returnCode:1]; + if ( [recurringChangeButton state] == NSOnState ) + { + [self setStatusChangingContinuously]; + } + else + { + [self setStatusChanging]; + } //[NSApp stopModal]; } @@ -1521,11 +1544,12 @@ void TCPlaySound( NSString *name ); - (void)destroyResults { - if ( searchResultsAmount > 0 ) + if ( searchResultsAmountDisplayed > 0 ) { free( searchResults ); searchResultsAmount = 0; + searchResultsAmountDisplayed = 0; } } @@ -1600,7 +1624,7 @@ void TCPlaySound( NSString *name ); - (void)handleErrorMessage:(NSString *)msg fatal:(BOOL)fatal { - NSLog( @"error received" ); + CMLog( @"error received" ); // close the change sheet if it's open. if ( [cheatWindow attachedSheet] ) { @@ -1743,7 +1767,7 @@ void TCPlaySound( NSString *name ); - (int)numberOfRowsInTableView:(NSTableView *)table { - return (searchResultsAmount <= maxSearchResultsAmount) ? searchResultsAmount : maxSearchResultsAmount; + return searchResultsAmountDisplayed; } - (id)tableView:(NSTableView *)table objectValueForTableColumn:(NSTableColumn *)column row:(int)row @@ -1784,7 +1808,7 @@ void TCPlaySound( NSString *name ); int tag = [serverList count] - 1; NSMenuItem *item; - NSLog( @"server found" ); + CMLog( @"server found" ); if ( [serverMenu itemWithTitle:name] == nil ) { diff --git a/The Cheat.pbproj/chaz.pbxuser b/The Cheat.pbproj/chaz.pbxuser index b91f836..d912312 100644 --- a/The Cheat.pbproj/chaz.pbxuser +++ b/The Cheat.pbproj/chaz.pbxuser @@ -2,9 +2,9 @@ { 089C1660FE840EACC02AAC07 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 834}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 584}}"; sepNavSelRange = "{110, 0}"; - sepNavVisRect = "{{0, 0}, {1002, 834}}"; + sepNavVisRect = "{{0, 0}, {1002, 584}}"; }; }; 2A37F4A9FDCFA73011CA2CEA = { @@ -99,9 +99,9 @@ PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID; PBXFileTableDataSourceColumnWidthsKey = ( 16, - 330.8008, - 359.0356, - 336.2085, + 322.8008, + 350.0356, + 327.2085, ); PBXFileTableDataSourceColumnsKey = ( PBXSymbolsDataSource_SymbolTypeIconID, @@ -132,7 +132,7 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 100588994; + PBXPerProjectTemplateStateSaveDate = 101460657; PBXPrepackagedSmartGroups_v2 = ( { PBXTransientLocationAtTop = bottom; @@ -307,57 +307,65 @@ _percentageOfCollapsedView = 0; isCollapsed = yes; sizes = ( - "{{0, 0}, {1047, 213}}", - "{{0, 213}, {1047, 653}}", + "{{0, 0}, {1047, 125}}", + "{{0, 125}, {1047, 744}}", ); }; PBXProjectWorkspaceModule_DataSourceSelectionKey_Rev6 = { - BoundsStr = "{{0, 0}, {1032, 196}}"; + BoundsStr = "{{0, 0}, {1032, 108}}"; Rows = ( 0, ); - VisibleRectStr = "{{0, 0}, {1032, 196}}"; + VisibleRectStr = "{{0, 0}, {1032, 108}}"; }; PBXProjectWorkspaceModule_EditorOpen = true; PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = { PBXSplitModuleInNavigatorKey = { Split0 = { - bookmark = 6E6A7FDC05FEED08004D2DF3; + bookmark = 6EF4D0BF060C2CF300F4728B; history = ( - 6E48626F059421D8006D09F8, 6E90C09D05FA7EAA00857F22, 6E90C0DC05FA979F00857F22, 6E90C16605FAA5FB00857F22, 6E90C39A05FC0B3600857F22, 6E8DD55E05FC512600D2C0EA, 6E8DD56405FC5BD100D2C0EA, - 6E8DD5D705FC5F3500D2C0EA, - 6E8DD5E305FC605F00D2C0EA, 6E8DD5EA05FC607A00D2C0EA, 6E8DD64605FC674200D2C0EA, 6E8DD66605FC696100D2C0EA, - 6E8DD66A05FC696500D2C0EA, 6E8DD68105FC6AF400D2C0EA, - 6E8DD6CB05FC701300D2C0EA, - 6E8DD6CF05FC709E00D2C0EA, 6E8DD6EA05FC748B00D2C0EA, 6E8DD70C05FC762900D2C0EA, 6E8DD71105FC762C00D2C0EA, 6E8DD71605FC763300D2C0EA, 6E8DD71B05FC763C00D2C0EA, - 6E8DD74405FC776700D2C0EA, 6E8DD75305FC778700D2C0EA, - 6E8DD76205FC783B00D2C0EA, 6E55007005FD2C9D00EE693C, - 6E55007205FD2C9D00EE693C, - 6E55008505FD2CD800EE693C, - 6E6A7F7C05FEDDCB004D2DF3, 6E6A7F8005FEDDD3004D2DF3, 6E6A7FAB05FEDEE9004D2DF3, - 6E6A7FB505FEDF13004D2DF3, - 6E6A7FCC05FEE038004D2DF3, 6E6A7FD805FEE064004D2DF3, - 6E6A7FD405FEE053004D2DF3, + 6EE811830602584A00F1CD3F, + 6EE811C40602592500F1CD3F, + 6EE811EE060259D600F1CD3F, + 6EE811FD06025A4300F1CD3F, + 6EE8120F06025ABA00F1CD3F, + 6EE8122306025C6300F1CD3F, + 6E8DD76205FC783B00D2C0EA, + 6EE815E40602A97C00F1CD3F, + 6E1B2CDA060AB14300B6B2F9, + 6E1B2CDB060AB14300B6B2F9, + 6E1B2CDC060AB14300B6B2F9, + 6E1B2CDD060AB14300B6B2F9, + 6E1B2CDE060AB14300B6B2F9, + 6E1B2CDF060AB14300B6B2F9, + 6E1B2CE0060AB14300B6B2F9, + 6E1B2CE2060AB14300B6B2F9, + 6E1B2D45060AC5AC00B6B2F9, + 6E976BD3060BC2AB00FDABB0, + 6E976BD4060BC2AB00FDABB0, + 6EF4D0B9060C2CF300F4728B, + 6EF4D0BA060C2CF300F4728B, + 6EF4D0BB060C2CF300F4728B, ); prevStack = ( 6E486275059421D8006D09F8, @@ -385,22 +393,20 @@ 6E8DD71305FC762C00D2C0EA, 6E8DD71805FC763300D2C0EA, 6E8DD71C05FC763C00D2C0EA, - 6E55006805FD21B800EE693C, - 6E6A7F7D05FEDDCB004D2DF3, - 6E6A7F8105FEDDD3004D2DF3, - 6E6A7F8505FEDDEC004D2DF3, - 6E6A7F8905FEDE21004D2DF3, - 6E6A7F8D05FEDE27004D2DF3, - 6E6A7F9105FEDE33004D2DF3, - 6E6A7F9505FEDE35004D2DF3, - 6E6A7F9905FEDE6A004D2DF3, - 6E6A7FA105FEDEB7004D2DF3, - 6E6A7FA505FEDEDD004D2DF3, - 6E6A7FB605FEDF13004D2DF3, - 6E6A7FCD05FEE038004D2DF3, - 6E6A7FD105FEE047004D2DF3, - 6E6A7FD505FEE053004D2DF3, - 6E6A7FD905FEE064004D2DF3, + 6EE811D50602595D00F1CD3F, + 6EE811FF06025A4300F1CD3F, + 6EE8121006025ABA00F1CD3F, + 6EE8122406025C6300F1CD3F, + 6EE81236060274E900F1CD3F, + 6E1B2CE9060AB14300B6B2F9, + 6E1B2CEC060AB14300B6B2F9, + 6E1B2CED060AB14300B6B2F9, + 6E1B2CFD060AB14300B6B2F9, + 6E1B2D07060AB14300B6B2F9, + 6E1B2D08060AB14300B6B2F9, + 6EF4D0BC060C2CF300F4728B, + 6EF4D0BD060C2CF300F4728B, + 6EF4D0BE060C2CF300F4728B, ); }; SplitCount = 1; @@ -412,14 +418,14 @@ _indexOfCollapsedView = 0; _percentageOfCollapsedView = 0; sizes = ( - "{{0, 0}, {233, 866}}", - "{{233, 0}, {1047, 866}}", + "{{0, 0}, {233, 869}}", + "{{233, 0}, {1047, 869}}", ); }; }; - PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {1047, 213}}"; - PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 213}, {1047, 653}}"; - PBXProjectWorkspaceModule_OldSuperviewFrame = "{{233, 0}, {1047, 866}}"; + PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {1047, 125}}"; + PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 125}, {1047, 744}}"; + PBXProjectWorkspaceModule_OldSuperviewFrame = "{{233, 0}, {1047, 869}}"; PBXProjectWorkspaceModule_SGTM = { PBXBottomSmartGroupGIDs = ( 1C37FBAC04509CD000000102, @@ -449,16 +455,18 @@ 2A37F4AFFDCFA73011CA2CEA, 2A37F4B8FDCFA73011CA2CEA, 6E8EE12505F7EA8100ED3F4F, + 1058C7A6FEA54F5311CA2CBB, + 6E90BC2805F7FB9000857F22, 1C37FBAC04509CD000000102, ); PBXSmartGroupTreeModuleOutlineStateSelectionKey = ( ( - 42, - 37, + 11, + 1, 0, ), ); - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey = "{{0, 0}, {216, 848}}"; + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey = "{{0, 0}, {216, 851}}"; }; PBXTopSmartGroupGIDs = ( ); @@ -485,8 +493,8 @@ _percentageOfCollapsedView = 0; isCollapsed = yes; sizes = ( - "{{0, 0}, {327, 353}}", - "{{327, 0}, {534, 353}}", + "{{0, 0}, {327, 349}}", + "{{327, 0}, {534, 349}}", ); }; VerticalSplitView = { @@ -495,8 +503,8 @@ _percentageOfCollapsedView = 0; isCollapsed = yes; sizes = ( - "{{0, 0}, {861, 353}}", - "{{0, 353}, {861, 362}}", + "{{0, 0}, {861, 349}}", + "{{0, 349}, {861, 366}}", ); }; }; @@ -514,510 +522,119 @@ "PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXProjectFindModule" = { }; "PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXProjectWorkspaceModule" = { - PBXProjectWorkspaceModule_StateKey_Rev36 = { + PBXProjectWorkspaceModule_StateKey_Rev39 = { + PBXProjectWorkspaceModule_DEGV_Geometry = { + _collapsingFrameDimension = 0; + _indexOfCollapsedView = 0; + _percentageOfCollapsedView = 0; + isCollapsed = yes; + sizes = ( + "{{0, 0}, {1047, 233}}", + "{{0, 233}, {1047, 636}}", + ); + }; + PBXProjectWorkspaceModule_DataSourceSelectionKey_Rev6 = { + BoundsStr = "{{0, 0}, {1032, 216}}"; + Rows = ( + 0, + ); + VisibleRectStr = "{{0, 0}, {1032, 216}}"; + }; PBXProjectWorkspaceModule_EditorOpen = true; PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = { - Split0 = { - bookmark = 6E51A96D0573258900506538; - history = ( - 6E84B8F20558B3480001B5EB, - 6E84B8F30558B3480001B5EB, - 6E84B8F40558B3480001B5EB, - 6E84B8F80558B3480001B5EB, - 6EF8EC22055A1C39008BBE46, - 6EF8EC23055A1C39008BBE46, - 6EF8EC26055A1C39008BBE46, - 6EF8EC27055A1C39008BBE46, - 6EF8EC28055A1C39008BBE46, - 6EF8EC29055A1C39008BBE46, - 6EE004830560B42800F8A5B1, - 6EE0048A0560B42800F8A5B1, - 6EE0048C0560B42800F8A5B1, - 6EE0048D0560B42800F8A5B1, - 6EE004900560B42800F8A5B1, - 6E5EC36505633214001E3A3E, - 6E5EC36605633214001E3A3E, - 6E5EC36705633214001E3A3E, - 6E5EC36905633214001E3A3E, - 6E5EC36C05633214001E3A3E, - 6E5EC36D05633214001E3A3E, - 6E5EC36E05633214001E3A3E, - 6E5EC37005633214001E3A3E, - 6E00EF260566EE06001AB46F, - 6E00EF290566EE06001AB46F, - 6E6126C7056B3091006177EC, - 6E6126C8056B3091006177EC, - 6E6126C9056B3091006177EC, - 6E6126CB056B3091006177EC, - 6E6126CC056B3091006177EC, - 6E6126CD056B3091006177EC, - 6E6126CE056B3091006177EC, - 6E6126CF056B3091006177EC, - 6E6126D0056B3091006177EC, - 6E6126D1056B3091006177EC, - 6E6126D2056B3091006177EC, - 6E6126D3056B3091006177EC, - 6E6126D4056B3091006177EC, - 6E6126D5056B3091006177EC, - 6E6126D6056B3091006177EC, - 6E6126D7056B3091006177EC, - 6E6126D8056B3091006177EC, - 6E6126DA056B3091006177EC, - 6E6126DB056B3091006177EC, - 6E6126DC056B3091006177EC, - 6E6126DD056B3091006177EC, - 6E6126DE056B3091006177EC, - 6E6126DF056B3091006177EC, - 6E6126E0056B3091006177EC, - 6E6126E1056B3091006177EC, - 6E6126E2056B3091006177EC, - 6E6126E3056B3091006177EC, - 6E6126E4056B3091006177EC, - 6E51A9060573258100506538, - 6E51A9070573258100506538, - 6E51A9080573258100506538, - 6E51A9090573258100506538, - 6E51A90A0573258100506538, - 6E51A90B0573258100506538, - 6E51A90C0573258100506538, - 6E51A90D0573258100506538, - 6E51A90E0573258100506538, - 6E51A90F0573258100506538, - 6E51A9100573258100506538, - 6E51A9110573258100506538, - 6E8166290559E79E00377CF7, - ); - prevStack = ( - 6E84B8FE0558B3480001B5EB, - 6E84B8FF0558B3480001B5EB, - 6E84B9000558B3480001B5EB, - 6E84B9010558B3480001B5EB, - 6E84B9020558B3480001B5EB, - 6E84B9030558B3480001B5EB, - 6E84B9040558B3480001B5EB, - 6E84B9050558B3480001B5EB, - 6E84B9060558B3480001B5EB, - 6E84B9070558B3480001B5EB, - 6E84B9080558B3480001B5EB, - 6E84B9090558B3480001B5EB, - 6E84B90A0558B3480001B5EB, - 6E84B90B0558B3480001B5EB, - 6E84B90C0558B3480001B5EB, - 6E84B90D0558B3480001B5EB, - 6E84B90E0558B3480001B5EB, - 6E84B90F0558B3480001B5EB, - 6E84B9100558B3480001B5EB, - 6E84B9110558B3480001B5EB, - 6E84B9120558B3480001B5EB, - 6E84B9130558B3480001B5EB, - 6E84B9140558B3480001B5EB, - 6E84B9160558B3480001B5EB, - 6E84B9180558B3480001B5EB, - 6E84B91A0558B3480001B5EB, - 6E84B91C0558B3480001B5EB, - 6E84B91D0558B3480001B5EB, - 6E84B91E0558B3480001B5EB, - 6E84B91F0558B3480001B5EB, - 6E84B9210558B3480001B5EB, - 6E84B9230558B3480001B5EB, - 6E84B9240558B3480001B5EB, - 6E81662F0559E79E00377CF7, - 6E8166300559E79E00377CF7, - 6E8166310559E79E00377CF7, - 6E8166320559E79E00377CF7, - 6E8166330559E79E00377CF7, - 6E8166340559E79E00377CF7, - 6E8166350559E79E00377CF7, - 6E8166370559E79E00377CF7, - 6E8166380559E79E00377CF7, - 6E8166390559E79E00377CF7, - 6E81663A0559E79E00377CF7, - 6E81663C0559E79E00377CF7, - 6E81663E0559E79E00377CF7, - 6E81663F0559E79E00377CF7, - 6E8166410559E79E00377CF7, - 6E8166430559E79E00377CF7, - 6E8166450559E79E00377CF7, - 6E8166460559E79E00377CF7, - 6E8166480559E79E00377CF7, - 6E8166890559F3BD00377CF7, - 6E81668B0559F3BD00377CF7, - 6E81668C0559F3BD00377CF7, - 6E81668E0559F3BD00377CF7, - 6E8166900559F3BD00377CF7, - 6E8166920559F3BD00377CF7, - 6E8166940559F3BD00377CF7, - 6E8166960559F3BD00377CF7, - 6E8166980559F3BD00377CF7, - 6E81669A0559F3BD00377CF7, - 6E81669C0559F3BD00377CF7, - 6E81669E0559F3BD00377CF7, - 6E8166A00559F3BD00377CF7, - 6E8166A20559F3BD00377CF7, - 6E8166A30559F3BD00377CF7, - 6E8166A50559F3BD00377CF7, - 6EF8EB660559F823008BBE46, - 6EF8EB680559F823008BBE46, - 6EF8EB6A0559F823008BBE46, - 6EF8EB6C0559F823008BBE46, - 6EF8EB6E0559F823008BBE46, - 6EF8EB700559F823008BBE46, - 6EF8EC2D055A1C39008BBE46, - 6EF8EC2F055A1C39008BBE46, - 6EF8EC31055A1C39008BBE46, - 6EF8EC33055A1C39008BBE46, - 6EF8EC35055A1C39008BBE46, - 6EF8EC37055A1C39008BBE46, - 6EF8EC39055A1C39008BBE46, - 6EF8EC3B055A1C39008BBE46, - 6EF8EC3D055A1C39008BBE46, - 6EF8EC3F055A1C39008BBE46, - 6EF8EC40055A1C39008BBE46, - 6EF8EC42055A1C39008BBE46, - 6EF8EC44055A1C39008BBE46, - 6EF8EC45055A1C39008BBE46, - 6EF8EC47055A1C39008BBE46, - 6EF8EC49055A1C39008BBE46, - 6EF8EC4B055A1C39008BBE46, - 6EF8EC4D055A1C39008BBE46, - 6EF8EC4F055A1C39008BBE46, - 6EF8EC51055A1C39008BBE46, - 6EF8EC53055A1C39008BBE46, - 6EF8EC55055A1C39008BBE46, - 6EF8EC56055A1C39008BBE46, - 6EF8EC58055A1C39008BBE46, - 6EF8EC59055A1C39008BBE46, - 6EF8EC5A055A1C39008BBE46, - 6EF8EC5B055A1C39008BBE46, - 6EF8EC5C055A1C39008BBE46, - 6EF8EC5D055A1C39008BBE46, - 6EF8EC5E055A1C39008BBE46, - 6EF8EC60055A1C39008BBE46, - 6EF8EC62055A1C39008BBE46, - 6EF8EC64055A1C39008BBE46, - 6EF8EC65055A1C39008BBE46, - 6EF8EC67055A1C39008BBE46, - 6EF8EC69055A1C39008BBE46, - 6EF8EC6A055A1C39008BBE46, - 6EF8EC6B055A1C39008BBE46, - 6EF8EC6D055A1C39008BBE46, - 6EF8EC6E055A1C39008BBE46, - 6EF8EC6F055A1C39008BBE46, - 6EF8EC70055A1C39008BBE46, - 6EF8EC72055A1C39008BBE46, - 6EF8EC73055A1C39008BBE46, - 6EF8EC74055A1C39008BBE46, - 6EF8EC75055A1C39008BBE46, - 6EF8EC76055A1C39008BBE46, - 6EF8EC77055A1C39008BBE46, - 6EF8EC78055A1C39008BBE46, - 6EE070E0055CA8E200598538, - 6EE070E2055CA8E200598538, - 6EE070E4055CA8E200598538, - 6EE070E6055CA8E200598538, - 6EE070E8055CA8E200598538, - 6EE070EA055CA8E200598538, - 6EE070EC055CA8E200598538, - 6EE004950560B42800F8A5B1, - 6EE004960560B42800F8A5B1, - 6EE004970560B42800F8A5B1, - 6EE004980560B42800F8A5B1, - 6EE004990560B42800F8A5B1, - 6EE0049A0560B42800F8A5B1, - 6EE0049B0560B42800F8A5B1, - 6EE0049C0560B42800F8A5B1, - 6EE0049D0560B42800F8A5B1, - 6EE0049E0560B42800F8A5B1, - 6EE0049F0560B42800F8A5B1, - 6EE004A00560B42800F8A5B1, - 6EE004A10560B42800F8A5B1, - 6EE004A20560B42800F8A5B1, - 6EE004A30560B42800F8A5B1, - 6EE004A40560B42800F8A5B1, - 6EE004A50560B42800F8A5B1, - 6EE004A60560B42800F8A5B1, - 6EE004A70560B42800F8A5B1, - 6EE004A80560B42800F8A5B1, - 6EE004A90560B42800F8A5B1, - 6EE004AA0560B42800F8A5B1, - 6EE004AB0560B42800F8A5B1, - 6EE004AC0560B42800F8A5B1, - 6EE004AD0560B42800F8A5B1, - 6EE004AE0560B42800F8A5B1, - 6EE004AF0560B42800F8A5B1, - 6EE004B00560B42800F8A5B1, - 6EE004B10560B42800F8A5B1, - 6EE004B20560B42800F8A5B1, - 6EE004B30560B42800F8A5B1, - 6EE004B40560B42800F8A5B1, - 6EE004B50560B42800F8A5B1, - 6EE004B60560B42800F8A5B1, - 6EE004B70560B42800F8A5B1, - 6EE004B80560B42800F8A5B1, - 6EE004B90560B42800F8A5B1, - 6EE004BA0560B42800F8A5B1, - 6EE004BB0560B42800F8A5B1, - 6EE004BC0560B42800F8A5B1, - 6EE004BD0560B42800F8A5B1, - 6EE004BE0560B42800F8A5B1, - 6EE004BF0560B42800F8A5B1, - 6EE004C00560B42800F8A5B1, - 6EE004C10560B42800F8A5B1, - 6EE004C20560B42800F8A5B1, - 6EE004C30560B42800F8A5B1, - 6EE004C40560B42800F8A5B1, - 6EE004C50560B42800F8A5B1, - 6EE004C60560B42800F8A5B1, - 6EE004C70560B42800F8A5B1, - 6EE004C80560B42800F8A5B1, - 6EE004C90560B42800F8A5B1, - 6EE004CA0560B42800F8A5B1, - 6EE004CB0560B42800F8A5B1, - 6EE004CC0560B42800F8A5B1, - 6EE004CD0560B42800F8A5B1, - 6EE004CE0560B42800F8A5B1, - 6EE004CF0560B42800F8A5B1, - 6EE004D00560B42800F8A5B1, - 6EE004D10560B42800F8A5B1, - 6EE004D20560B42800F8A5B1, - 6EE004D30560B42800F8A5B1, - 6EE004D40560B42800F8A5B1, - 6EE004D50560B42800F8A5B1, - 6EE004D60560B42800F8A5B1, - 6EE004D70560B42800F8A5B1, - 6EE004D80560B42800F8A5B1, - 6EE004D90560B42800F8A5B1, - 6EE004DA0560B42800F8A5B1, - 6EE004DB0560B42800F8A5B1, - 6E2E17AE056201170070BE48, - 6E2E17AF056201170070BE48, - 6E2E17B0056201170070BE48, - 6E2E17B1056201170070BE48, - 6E5EC37105633214001E3A3E, - 6E5EC37205633214001E3A3E, - 6E5EC37305633214001E3A3E, - 6E5EC37405633214001E3A3E, - 6E5EC37505633214001E3A3E, - 6E5EC37605633214001E3A3E, - 6E5EC37705633214001E3A3E, - 6E5EC37805633214001E3A3E, - 6E5EC37905633214001E3A3E, - 6E5EC37A05633214001E3A3E, - 6E5EC37B05633214001E3A3E, - 6E5EC37C05633214001E3A3E, - 6E5EC37D05633214001E3A3E, - 6E5EC37E05633214001E3A3E, - 6E5EC37F05633214001E3A3E, - 6E5EC38005633214001E3A3E, - 6E5EC38105633214001E3A3E, - 6E5EC38205633214001E3A3E, - 6E5EC38305633214001E3A3E, - 6E5EC38405633214001E3A3E, - 6E5EC38505633214001E3A3E, - 6E5EC38605633214001E3A3E, - 6E5EC38705633214001E3A3E, - 6E5EC38805633214001E3A3E, - 6E5EC38905633214001E3A3E, - 6E5EC38A05633214001E3A3E, - 6E5EC38B05633214001E3A3E, - 6E5EC38C05633214001E3A3E, - 6E5EC38D05633214001E3A3E, - 6E5EC38E05633214001E3A3E, - 6E5EC38F05633214001E3A3E, - 6E5EC39005633214001E3A3E, - 6E5EC39105633214001E3A3E, - 6E5EC39205633214001E3A3E, - 6E5EC39305633214001E3A3E, - 6E5EC39405633214001E3A3E, - 6E5EC39505633214001E3A3E, - 6E5EC39605633214001E3A3E, - 6E5EC39705633214001E3A3E, - 6E5EC39805633214001E3A3E, - 6E5EC39905633214001E3A3E, - 6E5EC39A05633214001E3A3E, - 6E5EC39B05633214001E3A3E, - 6E5EC39C05633214001E3A3E, - 6E5EC39D05633214001E3A3E, - 6E5EC39E05633214001E3A3E, - 6E5EC39F05633214001E3A3E, - 6E5EC3A005633214001E3A3E, - 6E5EC3A105633214001E3A3E, - 6E5EC3A205633214001E3A3E, - 6E5EC3A305633214001E3A3E, - 6E5EC3A405633214001E3A3E, - 6E5EC3A505633214001E3A3E, - 6E5EC3A605633214001E3A3E, - 6E5EC3A705633214001E3A3E, - 6E5EC3A805633214001E3A3E, - 6E5EC3A905633214001E3A3E, - 6E5EC3AA05633214001E3A3E, - 6E5EC3AB05633214001E3A3E, - 6E5EC3AC05633214001E3A3E, - 6E5EC3AD05633214001E3A3E, - 6E5EC3AE05633214001E3A3E, - 6E5EC3AF05633214001E3A3E, - 6E5EC3B005633214001E3A3E, - 6E5EC3B105633214001E3A3E, - 6E5EC3B205633214001E3A3E, - 6E5EC3B305633214001E3A3E, - 6E5EC3B405633214001E3A3E, - 6E5EC3B505633214001E3A3E, - 6E5EC3B605633214001E3A3E, - 6E5EC3B705633214001E3A3E, - 6E5EC3B805633214001E3A3E, - 6E5EC3B905633214001E3A3E, - 6E5EC3BA05633214001E3A3E, - 6E5EC3BB05633214001E3A3E, - 6E5EC3BC05633214001E3A3E, - 6E00EF2B0566EE06001AB46F, - 6E00EF2C0566EE06001AB46F, - 6E00EF2D0566EE06001AB46F, - 6E00EF2E0566EE06001AB46F, - 6E00EF2F0566EE06001AB46F, - 6E00EF300566EE06001AB46F, - 6E00EF310566EE06001AB46F, - 6E9F392A0569DB90007C1A1C, - 6E9F392B0569DB90007C1A1C, - 6E6126E7056B3091006177EC, - 6E6126E8056B3091006177EC, - 6E6126E9056B3091006177EC, - 6E6126EA056B3091006177EC, - 6E6126EB056B3091006177EC, - 6E6126EC056B3091006177EC, - 6E6126ED056B3091006177EC, - 6E6126EE056B3091006177EC, - 6E6126EF056B3091006177EC, - 6E6126F0056B3091006177EC, - 6E6126F1056B3091006177EC, - 6E6126F2056B3091006177EC, - 6E6126F3056B3091006177EC, - 6E6126F4056B3091006177EC, - 6E6126F5056B3091006177EC, - 6E6126F6056B3091006177EC, - 6E6126F7056B3091006177EC, - 6E6126F8056B3091006177EC, - 6E6126F9056B3091006177EC, - 6E6126FA056B3091006177EC, - 6E6126FB056B3091006177EC, - 6E6126FC056B3091006177EC, - 6E6126FD056B3091006177EC, - 6E6126FE056B3091006177EC, - 6E6126FF056B3091006177EC, - 6E612700056B3091006177EC, - 6E612701056B3091006177EC, - 6E612702056B3091006177EC, - 6E612703056B3091006177EC, - 6E612704056B3091006177EC, - 6E612705056B3091006177EC, - 6E612706056B3091006177EC, - 6E612707056B3091006177EC, - 6E612708056B3091006177EC, - 6E612709056B3091006177EC, - 6E61270A056B3091006177EC, - 6E61270B056B3091006177EC, - 6E61270C056B3091006177EC, - 6E61270D056B3091006177EC, - 6E61270E056B3091006177EC, - 6E61270F056B3091006177EC, - 6E612710056B3091006177EC, - 6E612711056B3091006177EC, - 6E612712056B3091006177EC, - 6E612713056B3091006177EC, - 6E612714056B3091006177EC, - 6E51A9120573258100506538, - 6E51A9130573258100506538, - 6E51A9140573258100506538, - 6E51A9150573258100506538, - 6E51A9160573258100506538, - 6E51A9170573258100506538, - 6E51A9180573258100506538, - 6E51A9190573258100506538, - 6E51A91A0573258100506538, - 6E51A91B0573258100506538, - 6E51A91C0573258100506538, - 6E51A91D0573258100506538, - 6E51A91E0573258100506538, - 6E51A91F0573258100506538, - 6E51A9200573258100506538, - 6E51A9210573258100506538, - 6E51A9220573258100506538, - 6E51A9230573258100506538, - 6E51A9240573258100506538, - 6E51A9250573258100506538, - 6E51A9260573258100506538, - 6E51A9270573258100506538, - 6E51A9280573258100506538, - 6E51A9290573258100506538, - 6E51A92A0573258100506538, - 6E51A92B0573258100506538, - 6E51A92C0573258100506538, - 6E51A92D0573258100506538, - 6E51A92E0573258100506538, - 6E51A92F0573258100506538, - 6E51A9300573258100506538, - 6E51A9310573258100506538, - 6E51A9320573258100506538, - 6E51A9330573258100506538, - 6E51A9340573258100506538, - 6E51A9350573258100506538, - 6E51A9360573258100506538, - 6E51A9370573258100506538, - 6E51A9380573258100506538, - 6E51A9390573258100506538, - 6E51A93A0573258100506538, - 6E51A93B0573258100506538, - 6E51A93C0573258100506538, - 6E51A93D0573258100506538, - 6E51A93E0573258100506538, - 6E51A93F0573258100506538, - 6E51A9400573258100506538, - 6E51A9410573258100506538, - 6E51A9420573258100506538, - 6E51A9430573258100506538, - 6E51A9440573258100506538, - 6E51A9450573258100506538, - 6E51A9460573258100506538, - 6E51A9470573258100506538, - 6E51A9480573258100506538, - 6E51A9490573258100506538, - 6E51A94A0573258100506538, - 6E51A94B0573258100506538, - 6E51A94C0573258100506538, - 6E51A94D0573258100506538, - 6E51A94E0573258100506538, - 6E51A94F0573258100506538, - 6E51A9500573258100506538, - 6E51A9510573258100506538, - 6E51A9520573258100506538, - 6E51A9530573258100506538, - 6E51A9540573258100506538, - 6E51A9550573258100506538, - 6E51A9560573258100506538, - 6E51A9570573258100506538, - 6E51A9580573258100506538, - 6E51A9590573258100506538, - 6E51A95A0573258100506538, - 6E51A95B0573258100506538, - 6E51A95C0573258100506538, - 6E51A95D0573258100506538, - 6E51A95E0573258100506538, - 6E51A95F0573258100506538, - 6E51A9600573258100506538, - 6E51A9610573258100506538, - 6E51A9620573258100506538, - 6E51A9630573258100506538, - 6E51A9640573258100506538, - 6E51A9650573258100506538, - 6E51A9660573258100506538, - 6E51A9670573258100506538, + PBXSplitModuleInNavigatorKey = { + Split0 = { + bookmark = 6E1900E8060570B5001883C1; + history = ( + 6E90C09D05FA7EAA00857F22, + 6E90C0DC05FA979F00857F22, + 6E90C16605FAA5FB00857F22, + 6E90C39A05FC0B3600857F22, + 6E8DD55E05FC512600D2C0EA, + 6E8DD56405FC5BD100D2C0EA, + 6E8DD5D705FC5F3500D2C0EA, + 6E8DD5EA05FC607A00D2C0EA, + 6E8DD64605FC674200D2C0EA, + 6E8DD66605FC696100D2C0EA, + 6E8DD68105FC6AF400D2C0EA, + 6E8DD6EA05FC748B00D2C0EA, + 6E8DD70C05FC762900D2C0EA, + 6E8DD71105FC762C00D2C0EA, + 6E8DD71605FC763300D2C0EA, + 6E8DD71B05FC763C00D2C0EA, + 6E8DD74405FC776700D2C0EA, + 6E8DD75305FC778700D2C0EA, + 6E55007005FD2C9D00EE693C, + 6E55007205FD2C9D00EE693C, + 6E55008505FD2CD800EE693C, + 6E6A7F7C05FEDDCB004D2DF3, + 6E6A7F8005FEDDD3004D2DF3, + 6E6A7FAB05FEDEE9004D2DF3, + 6E6A7FD805FEE064004D2DF3, + 6EE811830602584A00F1CD3F, + 6EE811C40602592500F1CD3F, + 6EE811E20602598600F1CD3F, + 6EE811EE060259D600F1CD3F, + 6EE811FD06025A4300F1CD3F, + 6EE8120F06025ABA00F1CD3F, + 6EE8122306025C6300F1CD3F, + 6E8DD76205FC783B00D2C0EA, + 6EE815E40602A97C00F1CD3F, + 6EE815E80602A98100F1CD3F, + 6EE8168C0602B00100F1CD3F, + 6E78A01A06043FA3008F8B51, + ); + prevStack = ( + 6E486275059421D8006D09F8, + 6E486276059421D8006D09F8, + 6E486277059421D8006D09F8, + 6E48627C059421D8006D09F8, + 6E9D6CED059429D400D9A2D7, + 6E8EDFDA05F7DBEE00ED3F4F, + 6E90BB0805F7EC7600857F22, + 6E90BE2A05F86C7800857F22, + 6E90BE4F05F86D1000857F22, + 6E90BE5405F86D3200857F22, + 6E90C09A05FA7EA900857F22, + 6E90C09E05FA7EAA00857F22, + 6E90C16705FAA5FB00857F22, + 6E90C28705FAADF700857F22, + 6E90C35F05FB0DAD00857F22, + 6E90C36C05FC07B100857F22, + 6E8DD58F05FC5D1E00D2C0EA, + 6E8DD65F05FC692500D2C0EA, + 6E8DD68A05FC6B5C00D2C0EA, + 6E8DD6F305FC74F400D2C0EA, + 6E8DD70505FC761C00D2C0EA, + 6E8DD70905FC762000D2C0EA, + 6E8DD71305FC762C00D2C0EA, + 6E8DD71805FC763300D2C0EA, + 6E8DD71C05FC763C00D2C0EA, + 6E55006805FD21B800EE693C, + 6EE811D50602595D00F1CD3F, + 6EE811FF06025A4300F1CD3F, + 6EE8121006025ABA00F1CD3F, + 6EE8122406025C6300F1CD3F, + 6EE81236060274E900F1CD3F, + ); + }; + SplitCount = 1; + }; + }; + PBXProjectWorkspaceModule_GeometryKey_Rev15 = { + PBXProjectWorkspaceModule_SGTM_Geometry = { + _collapsingFrameDimension = 0; + _indexOfCollapsedView = 0; + _percentageOfCollapsedView = 0; + sizes = ( + "{{0, 0}, {233, 869}}", + "{{233, 0}, {1047, 869}}", ); }; - SplitCount = 1; }; - PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {1073, 124}}"; - PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 124}, {1073, 742}}"; - PBXProjectWorkspaceModule_OldSuperviewFrame = "{{207, 0}, {1073, 866}}"; - PBXProjectWorkspaceModule_RunWindowVisible = true; + PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {1047, 233}}"; + PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 233}, {1047, 636}}"; + PBXProjectWorkspaceModule_OldSuperviewFrame = "{{233, 0}, {1047, 869}}"; PBXProjectWorkspaceModule_SGTM = { PBXBottomSmartGroupGIDs = ( 1C37FBAC04509CD000000102, @@ -1027,8 +644,37 @@ 1CC0EA4004350EF90041110B, 1C37FABC05509CD000000102, 1C37FABC05539CD112110102, + E2644B35053B69B200211256, 1C37FABC04509CD000100104, ); + PBXSmartGroupTreeModuleColumnData = { + PBXSmartGroupTreeModuleColumnWidthsKey = ( + 216, + ); + PBXSmartGroupTreeModuleColumnsKey_v4 = ( + MainColumn, + ); + }; + PBXSmartGroupTreeModuleOutlineStateKey_v7 = { + PBXSmartGroupTreeModuleOutlineStateExpansionKey = ( + 2A37F4AAFDCFA73011CA2CEA, + 6E0D40B3052243B800A80003, + 2A37F4ABFDCFA73011CA2CEA, + 6E0D40BF05224F4B00A80003, + 2A37F4AFFDCFA73011CA2CEA, + 2A37F4B8FDCFA73011CA2CEA, + 6E8EE12505F7EA8100ED3F4F, + 1C37FBAC04509CD000000102, + ); + PBXSmartGroupTreeModuleOutlineStateSelectionKey = ( + ( + 42, + 37, + 0, + ), + ); + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey = "{{0, 0}, {216, 851}}"; + }; PBXTopSmartGroupGIDs = ( ); }; @@ -1043,8 +689,8 @@ _percentageOfCollapsedView = 0; isCollapsed = yes; sizes = ( - "{{0, 0}, {491, 167}}", - "{{0, 176}, {491, 267}}", + "{{0, 0}, {365, 167}}", + "{{0, 176}, {365, 267}}", ); }; VerticalSplitView = { @@ -1061,10 +707,12 @@ }; PBXWorkspaceGeometries = ( { - Frame = "{{0, 0}, {1280, 866}}"; + Frame = "{{0, 0}, {1280, 869}}"; PBXProjectWorkspaceModule_GeometryKey_Rev15 = { + PBXProjectWorkspaceModule_DebuggerWindowVisible = true; + PBXProjectWorkspaceModule_RunWindowVisible = true; }; - RubberWindowFrame = "0 94 1280 908 0 0 1280 1002 "; + RubberWindowFrame = "0 91 1280 911 0 0 1280 1002 "; }, ); "PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXBatchFindModule" = { @@ -1119,7 +767,7 @@ DebugConsoleWindowFrame = "{{200, 200}, {500, 300}}"; DebugSTDIOWindowFrame = "{{200, 200}, {500, 300}}"; Frame = "{{0, 0}, {861, 715}}"; - RubberWindowFrame = "385 232 861 757 0 0 1280 1002 "; + RubberWindowFrame = "381 245 861 757 0 0 1280 1002 "; }; "PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXNavigatorGroup" = { Frame = "{{0, 0}, {750, 480}}"; @@ -1127,77 +775,54 @@ }; "PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXProjectFindModule" = { Frame = "{{0, 0}, {634, 488}}"; - RubberWindowFrame = "333 371 634 530 0 0 1280 1002 "; + RubberWindowFrame = "373 471 634 530 0 0 1280 1002 "; }; "PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXProjectWorkspaceModule" = { - Frame = "{{0, 0}, {1280, 886}}"; - PBXProjectWorkspaceModule_GeometryKey_Rev11 = { - PBXProjectWorkspaceModule_SGTM_Geometry = { - _collapsingFrameDimension = 0; - _indexOfCollapsedView = 0; - _percentageOfCollapsedView = 0; - sizes = ( - "{{0, 0}, {207, 866}}", - "{{207, 0}, {1073, 866}}", - ); - }; + Frame = "{{0, 0}, {1280, 869}}"; + PBXProjectWorkspaceModule_GeometryKey_Rev15 = { }; - WindowFrame = "{{0, 54}, {1280, 948}}"; + RubberWindowFrame = "0 91 1280 911 0 0 1280 1002 "; }; "PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXRunSessionModule" = { Frame = "{{0, 0}, {767, 743}}"; PBXModuleWindowStatusBarHidden = YES; - RubberWindowFrame = "502 124 767 764 0 0 1280 1002 "; + RubberWindowFrame = "398 146 767 764 0 0 1280 1002 "; }; - PBXWorkspaceStateSaveDate = 100588994; + PBXWorkspaceStateSaveDate = 101460657; }; perUserProjectItems = { - 6E48626F059421D8006D09F8 = 6E48626F059421D8006D09F8; + 6E1B2CDA060AB14300B6B2F9 = 6E1B2CDA060AB14300B6B2F9; + 6E1B2CDB060AB14300B6B2F9 = 6E1B2CDB060AB14300B6B2F9; + 6E1B2CDC060AB14300B6B2F9 = 6E1B2CDC060AB14300B6B2F9; + 6E1B2CDD060AB14300B6B2F9 = 6E1B2CDD060AB14300B6B2F9; + 6E1B2CDE060AB14300B6B2F9 = 6E1B2CDE060AB14300B6B2F9; + 6E1B2CDF060AB14300B6B2F9 = 6E1B2CDF060AB14300B6B2F9; + 6E1B2CE0060AB14300B6B2F9 = 6E1B2CE0060AB14300B6B2F9; + 6E1B2CE2060AB14300B6B2F9 = 6E1B2CE2060AB14300B6B2F9; + 6E1B2CE9060AB14300B6B2F9 = 6E1B2CE9060AB14300B6B2F9; + 6E1B2CEC060AB14300B6B2F9 = 6E1B2CEC060AB14300B6B2F9; + 6E1B2CED060AB14300B6B2F9 = 6E1B2CED060AB14300B6B2F9; + 6E1B2CFD060AB14300B6B2F9 = 6E1B2CFD060AB14300B6B2F9; + 6E1B2D07060AB14300B6B2F9 = 6E1B2D07060AB14300B6B2F9; + 6E1B2D08060AB14300B6B2F9 = 6E1B2D08060AB14300B6B2F9; + 6E1B2D45060AC5AC00B6B2F9 = 6E1B2D45060AC5AC00B6B2F9; 6E486275059421D8006D09F8 = 6E486275059421D8006D09F8; 6E486276059421D8006D09F8 = 6E486276059421D8006D09F8; 6E486277059421D8006D09F8 = 6E486277059421D8006D09F8; 6E48627C059421D8006D09F8 = 6E48627C059421D8006D09F8; - 6E55006805FD21B800EE693C = 6E55006805FD21B800EE693C; 6E55007005FD2C9D00EE693C = 6E55007005FD2C9D00EE693C; - 6E55007205FD2C9D00EE693C = 6E55007205FD2C9D00EE693C; - 6E55008505FD2CD800EE693C = 6E55008505FD2CD800EE693C; - 6E6A7F7C05FEDDCB004D2DF3 = 6E6A7F7C05FEDDCB004D2DF3; - 6E6A7F7D05FEDDCB004D2DF3 = 6E6A7F7D05FEDDCB004D2DF3; 6E6A7F8005FEDDD3004D2DF3 = 6E6A7F8005FEDDD3004D2DF3; - 6E6A7F8105FEDDD3004D2DF3 = 6E6A7F8105FEDDD3004D2DF3; - 6E6A7F8505FEDDEC004D2DF3 = 6E6A7F8505FEDDEC004D2DF3; - 6E6A7F8905FEDE21004D2DF3 = 6E6A7F8905FEDE21004D2DF3; - 6E6A7F8D05FEDE27004D2DF3 = 6E6A7F8D05FEDE27004D2DF3; - 6E6A7F9105FEDE33004D2DF3 = 6E6A7F9105FEDE33004D2DF3; - 6E6A7F9505FEDE35004D2DF3 = 6E6A7F9505FEDE35004D2DF3; - 6E6A7F9905FEDE6A004D2DF3 = 6E6A7F9905FEDE6A004D2DF3; - 6E6A7FA105FEDEB7004D2DF3 = 6E6A7FA105FEDEB7004D2DF3; - 6E6A7FA505FEDEDD004D2DF3 = 6E6A7FA505FEDEDD004D2DF3; 6E6A7FAB05FEDEE9004D2DF3 = 6E6A7FAB05FEDEE9004D2DF3; - 6E6A7FB505FEDF13004D2DF3 = 6E6A7FB505FEDF13004D2DF3; - 6E6A7FB605FEDF13004D2DF3 = 6E6A7FB605FEDF13004D2DF3; - 6E6A7FCC05FEE038004D2DF3 = 6E6A7FCC05FEE038004D2DF3; - 6E6A7FCD05FEE038004D2DF3 = 6E6A7FCD05FEE038004D2DF3; - 6E6A7FD105FEE047004D2DF3 = 6E6A7FD105FEE047004D2DF3; - 6E6A7FD405FEE053004D2DF3 = 6E6A7FD405FEE053004D2DF3; - 6E6A7FD505FEE053004D2DF3 = 6E6A7FD505FEE053004D2DF3; 6E6A7FD805FEE064004D2DF3 = 6E6A7FD805FEE064004D2DF3; - 6E6A7FD905FEE064004D2DF3 = 6E6A7FD905FEE064004D2DF3; - 6E6A7FDC05FEED08004D2DF3 = 6E6A7FDC05FEED08004D2DF3; 6E8DD55E05FC512600D2C0EA = 6E8DD55E05FC512600D2C0EA; 6E8DD56405FC5BD100D2C0EA = 6E8DD56405FC5BD100D2C0EA; 6E8DD58F05FC5D1E00D2C0EA = 6E8DD58F05FC5D1E00D2C0EA; - 6E8DD5D705FC5F3500D2C0EA = 6E8DD5D705FC5F3500D2C0EA; - 6E8DD5E305FC605F00D2C0EA = 6E8DD5E305FC605F00D2C0EA; 6E8DD5EA05FC607A00D2C0EA = 6E8DD5EA05FC607A00D2C0EA; 6E8DD64605FC674200D2C0EA = 6E8DD64605FC674200D2C0EA; 6E8DD65F05FC692500D2C0EA = 6E8DD65F05FC692500D2C0EA; 6E8DD66605FC696100D2C0EA = 6E8DD66605FC696100D2C0EA; - 6E8DD66A05FC696500D2C0EA = 6E8DD66A05FC696500D2C0EA; 6E8DD68105FC6AF400D2C0EA = 6E8DD68105FC6AF400D2C0EA; 6E8DD68A05FC6B5C00D2C0EA = 6E8DD68A05FC6B5C00D2C0EA; - 6E8DD6CB05FC701300D2C0EA = 6E8DD6CB05FC701300D2C0EA; - 6E8DD6CF05FC709E00D2C0EA = 6E8DD6CF05FC709E00D2C0EA; 6E8DD6EA05FC748B00D2C0EA = 6E8DD6EA05FC748B00D2C0EA; 6E8DD6F305FC74F400D2C0EA = 6E8DD6F305FC74F400D2C0EA; 6E8DD70505FC761C00D2C0EA = 6E8DD70505FC761C00D2C0EA; @@ -1209,7 +834,6 @@ 6E8DD71805FC763300D2C0EA = 6E8DD71805FC763300D2C0EA; 6E8DD71B05FC763C00D2C0EA = 6E8DD71B05FC763C00D2C0EA; 6E8DD71C05FC763C00D2C0EA = 6E8DD71C05FC763C00D2C0EA; - 6E8DD74405FC776700D2C0EA = 6E8DD74405FC776700D2C0EA; 6E8DD75305FC778700D2C0EA = 6E8DD75305FC778700D2C0EA; 6E8DD76205FC783B00D2C0EA = 6E8DD76205FC783B00D2C0EA; 6E8EDFDA05F7DBEE00ED3F4F = 6E8EDFDA05F7DBEE00ED3F4F; @@ -1227,7 +851,28 @@ 6E90C35F05FB0DAD00857F22 = 6E90C35F05FB0DAD00857F22; 6E90C36C05FC07B100857F22 = 6E90C36C05FC07B100857F22; 6E90C39A05FC0B3600857F22 = 6E90C39A05FC0B3600857F22; + 6E976BD3060BC2AB00FDABB0 = 6E976BD3060BC2AB00FDABB0; + 6E976BD4060BC2AB00FDABB0 = 6E976BD4060BC2AB00FDABB0; 6E9D6CED059429D400D9A2D7 = 6E9D6CED059429D400D9A2D7; + 6EE811830602584A00F1CD3F = 6EE811830602584A00F1CD3F; + 6EE811C40602592500F1CD3F = 6EE811C40602592500F1CD3F; + 6EE811D50602595D00F1CD3F = 6EE811D50602595D00F1CD3F; + 6EE811EE060259D600F1CD3F = 6EE811EE060259D600F1CD3F; + 6EE811FD06025A4300F1CD3F = 6EE811FD06025A4300F1CD3F; + 6EE811FF06025A4300F1CD3F = 6EE811FF06025A4300F1CD3F; + 6EE8120F06025ABA00F1CD3F = 6EE8120F06025ABA00F1CD3F; + 6EE8121006025ABA00F1CD3F = 6EE8121006025ABA00F1CD3F; + 6EE8122306025C6300F1CD3F = 6EE8122306025C6300F1CD3F; + 6EE8122406025C6300F1CD3F = 6EE8122406025C6300F1CD3F; + 6EE81236060274E900F1CD3F = 6EE81236060274E900F1CD3F; + 6EE815E40602A97C00F1CD3F = 6EE815E40602A97C00F1CD3F; + 6EF4D0B9060C2CF300F4728B = 6EF4D0B9060C2CF300F4728B; + 6EF4D0BA060C2CF300F4728B = 6EF4D0BA060C2CF300F4728B; + 6EF4D0BB060C2CF300F4728B = 6EF4D0BB060C2CF300F4728B; + 6EF4D0BC060C2CF300F4728B = 6EF4D0BC060C2CF300F4728B; + 6EF4D0BD060C2CF300F4728B = 6EF4D0BD060C2CF300F4728B; + 6EF4D0BE060C2CF300F4728B = 6EF4D0BE060C2CF300F4728B; + 6EF4D0BF060C2CF300F4728B = 6EF4D0BF060C2CF300F4728B; }; sourceControlManager = 6EAD5EEA054C3932005761EE; userBuildSettings = { @@ -1235,24 +880,24 @@ }; 2A37F4ACFDCFA73011CA2CEA = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {2309, 29535}}"; - sepNavSelRange = "{37074, 0}"; - sepNavVisRect = "{{0, 25042}, {1002, 621}}"; + sepNavIntBoundsRect = "{{0, 0}, {2309, 29919}}"; + sepNavSelRange = "{23043, 0}"; + sepNavVisRect = "{{0, 14084}, {1002, 712}}"; sepNavWindowFrame = "{{15, 439}, {750, 558}}"; }; }; 2A37F4AEFDCFA73011CA2CEA = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 3216}}"; - sepNavSelRange = "{1020, 0}"; - sepNavVisRect = "{{0, 842}, {1002, 587}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 3232}}"; + sepNavSelRange = "{3017, 0}"; + sepNavVisRect = "{{0, 663}, {1002, 712}}"; }; }; 2A37F4B0FDCFA73011CA2CEA = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 408}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {1034, 408}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 594}}"; + sepNavSelRange = "{363, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 594}}"; }; }; 2A37F4B7FDCFA73011CA2CEA = { @@ -1262,9 +907,9 @@ }; 32DBCF750370BD2300C91783 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 408}}"; - sepNavSelRange = "{238, 0}"; - sepNavVisRect = "{{0, 0}, {1034, 408}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 616}}"; + sepNavSelRange = "{162, 8}"; + sepNavVisRect = "{{0, 0}, {1002, 616}}"; }; }; 6E0BDF7D0511568D00A80003 = { @@ -1276,37 +921,37 @@ }; 6E0D40AC05223CCE00A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 784}}"; - sepNavSelRange = "{778, 9}"; - sepNavVisRect = "{{0, 133}, {1002, 587}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 800}}"; + sepNavSelRange = "{256, 0}"; + sepNavVisRect = "{{0, 92}, {1002, 616}}"; }; }; 6E0D40AD05223CCE00A80003 = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1002, 2960}}"; sepNavSelRange = "{1743, 0}"; - sepNavVisRect = "{{0, 963}, {1002, 587}}"; + sepNavVisRect = "{{0, 959}, {1002, 594}}"; }; }; 6E0D40B4052243D500A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 720}}"; - sepNavSelRange = "{914, 28}"; - sepNavVisRect = "{{0, 99}, {1002, 621}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 736}}"; + sepNavSelRange = "{362, 0}"; + sepNavVisRect = "{{0, 104}, {1002, 616}}"; }; }; 6E0D40B5052243D500A80003 = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1133, 1872}}"; sepNavSelRange = "{1682, 0}"; - sepNavVisRect = "{{0, 1022}, {1002, 621}}"; + sepNavVisRect = "{{0, 1002}, {1002, 616}}"; }; }; 6E0D40B80522449500A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 710}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {1034, 710}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 656}}"; + sepNavSelRange = "{355, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 616}}"; }; }; 6E0D40B90522449500A80003 = { @@ -1346,48 +991,220 @@ }; 6E146B11051FA42C00A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 641}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {1034, 641}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 616}}"; + sepNavSelRange = "{353, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 616}}"; }; }; 6E146B12051FA42C00A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1053, 3680}}"; - sepNavSelRange = "{3384, 0}"; - sepNavVisRect = "{{0, 2089}, {1053, 631}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 3680}}"; + sepNavSelRange = "{424, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 616}}"; }; }; + 6E1B2CDA060AB14300B6B2F9 = { + fRef = 6E71F41B051BCCC600A80003; + isa = PBXTextBookmark; + name = "cheat_globals.h: 23"; + rLen = 0; + rLoc = 688; + rType = 0; + vrLen = 1265; + vrLoc = 106; + }; + 6E1B2CDB060AB14300B6B2F9 = { + fRef = 6E3F0D01050D4ACC00A80003; + isa = PBXTextBookmark; + name = "cheat_net.h: 29"; + rLen = 0; + rLoc = 725; + rType = 0; + vrLen = 832; + vrLoc = 0; + }; + 6E1B2CDC060AB14300B6B2F9 = { + fRef = 6E3F0D02050D4ACC00A80003; + isa = PBXTextBookmark; + name = "int SendBuffer( int sockfd, char const *buffer, int *length )\n"; + rLen = 62; + rLoc = 1498; + rType = 0; + vrLen = 520; + vrLoc = 1378; + }; + 6E1B2CDD060AB14300B6B2F9 = { + fRef = 6E4E098F050BB21400A80003; + isa = PBXTextBookmark; + name = "CheatServer.h: maxSearchResultsAmount"; + rLen = 0; + rLoc = 884; + rType = 0; + vrLen = 681; + vrLoc = 438; + }; + 6E1B2CDE060AB14300B6B2F9 = { + fRef = 2A37F4B0FDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "main.m: 14"; + rLen = 0; + rLoc = 363; + rType = 0; + vrLen = 477; + vrLoc = 0; + }; + 6E1B2CDF060AB14300B6B2F9 = { + fRef = 6E1B2D18060AB14400B6B2F9; + isa = PBXTextBookmark; + name = "(null): 26"; + rLen = 0; + rLoc = 530; + rType = 0; + vrLen = 1163; + vrLoc = 0; + }; + 6E1B2CE0060AB14300B6B2F9 = { + fRef = 6E1B2D17060AB14400B6B2F9; + isa = PBXTextBookmark; + name = "(null): 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 390; + vrLoc = 0; + }; + 6E1B2CE2060AB14300B6B2F9 = { + fRef = 6E0D40AD05223CCE00A80003; + isa = PBXTextBookmark; + name = "NetTrafficController.m: 79"; + rLen = 0; + rLoc = 1743; + rType = 0; + vrLen = 885; + vrLoc = 1326; + }; + 6E1B2CE9060AB14300B6B2F9 = { + fRef = 6E3F0D01050D4ACC00A80003; + isa = PBXTextBookmark; + name = "cheat_net.h: 14"; + rLen = 0; + rLoc = 370; + rType = 0; + vrLen = 816; + vrLoc = 0; + }; + 6E1B2CEC060AB14300B6B2F9 = { + fRef = 6E4E098E050BB21400A80003; + isa = PBXTextBookmark; + name = SendBuffer; + rLen = 10; + rLoc = 31880; + rType = 0; + vrLen = 1001; + vrLoc = 30972; + }; + 6E1B2CED060AB14300B6B2F9 = { + fRef = 6E3F0D02050D4ACC00A80003; + isa = PBXTextBookmark; + name = "int SendBuffer( int sockfd, char const *buffer, int *length )\n"; + rLen = 62; + rLoc = 1498; + rType = 0; + vrLen = 520; + vrLoc = 1378; + }; + 6E1B2CFD060AB14300B6B2F9 = { + fRef = 2A37F4B0FDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "main.m: 14"; + rLen = 0; + rLoc = 363; + rType = 0; + vrLen = 477; + vrLoc = 0; + }; + 6E1B2D07060AB14300B6B2F9 = { + fRef = 6E1B2D16060AB14400B6B2F9; + isa = PBXTextBookmark; + name = "(null): 26"; + rLen = 0; + rLoc = 530; + rType = 0; + vrLen = 1163; + vrLoc = 0; + }; + 6E1B2D08060AB14300B6B2F9 = { + fRef = 6E1B2D1A060AB14400B6B2F9; + isa = PBXTextBookmark; + name = "(null): 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 390; + vrLoc = 0; + }; + 6E1B2D16060AB14400B6B2F9 = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CMUpdateCheck.h; + path = /Users/chaz/Projects/Chaz/build/Chaz.framework/Versions/A/Headers/CMUpdateCheck.h; + refType = 0; + sourceTree = ""; + }; + 6E1B2D17060AB14400B6B2F9 = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CMStatusView.h; + path = /Users/chaz/Projects/Chaz/build/Chaz.framework/Versions/A/Headers/CMStatusView.h; + refType = 0; + sourceTree = ""; + }; + 6E1B2D18060AB14400B6B2F9 = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CMUpdateCheck.h; + path = /Users/chaz/Projects/Chaz/build/Chaz.framework/Versions/A/Headers/CMUpdateCheck.h; + refType = 0; + sourceTree = ""; + }; + 6E1B2D1A060AB14400B6B2F9 = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CMStatusView.h; + path = /Users/chaz/Projects/Chaz/build/Chaz.framework/Versions/A/Headers/CMStatusView.h; + refType = 0; + sourceTree = ""; + }; + 6E1B2D45060AC5AC00B6B2F9 = { + fRef = 6E4E098E050BB21400A80003; + isa = PBXTextBookmark; + name = "CheatServer.m: 1564"; + rLen = 0; + rLoc = 37370; + rType = 0; + vrLen = 635; + vrLoc = 37133; + }; 6E3F0D01050D4ACC00A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 799}}"; - sepNavSelRange = "{327, 21}"; - sepNavVisRect = "{{0, 0}, {1034, 302}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 831}}"; + sepNavSelRange = "{725, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 594}}"; }; }; 6E3F0D02050D4ACC00A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1059, 1808}}"; - sepNavSelRange = "{1627, 0}"; - sepNavVisRect = "{{0, 952}, {1059, 536}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 1808}}"; + sepNavSelRange = "{1498, 62}"; + sepNavVisRect = "{{0, 939}, {1002, 594}}"; }; }; - 6E48626F059421D8006D09F8 = { - fRef = 6E146B12051FA42C00A80003; - isa = PBXTextBookmark; - name = "CheatClient.m: 149"; - rLen = 0; - rLoc = 3384; - rType = 0; - vrLen = 894; - vrLoc = 3020; - }; 6E486275059421D8006D09F8 = { fRef = 6E4E098C050BB21400A80003; isa = PBXTextBookmark; name = "AppController.h: launchWebsiteMenu:"; rLen = 0; - rLoc = 1550; + rLoc = 1572; rType = 0; vrLen = 986; vrLoc = 516; @@ -1417,52 +1234,52 @@ isa = PBXTextBookmark; name = "CheatClient.m: 149"; rLen = 0; - rLoc = 3384; + rLoc = 3391; rType = 0; vrLen = 894; vrLoc = 3020; }; 6E4E098C050BB21400A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 1024}}"; - sepNavSelRange = "{1429, 39}"; - sepNavVisRect = "{{0, 437}, {1002, 587}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 1072}}"; + sepNavSelRange = "{1308, 0}"; + sepNavVisRect = "{{0, 440}, {1002, 611}}"; }; }; 6E4E098D050BB21400A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1063, 8144}}"; - sepNavSelRange = "{5742, 0}"; - sepNavVisRect = "{{0, 3138}, {1002, 621}}"; + sepNavIntBoundsRect = "{{0, 0}, {1063, 8784}}"; + sepNavSelRange = "{1035, 0}"; + sepNavVisRect = "{{0, 447}, {1002, 594}}"; }; }; 6E4E098E050BB21400A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1287, 33680}}"; - sepNavSelRange = "{18387, 0}"; - sepNavVisRect = "{{0, 11684}, {1002, 834}}"; + sepNavIntBoundsRect = "{{0, 0}, {1287, 33760}}"; + sepNavSelRange = "{37370, 0}"; + sepNavVisRect = "{{0, 24832}, {1002, 589}}"; sepNavWindowFrame = "{{0, 51}, {1280, 951}}"; }; }; 6E4E098F050BB21400A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 1695}}"; - sepNavSelRange = "{834, 22}"; - sepNavVisRect = "{{0, 309}, {1002, 587}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 1711}}"; + sepNavSelRange = "{884, 0}"; + sepNavVisRect = "{{0, 288}, {1002, 594}}"; }; }; 6E51A97C0573304C00506538 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 587}}"; - sepNavSelRange = "{459, 0}"; - sepNavVisRect = "{{0, 0}, {1002, 587}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 616}}"; + sepNavSelRange = "{335, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 616}}"; }; }; 6E51A97D0573304C00506538 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 703}}"; - sepNavSelRange = "{655, 0}"; - sepNavVisRect = "{{0, 101}, {1002, 592}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 671}}"; + sepNavSelRange = "{372, 0}"; + sepNavVisRect = "{{0, 55}, {1002, 616}}"; }; }; 6E51A986057330B900506538 = { @@ -1479,16 +1296,6 @@ sepNavVisRect = "{{0, 0}, {1002, 587}}"; }; }; - 6E55006805FD21B800EE693C = { - fRef = 6E4E098E050BB21400A80003; - isa = PBXTextBookmark; - name = vm_read_overwrite; - rLen = 17; - rLoc = 18241; - rType = 0; - vrLen = 1417; - vrLoc = 17209; - }; 6E55007005FD2C9D00EE693C = { fRef = 6E55007605FD2CAE00EE693C; isa = PBXTextBookmark; @@ -1499,16 +1306,6 @@ vrLen = 843; vrLoc = 2681; }; - 6E55007205FD2C9D00EE693C = { - fRef = 6E4E098E050BB21400A80003; - isa = PBXTextBookmark; - name = "CheatServer.m: 759"; - rLen = 0; - rLoc = 18387; - rType = 0; - vrLen = 1273; - vrLoc = 17613; - }; 6E55007605FD2CAE00EE693C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; @@ -1517,36 +1314,6 @@ refType = 0; sourceTree = ""; }; - 6E55008505FD2CD800EE693C = { - fRef = 089C1660FE840EACC02AAC07; - isa = PBXTextBookmark; - name = "English: 4"; - rLen = 0; - rLoc = 110; - rType = 0; - vrLen = 207; - vrLoc = 0; - }; - 6E6A7F7C05FEDDCB004D2DF3 = { - fRef = 6EF8EC08055A1730008BBE46; - isa = PBXTextBookmark; - name = "Info-The_Cheat.plist: 21"; - rLen = 0; - rLoc = 613; - rType = 0; - vrLen = 1174; - vrLoc = 0; - }; - 6E6A7F7D05FEDDCB004D2DF3 = { - fRef = 6EF8EC08055A1730008BBE46; - isa = PBXTextBookmark; - name = "Info-The_Cheat.plist: 21"; - rLen = 0; - rLoc = 613; - rType = 0; - vrLen = 1174; - vrLoc = 0; - }; 6E6A7F8005FEDDD3004D2DF3 = { fRef = 6E0D40C405225DA100A80003; isa = PBXTextBookmark; @@ -1557,96 +1324,6 @@ vrLen = 695; vrLoc = 0; }; - 6E6A7F8105FEDDD3004D2DF3 = { - fRef = 6E0D40C405225DA100A80003; - isa = PBXTextBookmark; - name = "- (void)preferenceSetWindowsOnTop:(BOOL)windowsOnTop;"; - rLen = 53; - rLoc = 377; - rType = 0; - vrLen = 695; - vrLoc = 0; - }; - 6E6A7F8505FEDDEC004D2DF3 = { - fRef = 6E4E098D050BB21400A80003; - isa = PBXTextBookmark; - name = "- (void)preferenceSetWindowsOnTop:(BOOL)windowsOnTop\n"; - rLen = 53; - rLoc = 5508; - rType = 0; - vrLen = 1359; - vrLoc = 5209; - }; - 6E6A7F8905FEDE21004D2DF3 = { - fRef = 6E0D40B5052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.m: 61"; - rLen = 0; - rLoc = 1499; - rType = 0; - vrLen = 1401; - vrLoc = 0; - }; - 6E6A7F8D05FEDE27004D2DF3 = { - fRef = 6E0D40B4052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.h: interfaceUpdate"; - rLen = 0; - rLoc = 849; - rType = 0; - vrLen = 979; - vrLoc = 0; - }; - 6E6A7F9105FEDE33004D2DF3 = { - fRef = 6E0D40B5052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.m: 61"; - rLen = 0; - rLoc = 1499; - rType = 0; - vrLen = 1740; - vrLoc = 1497; - }; - 6E6A7F9505FEDE35004D2DF3 = { - fRef = 6E0D40B4052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.h: interfaceUpdate"; - rLen = 0; - rLoc = 849; - rType = 0; - vrLen = 979; - vrLoc = 0; - }; - 6E6A7F9905FEDE6A004D2DF3 = { - fRef = 6E4E098D050BB21400A80003; - isa = PBXTextBookmark; - name = "AppController.m: 219"; - rLen = 0; - rLoc = 5613; - rType = 0; - vrLen = 1406; - vrLoc = 5191; - }; - 6E6A7FA105FEDEB7004D2DF3 = { - fRef = 6E0D40B5052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.m: 61"; - rLen = 0; - rLoc = 1499; - rType = 0; - vrLen = 1740; - vrLoc = 1497; - }; - 6E6A7FA505FEDEDD004D2DF3 = { - fRef = 6E4E098D050BB21400A80003; - isa = PBXTextBookmark; - name = "AppController.m: 216"; - rLen = 0; - rLoc = 5564; - rType = 0; - vrLen = 1413; - vrLoc = 5191; - }; 6E6A7FAB05FEDEE9004D2DF3 = { fRef = 6E6A7FB105FEDEF5004D2DF3; isa = PBXTextBookmark; @@ -1659,123 +1336,34 @@ }; 6E6A7FB105FEDEF5004D2DF3 = { isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; name = NSNotification.h; path = /Developer/SDKs/MacOSX10.2.7.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSNotification.h; refType = 0; sourceTree = ""; }; - 6E6A7FB505FEDF13004D2DF3 = { - fRef = 2A37F4ACFDCFA73011CA2CEA; - isa = PBXTextBookmark; - name = "MyDocument.m: 1585"; - rLen = 0; - rLoc = 37074; - rType = 0; - vrLen = 1532; - vrLoc = 36221; - }; - 6E6A7FB605FEDF13004D2DF3 = { - fRef = 2A37F4ACFDCFA73011CA2CEA; - isa = PBXTextBookmark; - name = "MyDocument.m: 1585"; - rLen = 0; - rLoc = 37074; - rType = 0; - vrLen = 1532; - vrLoc = 36221; - }; - 6E6A7FCC05FEE038004D2DF3 = { - fRef = 6E4E098D050BB21400A80003; - isa = PBXTextBookmark; - name = "AppController.m: 218"; - rLen = 0; - rLoc = 5742; - rType = 0; - vrLen = 1032; - vrLoc = 5079; - }; - 6E6A7FCD05FEE038004D2DF3 = { - fRef = 6E4E098D050BB21400A80003; - isa = PBXTextBookmark; - name = "AppController.m: 218"; - rLen = 0; - rLoc = 5742; - rType = 0; - vrLen = 1032; - vrLoc = 5079; - }; - 6E6A7FD105FEE047004D2DF3 = { - fRef = 6E0D40B4052243D500A80003; - isa = PBXTextBookmark; - name = "- (IBAction)apply:(id)sender"; - rLen = 28; - rLoc = 914; - rType = 0; - vrLen = 896; - vrLoc = 109; - }; - 6E6A7FD405FEE053004D2DF3 = { - fRef = 6E0D40B5052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.m: 76"; - rLen = 0; - rLoc = 1660; - rType = 0; - vrLen = 810; - vrLoc = 1413; - }; - 6E6A7FD505FEE053004D2DF3 = { - fRef = 6E0D40B5052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.m: 76"; - rLen = 0; - rLoc = 1660; - rType = 0; - vrLen = 810; - vrLoc = 1413; - }; 6E6A7FD805FEE064004D2DF3 = { fRef = 6E0D40B4052243D500A80003; isa = PBXTextBookmark; name = "- (IBAction)apply:(id)sender"; rLen = 28; - rLoc = 914; + rLoc = 936; rType = 0; vrLen = 834; vrLoc = 176; }; - 6E6A7FD905FEE064004D2DF3 = { - fRef = 6E0D40B4052243D500A80003; - isa = PBXTextBookmark; - name = "- (IBAction)apply:(id)sender"; - rLen = 28; - rLoc = 914; - rType = 0; - vrLen = 834; - vrLoc = 176; - }; - 6E6A7FDC05FEED08004D2DF3 = { - fRef = 6E0D40B5052243D500A80003; - isa = PBXTextBookmark; - name = "PreferenceController.m: 76"; - rLen = 0; - rLoc = 1682; - rType = 0; - vrLen = 1605; - vrLoc = 1531; - }; 6E71F41B051BCCC600A80003 = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1002, 719}}"; - sepNavSelRange = "{424, 0}"; - sepNavVisRect = "{{0, 96}, {1002, 587}}"; + sepNavSelRange = "{688, 0}"; + sepNavVisRect = "{{0, 63}, {1002, 594}}"; }; }; 6E71F41C051BCCC600A80003 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 587}}"; - sepNavSelRange = "{1093, 19}"; - sepNavVisRect = "{{0, 0}, {1002, 587}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 616}}"; + sepNavSelRange = "{405, 20}"; + sepNavVisRect = "{{0, 0}, {1002, 616}}"; }; }; 6E8DD55E05FC512600D2C0EA = { @@ -1803,31 +1391,11 @@ isa = PBXTextBookmark; name = "MyDocument.h: maxSearchResultsAmount"; rLen = 0; - rLoc = 1020; + rLoc = 1041; rType = 0; vrLen = 850; vrLoc = 576; }; - 6E8DD5D705FC5F3500D2C0EA = { - fRef = 6E4E098F050BB21400A80003; - isa = PBXTextBookmark; - name = maxSearchResultsAmount; - rLen = 22; - rLoc = 834; - rType = 0; - vrLen = 685; - vrLoc = 444; - }; - 6E8DD5E305FC605F00D2C0EA = { - fRef = 2A37F4AEFDCFA73011CA2CEA; - isa = PBXTextBookmark; - name = "MyDocument.h: maxSearchResultsAmount"; - rLen = 0; - rLoc = 1020; - rType = 0; - vrLen = 1195; - vrLoc = 1147; - }; 6E8DD5EA05FC607A00D2C0EA = { fRef = 6E8DD5EF05FC609800D2C0EA; isa = PBXTextBookmark; @@ -1879,21 +1447,11 @@ isa = PBXTextBookmark; name = "AboutBoxController.h: nameVersionText"; rLen = 0; - rLoc = 459; + rLoc = 476; rType = 0; vrLen = 573; vrLoc = 0; }; - 6E8DD66A05FC696500D2C0EA = { - fRef = 6E4E098C050BB21400A80003; - isa = PBXTextBookmark; - name = "- (IBAction)launchEmailMenu:(id)sender;"; - rLen = 39; - rLoc = 1429; - rType = 0; - vrLen = 880; - vrLoc = 702; - }; 6E8DD68105FC6AF400D2C0EA = { fRef = 6E8DD68505FC6B1200D2C0EA; isa = PBXTextBookmark; @@ -1919,28 +1477,8 @@ rLen = 0; rLoc = 3248; rType = 0; - vrLen = 1597; - vrLoc = 3780; - }; - 6E8DD6CB05FC701300D2C0EA = { - fRef = 6E71F41C051BCCC600A80003; - isa = PBXTextBookmark; - name = TCHitsDisplayedPref; - rLen = 19; - rLoc = 1093; - rType = 0; - vrLen = 1138; - vrLoc = 0; - }; - 6E8DD6CF05FC709E00D2C0EA = { - fRef = 6E71F41B051BCCC600A80003; - isa = PBXTextBookmark; - name = "cheat_globals.h: TCDefaultListenPort"; - rLen = 0; - rLoc = 424; - rType = 0; - vrLen = 1210; - vrLoc = 169; + vrLen = 0; + vrLoc = 3290; }; 6E8DD6EA05FC748B00D2C0EA = { fRef = 6E8DD6ED05FC74A900D2C0EA; @@ -1965,7 +1503,7 @@ isa = PBXTextBookmark; name = broadcastWithName; rLen = 17; - rLoc = 2520; + rLoc = 2917; rType = 0; vrLen = 1300; vrLoc = 1648; @@ -2060,22 +1598,12 @@ vrLen = 530; vrLoc = 0; }; - 6E8DD74405FC776700D2C0EA = { - fRef = 6E0D40AD05223CCE00A80003; - isa = PBXTextBookmark; - name = "NetTrafficController.m: 79"; - rLen = 0; - rLoc = 1743; - rType = 0; - vrLen = 876; - vrLoc = 1329; - }; 6E8DD75305FC778700D2C0EA = { fRef = 6E0D40AC05223CCE00A80003; isa = PBXTextBookmark; name = serverSet; rLen = 9; - rLoc = 778; + rLoc = 800; rType = 0; vrLen = 832; vrLoc = 235; @@ -2101,7 +1629,7 @@ name = " "; rLen = 1; - rLoc = 1090; + rLoc = 1118; rType = 0; vrLen = 727; vrLoc = 0; @@ -2111,7 +1639,7 @@ isa = PBXTextBookmark; name = "cheat_globals.m: TCGlobalUpdateAutomatically"; rLen = 0; - rLoc = 620; + rLoc = 619; rType = 0; vrLen = 994; vrLoc = 0; @@ -2131,9 +1659,9 @@ isa = PBXTextBookmark; name = "PreferenceController.h: updateAutomaticallyButton"; rLen = 0; - rLoc = 613; + rLoc = 635; rType = 0; - vrLen = 974; + vrLen = 904; vrLoc = 106; }; 6E90C09A05FA7EA900857F22 = { @@ -2215,7 +1743,7 @@ isa = PBXTextBookmark; name = "AboutBoxController.m: 20"; rLen = 0; - rLoc = 456; + rLoc = 424; rType = 0; vrLen = 656; vrLoc = 0; @@ -2225,7 +1753,7 @@ isa = PBXTextBookmark; name = "AboutBoxController.h: aboutWindow"; rLen = 0; - rLoc = 414; + rLoc = 431; rType = 0; vrLen = 533; vrLoc = 0; @@ -2235,11 +1763,31 @@ isa = PBXTextBookmark; name = "AboutBoxController.m: 28"; rLen = 0; - rLoc = 655; + rLoc = 623; rType = 0; vrLen = 646; vrLoc = 174; }; + 6E976BD3060BC2AB00FDABB0 = { + fRef = 6E4E098D050BB21400A80003; + isa = PBXTextBookmark; + name = "AppController.m: 41"; + rLen = 0; + rLoc = 1033; + rType = 0; + vrLen = 1865; + vrLoc = 569; + }; + 6E976BD4060BC2AB00FDABB0 = { + fRef = 089C1660FE840EACC02AAC07; + isa = PBXTextBookmark; + name = "English: 4"; + rLen = 0; + rLoc = 110; + rType = 0; + vrLen = 207; + vrLoc = 0; + }; 6E9D6CED059429D400D9A2D7 = { fRef = 089C1660FE840EACC02AAC07; isa = PBXTextBookmark; @@ -2291,12 +1839,250 @@ sepNavVisRect = "{{0, 0}, {1034, 710}}"; }; }; + 6EE811830602584A00F1CD3F = { + fRef = 6E0D40B5052243D500A80003; + isa = PBXTextBookmark; + name = "PreferenceController.m: 76"; + rLen = 0; + rLoc = 1682; + rType = 0; + vrLen = 1634; + vrLoc = 1501; + }; + 6EE811C40602592500F1CD3F = { + fRef = 6E71F41C051BCCC600A80003; + isa = PBXTextBookmark; + name = TCGlobalSessionCount; + rLen = 20; + rLoc = 405; + rType = 0; + vrLen = 1137; + vrLoc = 0; + }; + 6EE811D50602595D00F1CD3F = { + fRef = 2A37F4ACFDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "SessionController.m: 53"; + rLen = 0; + rLoc = 1477; + rType = 0; + vrLen = 882; + vrLoc = 1117; + }; + 6EE811EE060259D600F1CD3F = { + fRef = 6E146B12051FA42C00A80003; + isa = PBXTextBookmark; + name = "CheatClient.m: clientWithDelegate:server:name:"; + rLen = 0; + rLoc = 424; + rType = 0; + vrLen = 1237; + vrLoc = 0; + }; + 6EE811FD06025A4300F1CD3F = { + fRef = 6EE8120606025A6E00F1CD3F; + isa = PBXTextBookmark; + name = "(null): 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 658; + vrLoc = 0; + }; + 6EE811FF06025A4300F1CD3F = { + fRef = 6EE8120806025A6E00F1CD3F; + isa = PBXTextBookmark; + name = "(null): 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 658; + vrLoc = 0; + }; + 6EE8120606025A6E00F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = AboutBoxController.m; + path = "/Users/chaz/Projects/The Cheat/AboutBoxController.m"; + refType = 0; + sourceTree = ""; + }; + 6EE8120806025A6E00F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = AboutBoxController.m; + path = "/Users/chaz/Projects/The Cheat/AboutBoxController.m"; + refType = 0; + sourceTree = ""; + }; + 6EE8120F06025ABA00F1CD3F = { + fRef = 6EE8121206025AD800F1CD3F; + isa = PBXTextBookmark; + name = "\n/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\n#pragma mark Accessors\n/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/"; + rLen = 269; + rLoc = 13432; + rType = 0; + vrLen = 1093; + vrLoc = 12661; + }; + 6EE8121006025ABA00F1CD3F = { + fRef = 6EE8121406025AD800F1CD3F; + isa = PBXTextBookmark; + name = "\n/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\n#pragma mark Accessors\n/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/"; + rLen = 269; + rLoc = 13432; + rType = 0; + vrLen = 1093; + vrLoc = 12661; + }; + 6EE8121206025AD800F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = AppController.m; + path = "/Users/chaz/Projects/The Cheat/AppController.m"; + refType = 0; + sourceTree = ""; + }; + 6EE8121406025AD800F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = AppController.m; + path = "/Users/chaz/Projects/The Cheat/AppController.m"; + refType = 0; + sourceTree = ""; + }; + 6EE8122306025C6300F1CD3F = { + fRef = 6EE8122606025C8100F1CD3F; + isa = PBXTextBookmark; + name = "- (void)windowWillClose:(NSNotification *)aNotification\n{\n\t// closing the window will automatically disconnect the client from the server,\n\t// but if the application is quitting, the client may not get a chance to exit.\n\t// this _should_ be OK.\n\t[self disconnect];\n\t\n\t// clean up status timer stuff.\n\t// we do this here because we don't want the timer to fire after the window is gone\n\t// since we need to use the window in that method.\n\t[savedStatusColor release], savedStatusColor = nil;\n\t[savedStatusText release], savedStatusText = nil;\n\t[statusTextTimer invalidate];\n\t[statusTextTimer release], statusTextTimer = nil;\n\t\n\t[self release];\n\t\n\t//[super close];\n}"; + rLen = 663; + rLoc = 2013; + rType = 0; + vrLen = 1125; + vrLoc = 1716; + }; + 6EE8122406025C6300F1CD3F = { + fRef = 6EE8122706025C8100F1CD3F; + isa = PBXTextBookmark; + name = "- (void)windowWillClose:(NSNotification *)aNotification\n{\n\t// closing the window will automatically disconnect the client from the server,\n\t// but if the application is quitting, the client may not get a chance to exit.\n\t// this _should_ be OK.\n\t[self disconnect];\n\t\n\t// clean up status timer stuff.\n\t// we do this here because we don't want the timer to fire after the window is gone\n\t// since we need to use the window in that method.\n\t[savedStatusColor release], savedStatusColor = nil;\n\t[savedStatusText release], savedStatusText = nil;\n\t[statusTextTimer invalidate];\n\t[statusTextTimer release], statusTextTimer = nil;\n\t\n\t[self release];\n\t\n\t//[super close];\n}"; + rLen = 663; + rLoc = 2013; + rType = 0; + vrLen = 1125; + vrLoc = 1716; + }; + 6EE8122606025C8100F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = ClientController.m; + path = "/Users/chaz/Projects/The Cheat/ClientController.m"; + refType = 0; + sourceTree = ""; + }; + 6EE8122706025C8100F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = ClientController.m; + path = "/Users/chaz/Projects/The Cheat/ClientController.m"; + refType = 0; + sourceTree = ""; + }; + 6EE81236060274E900F1CD3F = { + fRef = 6EE81239060274E900F1CD3F; + isa = PBXBookmark; + }; + 6EE81239060274E900F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = folder; + refType = 4; + sourceTree = ""; + }; + 6EE815E40602A97C00F1CD3F = { + fRef = 6E4E098C050BB21400A80003; + isa = PBXTextBookmark; + name = "AppController.h: newSessionWindow:"; + rLen = 0; + rLoc = 1308; + rType = 0; + vrLen = 920; + vrLoc = 722; + }; 6EF0870C0575382B00B81D60 = { fileReference = 6E4E098E050BB21400A80003; isa = PBXFileBreakpoint; lineNumber = 355; state = 1; }; + 6EF4D0B9060C2CF300F4728B = { + fRef = 6EF8EC08055A1730008BBE46; + isa = PBXTextBookmark; + name = "Info-The_Cheat.plist: 16"; + rLen = 0; + rLoc = 467; + rType = 0; + vrLen = 1278; + vrLoc = 0; + }; + 6EF4D0BA060C2CF300F4728B = { + fRef = 2A37F4AEFDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "SessionController.h: 116"; + rLen = 0; + rLoc = 3017; + rType = 0; + vrLen = 1333; + vrLoc = 916; + }; + 6EF4D0BB060C2CF300F4728B = { + fRef = 2A37F4ACFDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "if ( [recurringChangeButton state] == NSOnState )\n\t{\n\t\t[changeSecondsCombo setEnabled:YES];\n\t}\n\telse\n\t{\n\t\t[changeSecondsCombo setEnabled:NO];\n\t}"; + rLen = 144; + rLoc = 36184; + rType = 0; + vrLen = 898; + vrLoc = 35395; + }; + 6EF4D0BC060C2CF300F4728B = { + fRef = 6EF8EC08055A1730008BBE46; + isa = PBXTextBookmark; + name = "Info-The_Cheat.plist: 16"; + rLen = 0; + rLoc = 467; + rType = 0; + vrLen = 1278; + vrLoc = 0; + }; + 6EF4D0BD060C2CF300F4728B = { + fRef = 2A37F4ACFDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "if ( [recurringChangeButton state] == NSOnState )\n\t{\n\t\t[changeSecondsCombo setEnabled:YES];\n\t}\n\telse\n\t{\n\t\t[changeSecondsCombo setEnabled:NO];\n\t}"; + rLen = 144; + rLoc = 36184; + rType = 0; + vrLen = 898; + vrLoc = 35395; + }; + 6EF4D0BE060C2CF300F4728B = { + fRef = 2A37F4AEFDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "SessionController.h: 116"; + rLen = 0; + rLoc = 3017; + rType = 0; + vrLen = 1333; + vrLoc = 916; + }; + 6EF4D0BF060C2CF300F4728B = { + fRef = 2A37F4ACFDCFA73011CA2CEA; + isa = PBXTextBookmark; + name = "SessionController.m: 905"; + rLen = 0; + rLoc = 23043; + rType = 0; + vrLen = 1044; + vrLoc = 22364; + }; 6EF8EBD9055A1730008BBE46 = { activeExec = 0; executables = ( @@ -2305,9 +2091,9 @@ }; 6EF8EC08055A1730008BBE46 = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1002, 834}}"; - sepNavSelRange = "{613, 0}"; - sepNavVisRect = "{{0, 0}, {1002, 834}}"; + sepNavIntBoundsRect = "{{0, 0}, {1002, 799}}"; + sepNavSelRange = "{1162, 0}"; + sepNavVisRect = "{{0, 0}, {1002, 714}}"; }; }; 6EF8EC0A055A1730008BBE46 = { diff --git a/The Cheat.pbproj/project.pbxproj b/The Cheat.pbproj/project.pbxproj index 70235de..c02181c 100644 --- a/The Cheat.pbproj/project.pbxproj +++ b/The Cheat.pbproj/project.pbxproj @@ -147,7 +147,7 @@ fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; - path = MyDocument.m; + path = SessionController.m; refType = 4; sourceTree = ""; }; @@ -155,13 +155,12 @@ fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; - path = MyDocument.h; + path = SessionController.h; refType = 4; sourceTree = ""; }; 2A37F4AFFDCFA73011CA2CEA = { children = ( - 32DBCF750370BD2300C91783, 2A37F4B0FDCFA73011CA2CEA, 6E51A986057330B900506538, 6E51A987057330B900506538, @@ -170,6 +169,7 @@ 6E71F41B051BCCC600A80003, 6E71F41C051BCCC600A80003, 6E0BDF7D0511568D00A80003, + 32DBCF750370BD2300C91783, ); isa = PBXGroup; name = "Other Sources"; @@ -190,7 +190,7 @@ 2A37F4B5FDCFA73011CA2CEA, ); isa = PBXVariantGroup; - name = MyDocument.nib; + name = Session.nib; path = ""; refType = 4; sourceTree = ""; @@ -199,7 +199,7 @@ isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; - path = English.lproj/MyDocument.nib; + path = English.lproj/Session.nib; refType = 4; sourceTree = ""; }; @@ -225,11 +225,13 @@ children = ( 6E8DD52805FC4EB600D2C0EA, 6E1E43700588275100526509, + 6E789E4A0603A52B008F8B51, 2A37F4B6FDCFA73011CA2CEA, + 2A37F4B4FDCFA73011CA2CEA, + 6EE8122A0602610900F1CD3F, 6E51A97605732B9000506538, 6E0D40BC052245E700A80003, 6E0D40B005223D4E00A80003, - 2A37F4B4FDCFA73011CA2CEA, 089C165FFE840EACC02AAC07, 6EF8EC08055A1730008BBE46, ); @@ -650,6 +652,19 @@ refType = 4; sourceTree = ""; }; + 6E789E4A0603A52B008F8B51 = { + isa = PBXFileReference; + lastKnownFileType = image.icns; + path = icondoc.icns; + refType = 4; + sourceTree = ""; + }; + 6E789E4B0603A52B008F8B51 = { + fileRef = 6E789E4A0603A52B008F8B51; + isa = PBXBuildFile; + settings = { + }; + }; 6E8DD52305FC4EA100D2C0EA = { buildActionMask = 2147483647; dstPath = ""; @@ -781,6 +796,30 @@ refType = 4; sourceTree = ""; }; + 6EE8122A0602610900F1CD3F = { + children = ( + 6EE8122B0602610900F1CD3F, + ); + isa = PBXVariantGroup; + name = Record.nib; + path = ""; + refType = 4; + sourceTree = ""; + }; + 6EE8122B0602610900F1CD3F = { + isa = PBXFileReference; + lastKnownFileType = wrapper.nib; + name = English; + path = English.lproj/Record.nib; + refType = 4; + sourceTree = ""; + }; + 6EE8122C0602610900F1CD3F = { + fileRef = 6EE8122A0602610900F1CD3F; + isa = PBXBuildFile; + settings = { + }; + }; 6EF8EBD9055A1730008BBE46 = { buildPhases = ( 6EF8EBDA055A1730008BBE46, @@ -793,6 +832,7 @@ buildRules = ( ); buildSettings = { + DEPLOYMENT_LOCATION = NO; FRAMEWORK_SEARCH_PATHS = /Users/chaz/Projects/Chaz/build; GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_ENABLE_ASM_KEYWORD = YES; @@ -977,6 +1017,8 @@ 6E51A97905732B9000506538, 6E1E43710588275100526509, 6E8DD52905FC4EB600D2C0EA, + 6EE8122C0602610900F1CD3F, + 6E789E4B0603A52B008F8B51, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; diff --git a/cheat_globals.h b/cheat_globals.h index f50a0e9..22d748b 100644 --- a/cheat_globals.h +++ b/cheat_globals.h @@ -20,7 +20,7 @@ char extern TCDefaultListenPath[104]; //#define TCMaxSearchResults (100) -int extern TCGlobalDocumentCount; +int extern TCGlobalSessionCount; int extern TCGlobalAlternateBroadcastNameCount; char extern TCGlobalListening; diff --git a/cheat_globals.m b/cheat_globals.m index dab3acb..019c725 100644 --- a/cheat_globals.m +++ b/cheat_globals.m @@ -12,7 +12,7 @@ char TCDefaultListenPath[104] = "/.thecheat_socket"; -int TCGlobalDocumentCount = 1; +int TCGlobalSessionCount = 0; int TCGlobalAlternateBroadcastNameCount = 2; char TCGlobalListening = NO; diff --git a/cheat_net.h b/cheat_net.h index 1f82d2e..38718de 100644 --- a/cheat_net.h +++ b/cheat_net.h @@ -11,6 +11,8 @@ #ifndef _cheat_net_H #define _cheat_net_H +#import + #include #include #include @@ -23,8 +25,8 @@ // macros -#define COPY_TO_BUFFER( to, from, size ) memcpy( to, from, size ), to += size; -#define COPY_FROM_BUFFER( to, from, size ) memcpy( to, from, size ), from += size; +#define COPY_TO_BUFFER( to, from, size ) memcpy( to, from, size ), (char *)to += size; +#define COPY_FROM_BUFFER( to, from, size ) memcpy( to, from, size ), (char *)from += size; struct tagPacketHeader diff --git a/cheat_net.m b/cheat_net.m index be27b7c..f668f1a 100644 --- a/cheat_net.m +++ b/cheat_net.m @@ -49,7 +49,7 @@ char VerifyChecksum( u_int32_t checksum ) return 1; } - NSLog( @"checksum failed" ); + CMLog( @"checksum failed" ); return 0; } diff --git a/icondoc.icns b/icondoc.icns new file mode 100644 index 0000000000000000000000000000000000000000..a0f68ef3a7f91f3dc52aa3c20a5a87cab134aa1c GIT binary patch literal 57395 zcmeIb2Y6fAl_m)0pscEr%H^)q?Q*-^-f`I-cE)Xg?%p1E&-Qfs=CfzVvupQGw^Z%2 zT~%(EU9PMLfJqXgLbuLD-VaWjgGn<*1n!XT&{Lyac*kV(akNuusAzt=#$9V z1l%#5XSk1DbFJy-owiOq?wDa+a{GGc?aSAB4iS7b2UXMtnzFrCHlxNq#!M78TPUg5 ztm@&TEiu@_;EQ_d?E!P@<7!uHw~S4lirTTjiP%C1S!$l~$DP>6WGp$?Hx-G65`$P^ zblE&I@822Cahb+Kyqb zP-_rzr?+FcBOvBa5G266B zt+&`yX}B>PnTz^d_Ti~i8b)S=@n~?;I=qsKVSLUTiu*?`m(u7lYBeX*fJF^k`}L&cA>2XE<_ zdBN?}^`ouN=++lIpV6P*dmlyr68qxree}K0x-fvV)Fm9duZz#`ybfn{8xT| z>-zFZ9Pa=8i@$@?pO%|}%5gd98oa{rio+`jFBE$r@RGx8V(YaAf1l)Q0@LdAmjA}j zvDz!I1dmI<}9yq-R_z3vC)wsm(yk*kacycOL1qK?F-Y>QxoH( z!-Gz{Udra`uj0~awgqJR_|(MMsC&?9(@?p3(G^^JlYJ3Cb9{Od!VbAi9TbmRbQ!*N zED>gp&!hs|1#R&)ji>~^buJgqhh%N5>kB%4G45QQ%d;>)zqmN-9uP7+6n!M* zJtB#&FT$O#8}u$NPCHdR2Dzs4W=kvSW@SZXBU4idx7_Q?x=vbiZS~dCit^IxJERV| zsE5rh#64R#ys;#tRA0Y#Ls(Z@S$?&&mfCGJidxYExHsxwm3NSDRo_xfcbAoymzCD^ z>4&wn)V;BwPsL$UZ{KQSjG1p;t7&R6S|`l()V;}Yz`&ug=ndp1l4Y!sOs1IK(+*bZ z-c&T?Vo~W#4x36BPB%0)F)dSbL!0-edM5{y=2(a)z(g7_I6U0_S(jJ<;1#osv{+D1`UUl^pYA%xq-d31d$zC432g_08< z1WjL0r5|m;pwVazT0Q*gHF_=ls#NL$HawTEuY9xOXBlr1Wbgq&D;CmG6zc2;l$6>3 zi6y0A?%3?q(0)Z_#;up}guT7@6_qKcR?6?BHnw#!8gJZFR16|s7o(-NwxPbRrM+c$ zQCaL2x00J%m9)CXhC8)%E`O`29LI`^O4UPYX*Vy(kcQm4I;wGZQPC-TB~%JeKI>|0 zrgFL*yNZh6+$ZakaRfcx!_%zJjvnXkqB1Cx%6j|zB@*odgUuE>?GMMWv&iG_+WE#J1csLc0Cgq@u6>EYRZipo@< zoNpL;P*Ks2P9IcM65B;(s~G)TEh<}$isOGqqk1= zk0tJLS%;G0QN2#9Ry(H$?zSrHmQXSs_TXv4bmPTjx7M1AKuy=TJe9E_9s}h?SnVDRB zK&uj1UJU-5D=I%v^~*D%Uyj3Ne&c(0umAY1uiNSWRfT7H&$TlA*W3B)>A!jN7kjR^ z|JzGxTlp*F#53pjT<1<_VYlD-=bym1H2ptq22Dd@NQ#5^Wa=H=d`GZvVBCtmPo&=0 zQt#o^dpz}?OueI0J3BfuJT&NZ*sW%hRw3-}R-))Nn2!)Em+&)Z zr>7=iG(X}Vaye{Rc?CJ`0lvRJMxH%NS0N7g>CMVR3QB zrR=0LSnYQzuGX;H>sy4SJhDZWF@I^Ysk_IGiEV|&SJIKR+W~PSCp34wcoBH zv)L>?^9QN{3(Thy=> zFu1nnQ*|?$Eb@)&npP5Paf4GibY0skxclD7D$ACuh~$0b|gg zoMv}WX$&T_gF&V+nSyv%eN%HYNn;qFn_1B91cWJzc}6FNN@p;-Wjr>ECW|o}8XKD% zjM};Rxn=!UKyf@640(B7?Nl0_-lY&Rnbh78h15uDAlVGdiwhnD77$WeoIpY^1jHS! z6bhBr*(-#A{r*-`V`Br^Veu|6dCl7allai{qK=k!2-wjpVlt>I9~leB9CfXGR@NB9Rxu8?qi6xxI}d?C)YxT+_8AQp0Vd&AYL_7PQ|JFuX3{QCiyC zXhI%`Ix<|_P}`^&clb9pd|@XR5b}-yjYc9cPvhnDDJ`uO28&Cdw%=+Hj}AFKFb>&> zxV8`lNhJCL7IKBpYbUqUo0+V6GiP|rJ{JfEAY^oKJ0OZgaSV5(m>UXImZ2w5I%?mGVTo(MIt9*MryoM$m(-j z-Rsdv7#~7{nSpo;EC-85JQj-*BKhIiNXL-V>5WAJ8i7C=iCqHY&%|O0G!c!ViE-Cz zG8RcBVU8>wK|)!<;AX&-P2%xH9G#QSqZ`gSG%_+AkGtgF_>#pF#b&&cyP}#nhk8my zrM}@$gy{11+o-Lg^L9-6?oa}WWQNgHz~?dbl8FSWx`tM0QHlUXA;&d$MK8^w6+=mU zBm>MrFDm6+GL%3SBi5o*^(8>`s3JG;zz~w92%PanCkh=onljqQp&T({<)4Aa7V%brB_cA)b?YCo)kPcgS+Z zRA3|+@cIm!x*dh;ZM5ah|5o#Z%>V13O7%Th7`;K-S;NX?^3*08%>K&IsXK$|skDG>sX>0-5t6O_QLrnU-KHtQo=DB?VtD1y-Hy_O(fuPhvH5etFx<J@UaJ}zXi zm>i~i02-#Hdm5%yiApGy%H(RdSt=8mB3veu!C;M<_B2d>xl$k&OJpjyQ7RQ#f}Knj zi_ziU+b~J{cp?a>8Zk+wLaV<63nv`g+c2s7cmhOxu5Z*TlL{O@7KEcKpkeavX_(~l z9-&AmA9MD~1jDOz=oZih_HCGY)l!~ND6+a$a^d(qjlp2HJN9ju)+8D+Pau#Q^nIe4 z2`Zh+)J^W+Fs(|oVjf>Ck!qw%!)*-Jmd!(uxNI8@DL5tpyyEcFenfN5bq0p>&f_x-EJ9%UYy4Ym|88c zXa?8h_ccxH+WAC0x#X}8C*m zzSZ^hjVOwSHzMmsv)N)?uk=Xf|4><{ZdI=H5Y*r_bYC z^=?efqtV2Y-ZHT`_@K6FNwv1_S(~!Y$I*r1C?7M ziO*%o^stuc@rO)5Nv#s)rB;c6J9PR>uYUEu>npFE&e)!3-ZfF0nk>!vr?sU$*P`U_ z^7elq?R*I~ZM^3S{Bz#+O!qw!GG4y9Cv55q-~YR>gv?iJ_79Kx_kAGq%Xc0S9`*m@ zJ}Mm$9+R*q4hMxtH}*boVEBC`92|acq#qJ~k4g^2yg$h{O!=Ntoq>mvz@Q(|HrYT@Y}}N=kJky z_A$z?ua4}q%NYCodt{$|jI!&iPiLQ3YIi~H`>*TIchzqhFO_(_YX@B3HSxE0)wk*A z{|32PbHH`G^q;W9A>SiU*E1dq1P*w8ok9f z;RSz!=kH0U(_y)uaaCQhZw zexqr`t-2(@W$S?=C7GBkoX8xXfFHtGHq2R%00J`fGKS!A*i#5*lMx1$7y!4E!|3kq z*SqX`Js+3ZGig>(N+#1MCMS^zWE?k!jHZta598f0Z>oSjZ?#&?CcQ@0Cld>LI+-+j zuS7EnkN4nmXezg%yLM`-a1u9#e<*?)L*Q~4?GzEO-{jQmxwtHv*{)=i;iu9jr;tfJ zfTT?vpoht%)2Mo-B3>tp+Da31^d``w8<(ZG4=E|c0zjE0Y+~TYk+BTS7Kl4*+nUc} zwlEn6G%5ucfW{3`4HjUsy>#=NB095bg=obE07JhAIG9^H4Ug_J*?K+>sPh2 z@VI0%`t+U0ug~D8agd2JCtzWJD<3277q<)mlO_hWLda>WuP&8(QUIMP`_Xm)st*8w zasX>UeWFfEL-my||0Vz@1wh>axUmJWnS!rumc&%%gC!)B9@M8b-nh~pz2|Yt&f_;9 z_&9JQK=~e4^UbTZ=)I4(?>v5M7C(anZUGL;;Z6=h+%F6PhXGT*SIBO;b@di{A3)m< z!0r73PGIZ|n@QIv>S(PgEdvhwy&AOM1CTboSB2w)up7gy>l1gi*Or&#?+0kv0jL2D zwgB)@3!KGr;V`g6Tz0d*U))WpuPh?meR?wkka4-G>{t8V++5)-Zm!~9j58?=_t2oj zs#i<7w1%oe;{6cKI|?B41#`Ih$~pXO+RO}+%1$^?4APVPkbA|Kib93{Tw_(mr0o!H7X|p=q zBO~rXhk2ln&uY4Hx#%7gsEkNEC^zPd;OQ4hK*=&Kz3ej*{bbSIA`PNnB z-M8N+AjqjJ%`CZPW~)#EM#Bz9$wF~TkK#FG_7A5gh8=oEH~H$n-fsJK9am#<+CdE= zr{#8e!3V$m`A;rhxNz}be)99T-?`4vK=qQU-RgHiU7atS`_k<6_>fI2Vc+@alWMw7 zt=885s)?^L8TI|5&bGR$;!E%S@~xjCKRx~PH-GWYuRpj%AW0-$DWp1RZm@c$_Pxd8 zg|vChH1l7XgB^{7mVQ31>LdIexu(BQOlS9NRhK_%5h^t*DVI*VQC9HD`|rMk{PN5@ z@BI2VAAXD!l$5s!Qp#Pb-BFIXNWd_`VDn#_o0%GM8v3}c#P=?%tL0s-cgjkxTrDfRQr;}=AE5rSq?O&3s-P>bUM?xY7oRRE zxqPLpqN@7Vt!4>V=W_4DE?LT0T%4cBFMI*E0gexv`vtVi?|eeh7_>?$r|ov>l`EyC zNZAX(tGQfBk@jhC{p4~(JFT7EaOY=c&dUA6Cjcufp@3;P7@=4y;ZR9=RZvpS6<=1aGC^hTBom(I;k z4I2BnO$EQcEK#Y|eUgs$+m#i7UX@V^fAQr6KtEGjdbPN?hS}ZI_4dyzo8d1H&p*rS z;dXU(aM&ycgU%9B6t-3UU2Nhqvh?)w^0Y%#{oy;UeL78_g2y4>tgNgeT+6Sj!m!IL zDk}g!t-Ks5`|{Px1;q{QP66xUukX-!Qn{kHS0R&%#X?L<2fKq`!!tW&v|BsM7p|OL zURfCv-0V{8)xAIwB3-YlyoOvST*Fo2D>ESqn2B(e_==~>ORrwNa=Cy=el`s1%7*RnwOs>%wa zG8@zf5rB^?LrTAN^-4)mK_yEd=q3HUiY`{`jV6N*IzUS3NeX$qVoJZ$ybHc$C2Nr0 zFd(i$uBBIBzg|#{0Cr|o>E(*5qDnA%*_TQI@p4hoogS$|S^ZXhcdx;0g&vt+1Dz_V zh>s^LEOz~^of_TaDO$-H>Zmlxskg5qH_{-t-oS&#`IXg7^^Gf)nA%7st^!~A71(1} zRtE4_uU;;`N|q>8sguHIV{1Q)!D_0mF1UeIBiGVs4m_G}sJL1H;E)S5E6U2t$_h&J zuUx*_rR>$xF0u58^90sk(5m`AAW2R4z?Q5Yn^V7MQFp?Ud&`X*$W2V=3^GaPN6?HF z+La1IRd!`1R({G6$b_IVQkGYG`AQwH*R{}~Lk3Sc9bj;s`hAky;)CUPV9`nBuVTUzRA;|Q9Sv{sZ>UBg#pR+K{)2Xs)o{0mo0uaQS$*4BZcA&jJn zVZUE5vaVvb*sibFioGY6ZMVAzxO66i#b!37!1I74NN#OuB=sj?8{8uG3b85^G9Om( z@f9b^OG_(BEfn%xR6sXEC;m7FZZ^JGFW$u7>~q$>hhHo3=B^Ajw;Ot3^&VlRvzt>^ z$*aEB+D2|6*LBW=W#Zb3Qaogpf{IgM?c2@mlom2|9c}2ejv&LwQ;M7SKoi#xZ~oev zXNZ2s$Oo$+%uE)i^(Me)-MCSGt)&fV$shyM4v*%HH(aR#YGf5s@iauCthB10Olu{R zTbj6`c%#q(!@A?p_CpLXA*P;P`J`km+dJBM%_O1`7$;b)4rr8 zQ>|bFLC=IG<>l9)h++mRztupcv?AoZmKIWPBwXF=hTiUR81;dG_iFdSALkcZWK@Ka zMh64saaeU&X1{)|jo6Y&CfB!5K!zM{xQd6;f9*~St+g3xLC85R4Fl1II^75|b^_~# zx!tZE?ClPh&sVg5d~I6#flWcDGw49GKv>7vY~X5w{%x%-WTYjV48+Mh+9-ma4Dqg( zRo-f#wUL{_GA#shc7rW$rI;r0@O`?bxvPIJPBnWOxsHf$!}4 zy3e<^IPl3pKbuAevL#5svvN7@U>{0bE9jp`Zf=5>thQDkfo!C!ZzdznX-&;|ay~?& znLHoq?s3AH;{=R3us-6Bj2#ng6!}iAuh_~Istzih2120u!n3m2wA^y4 zNDUe&1DZQcNHY#zY2+3>`PnA=dW0fz1J@Y%#3}q8_-zA~_;WVa-A!$}E-FIH0(?M6 zfaS(w)=`kw=KIlM_4e+lCl#FXQneK{a_Ye9f^c*e5nc3zqyIr;EM6P-3#+`vvYGmJpciF;7bCh{2Q~<4^2YY z9!;ZR5x_(JkV8{TL^4@72hV~Jj5a%p#_09L#?z!muuM~PQ^Qz{E*gVQ8!~r%7CPqB zQ~N-l@cS2(zqCl(D45oeun0is(=<}PR!0Y(0bu7c7;QtaF5KEc0Puze5@z@&@35o% z$t3z(pnYI&8M?C2c>~MLPVYc(*Ycs_U|t}wX1}UdQriGLlLp#@S@NkW8BYb!!0Ou6 z+>N5%1`?t1WlVD*?KP8n0@Ll*#pNY{-@@O4-%e3Nh#1Td1bprWftuOcjtRg_56VA7 z?N{*nbqq`ZbRLdAS+Q~CB86rH?N)QBgYXsj7U+hkL# ztINwv%K)7R&^yT6W)BtvXE=9GQe^3FZf$EXpqv7u&}oW3kx~uBe&{YEjBHx_EQ$`_ zDQv_+M$abIucIyMd1Mv0f-K_zICtSL?zX*405)%4{)x4R+|t_KPNaMhW1~}Led2x% z?2BeXZ4Z`cU%+r1Nky2k>#4D1tzpT#y6Rb30iBV>oP`~I^R@Vhmpz{}0@7ja_ z-Il@zovD&ui4szgjrH&`=w%dj0W_(g5h0zf<0btx`^p*yj-dm1_73)rEr{WaP$&%W z$Ch=!wn#8|z{gWg0hOLcmGntedM0PnCi%4X6%-w~4YfOo*mxYW$sH9s+~M}FdA(p6 z53-WCw79reL~%GD{0n$3#Tt1Fxdmy%0sI%*p`=oH0B^v`Czc1HQUG}UZ9JGJ|Be~e z3MSXrcA#^Ym-ZkBih=%p+&5S)R6@rkr8q)KYo{R8Y_3wOGI5}6;uw%)Xp9XM)z%;+ z1d@~3c*(7zg((AF`glqx@dGr&ND6INx{8CI{V9=l~AxAt)S`Ty5#<=3rI_ zqjV)vw4)XwrGwd##$(thk>p3o#uc9rzn+F!J`YlNkM@3iga{1!Z13O=nn~7%kkeY* z2<*?_@*|CaX_-lZl>)8jM7JDNXU=|#I|FQ25n-!mB)t&Ak1U*Ruzi+NWc$nAR!G1 zDW|dVjsey8Od=bY{>LB#t*-9D_7z7?V=Vu0&^Oih8})#=2~@|oy#S>aY8i>04-{c+ zKud2^qv%FsN@tLO!PiwgQL%iEu#tw@A3D3#-6^-1ZkZCU}~x3#4* zD239_)CmN9F4!ONLHorzFbvXwl_yf&Es8mcN)3wz8#sW^1Na@~xBCI>(IN~UAIc90 z*T=>0+BCdIGQRa3^zPay?JNOH!tVjYvzYBB6di|5e;V-N=T?&{j3z9?5wCv}J$G$w z2YkCeSi?t&7&-w%UmFwt#;WdVYC&56U{igjsEHxrbFrLHfxX7#w?SvfGz~S4DnHac zT_WcqaK8#cd1O6jFS?f)&5A^#u)~6g;d@7UA6wMWJwjS>ZAk0cHm0z-xntAzlt~nI z-v*PPXs9LeJs_*6%P_vYP5|ZeeZKYeJ*s<)qiK-{F$CL4g5Ke-GLyQy3Cb0K|1JPG zwKUO0n9(s{3-szpb+w#D6kU>67hXX6l z_9|mP8?rcz?^I395M*Ka1k~q&Wm^;3 zpaMkblBZJzO?dLt&F%aYp8U2YjG`kfzGcSiM}mc*BYxv<6}6quJh39ope5ncA#f~E zN!Rr=0Ih{g;RD!N_}jq%q-UcbSQH@okzG*Rxypl&5x1}+;lP5vh(DmD zLz!r9;{jGy3%Q9(gYihVN7A7kU-1_MPyzJQ_ZZDXjAccmuG}Ur|C>YYQ`-hi&L42qvrPSTn?Wj~7ON&OYgkJ)f8P!L z06~woj%r&AMh7_HuEZBCfNokLbdDc{fq;o%*VM*z--o&ZP^Ps9x_?detp-ofKfn~* z=fFu$aS8)@AOrw9&SP;nZ@3m;^=@Muwo{ogp$3-7op;yas zhXacewt8$Oa1{g>1qp#&g15URo_M@4WkbltXW`*d-iKDz9BjkWF=g&0f0zJv!Q|q1 zKfGgpLL7-@#9<#(8SEoF6$z~kcNN-Jf>yT3G3N^v!LyiP=pOIQ=bqv?E>;N}#!iG* zhv?N)T&`tiJrs==L$1Ic+P7$cxXNgLBpULJDpcl4Z-^Kz0U?E;V9q{;zARoD%MSZi zmc4;UVJc*Ch!EVTN?WajkhsWIkdCR0-#1KQJUtOlAn|N?k0)$4Buf1 z3ln98Snm8=7l>Tqg}3Hlzn>L<0ascKNc%L_-qOVJv5OaZi3IQB#j!*@j`XBoyof=K z(sjg(7}Tu`@2$ty-@9-ViRO&ZG=vMKSc(1g$p#uKC}xL<_XdC(hH?{XcLLyoW1=NFCkf+NH4fpfKR;xl0Ai# z4oLWThW5e*EfUMZ{=~2p04M@zg%9u3AM}a5VIF%ZQt7$n*gWj;@j(++8}^a z@E{!jFJ5m>CYxXX#o}(9azY$p_4a6d^zDoEcpQ(J2eMZYl$!nGRhE28@%rlp1+TxZ zNW%V1MtQ--iv{HjB=OW(dHLHH-!3m7jmLe&i*J{`eUa!x;<=+`Wp7=0tE_AU(+$5b zW_dEpQU3btw;hBeuAF!gSB@lb_JWJ~cF6a>p0_W)-{Zr_(`*-s7jQOwtT>t%iR_bb z^~uUaX}koaLzv#9?4wI;ZGC4M6=o^vgEf?# ztbp4k(CFqY!-P1v&`QlM1LH#8cxerfHmB|v#|Y7!l}nAOd3ab+(YtMOTFF`gnwCUK z$#Os_hT186rGzH8xnWJ`nBMMEvZ{Xdqrd-)?|w)3r^mkY-M{$zAN{I|r37ZoZQOBS z));tA#lO7p!ykPAzi9s9_<#BS4}N&zm&HvygVhZ8Ph3(>n)F@urI+6Q*I&H(rt0S> z-hA^H|N8Ew()upFX;KC2QTa5Q%W76~Y4z2WNVy8u%V5=_p2k(0tu7j^2A8i_ne0ZT zgx|%6X%QtIrg#`^*cPcY+D$5bEiR9yH;vd}?}(;fr^)Nr=nMwih)GYY!;odJNw?EA zWV2~T^KG^vm)$+-lF?}OuyR6^sm%6OAj(YUnoO&9vkJa1`;_b?!bIU?u#+-V>?Gnu zPKuiZGnj<2%+V2;B}Lr1gTP8i@skkyv%m~7!?M9P!HL7%%TG$109wrB(~}A&)25~f z2UCkMiqnG$N(e?!!XFWojtEMypny;Dv!G+fa|eQMx{#HupqmN|!;6T@-Th5^}lS;)WiENbVdSs{Z6tvy^(dtpy)nle$L-ZE7x!bgPD@ z9vnAUJrS1D&5u4N8OAYs6_-|bs|H9yHFcc^*9h;uM`J0aEiMul&hK!PuDn~=TZ+xW{11^=a0`&`T(iZkB_<>1M;pG%w%LG9HHXo)|2BxX|n7Bi{% z{p&_#FyC(MH+v8f4ZBsAav`z&DJxplK$qEz?2`_`lKl5TwbL5E}1ZMSIT-EEDH zO@!u*rY0a_HKdV9MGddk*Vo;-ef1X)p`ciY-eJThhn?p50V; z2b<}|H>Qy=XiV=qz`lK>nx-;ZoTOhImYGyLZj;bp5vZUQk5LgC$wEtOEw;)A3lET4 zpvctX@4RsP=AAC^tLnOa>2QoB;;f@j!N%s;kv4qmNti}$YOsZ1?p{=r$|z|~fd5sP z2M3#gQR?dM)ZV$>D6u=-y26q}(vk>su0BO?S4%4aM8KS7bCYBecp%QkTBIo-q`>+~ zeM3D73TIl~9i;X+2&rjPI&8y&!iNx)j?bw-n02cZias7N^ayQftzeuC9@i9vrS>&` zZ6gr`0CWSk%+XMX)Z*)MYibx8+nn#=1SR75h+3{tD5bPkq#fUu+X4&UJRw)Q0Q?Vk zV;wLvnsP`DpgUL}Uk~{bssBQ4U32#mI@mhkeket$Z%hj=Q2P3NIc*3m{lFpw_yy|` z3VXQLBv7C{yjrjf(v(`gYDk9&;2Xd)jqGk-#~LboC{gJQ5S6&&IuOy@t5kBaH8`X# zzqO^AFN8&uF69bXC}C}?N18IAWHlBvoT>+})*U^(P7XhgHXo9$)HX37mn)For~CT( zkODxGY;A4kiG(1dn?DY0rCDZeQ#0TbNoVS7o0wgK?#_-*b{~q8A3{~i1*%g0q(P>T zBZ_l6UqJZzq>X*@)g(3n! z4@2+nWOsHAA?PtPh26p7u;Hf@^naEuh@s3asuHk?#z#kY=H_?MH>pZpBPt0Z%a8*+ z(wo!Q2aH&zK!ga73HUud+|JG(g;q8I`Wq<>CXs{dBy>E>Qlas7jI1=hN%na#S*dkQ z13rvoh%_DSU(kD6#fM_W=W)BZV%T^i5$J)d)DJXb78?wbGD-)BZbz3|_U9_)Z&4P2 z6ap(aDYnwB2^}Uu0&d{t3PSH$h1_ls@c3LVUj=((q!OtRWTf}gfJKwR0va*G$p=aF z5!88?uLNwaJ=P%x5dWC~xUZWQm4gV0R0<-bP|T3tV+xsb&@AH0VF#BSOed8HZ3vpy zPa`nXSS$kPId%tQ29@q&EP=C>JpxJsr!mG7VM-5P>H!_|;Dn){lMOrVLw0qaTn1?Z zH~6sNmk=-rtTW&>32X#u%veD=_pp}sgU`cQOTU>m3B?jbnhEy7@Q?NO%7$H*>2a|F z>I_*Ph7aVNNGIT*hV^O5J# zR4SGTrl2LpNPHjxBRv9Lmf4SbD2L`R>D)5DNQ{?cKtez<&R57BZp+vNL_vm^=70d; z)GX78SONea5n@3zqAvEs=u2PPp)WBe`gm~MfJ7pO9|>kAsm*O29hX1?Bhq|{SS-Mn zim5DS0qX?d(;4k9RQ*r_6Y!&ez*IM->=9tzy2RL93fw+y9~~3RAso|9ER9*GDU2jOrjY1DDXivO+pwGu@E`z)aX`*EB*7^c2u?h=gv$d7 zI3ZE=yhNfJcTdjtE1~{@ofjfu9}t8T(6(UcOd>0rHkaZzZIO>K+SlHd@l9qH(3|RK zt)M*EUWh=Gbxtf+P7H%1Salzm9twmA0~b>fW;%dlTtQ4m2yJ;Ny9t4n!%cRRVA?8# z)kdtlBRVSt0aGKBvsx|e>A>n{p#nj(Wz>{y2+UmIJMt6ZmWPp>2(WDT)DF4nvT?%9 z<3a*Mk3{q;6gH`CY;sOFpzc+`;U-d{7OLlN%n=?CdY}S=IMCFGU^hLp&2Az(CQLn$ z0Dzwoab94Xn;+0?l?rHHBs?2bo(v$1L&7rf%xo6Ljv5}$ZvyVr7Qg9(p)nI^j~Ao~ z1$faH#P&sSg9W<7mKPqlQx0JJcCac9)>Cp=bn*x)IV8R5Sc=~C-u&=DcMqQ+cn&MW zBE^UimIai(P3|bp^FpkO&M{YWnA~$_7@74i0BKRtF#liBu0}`uY zKm|=Ncqs(pNgG%_WgB`M+ZcH`y9t5i#uU5hl@z<_quC*KH)Kw%(*y7dBTH;CXt10w zoX61Vc;+bvgTgcdrR0&wO@EvsHxXwB)ll!Gx>N$8!oXq6jRPvMya>=I+v(WmEGkpE z4mIdu$xVN>Np8A1Ii%_a;FRui1E-TMFoDriz=IetP&a{?^XTNJ#_2%?7dn7Eg#V&k z&xW2b56dfJX#QO7Oge=Jtk}bnn~34pAPc6*O|_G*UM}>u`8>W<&+h2#=n%qAFsT=X zK?1dVG!E4xMs8YvIJxPmEpiiQ!lmG*03~`h((z0ur$^T-g?d&;8H_v%yXp5+>?Yxe zOA2s2o=As98Z_+bl>yoUBo5G<3@LgO#=JV1-UJ*T|AM|)JLZ(Y<~XiU2c3NY>ty$c z*YEP1N`OyvNPZK+0#IB)8eqeq1nD@zrpmy*SxCouB!1J!wvhf z@S9#t@tZyw!BF@b=;X5L-9unz8)uW>1k4wVBy|{q(}%+&c0LajVQ|dA864-P2u_48 ziqtNi(RMrNxsTxV(VW{N0;0ACdLBzcAULfCiozv_B{&i0+*TcUeMW=*9E{*}CH3eb z2~PM~7Z8c#7S5pvP6Uh{b(h{$J{LmWosU3oI*!qs8kYE*^rn(Su$v+~>?T6=@)Kk? zT}d&Z?qfG?vvpSE34Ds#1oQ{^FC!7h2u^vi7!Y-Ud*WM1VmOTK6^%u=h)yTxEVIDj z!+ycdcX+l4nsOX4A@hR4e``di#NmieMUlcMLv%ubQglRg+9Cu!9?>ZSh)zl5K&F%Y zi0OoR4OlxA(+OuQcqq~7DsYt^NOY=7ag~aIt8~v8Xou*8(V*@jI_2#UozP7p)DhF^ z^J6+ao*$-7rc=>G#^g9QM~olK9~r?sm%zgDkPC69gZ~=Db{-r#rQ9&VI1Ah`vG;Yu zGy(LIN9H+YZ@FPA#Ar_Vhaw!rav~m4oQ^0?M-(SmiNRbb?RMdGL~%MC#i?L6ZSL`$ zFl}$unV+xOW)y9clRh5@Or_guJO;7p$v9uSkJVK1q0EMVELKwi>^I+Xyi|)^myF@j zr+Pm;ETd_AYy`Wr3%5NlotT^5^1O8IGD!(*rsqTRuz@N`AwE8*>G-DSrQYt=;wzLX zJo-i7gk7uXb8Mi=Ai3c29WQ~dTaK4*5wGxJh5E(h`lLf8hZSs9pL#Tuh`WfFAII_1 z@f}iA*(W!KU`izJnY60<`tYh3)f#YAsGEi@I-++TmDF^6e#`Ar-6vOjym&M(v@&ke zs5NlnFQUPz37XR?g>fnD_jdp4VP2QEryZ7ymrmRzHdPVoHK1)WxIALeYLS6Volc`s z6SaQ;@BIp?ZP~ZFc>C?gA~uy3(8751WPEkjX&BHOj0OXoH>^c8nOgXx0|!N#{{B9> z+&u4Dnl1X*!_%AcQf`-S6%?Dmmq<=BusR9ccq3xUF=8S>2BJ&XYTzBwz6z1(SBRy~ zg_Xt8cYkwOmQ!}h^HS$55G0a;l~L%cnFwa!&>IZ{18{xkX>dRQVo5Wb5MzcxZ_wihvUR$F0rt>yd#p{QyCi2AQZo8}kt* zv8^MaXZgQ6EZKEr5bl|3M$mXP7EhwFDLdjk zj(Lu?Sd6Q1OkE@faR?3%z%e$NSV;pLA-Wf|TD5Ax4TrKsQp6|s@TM1~{XI0DTp1+8 zY0-e6NTSI_2Y9%`Jj+@PUa%PmfH-6=nFgRNBYNBbUV9d#Xw@3~$QUp>;TY+MQ=f8D zj+zvhkjX+Z5`WypBgML7-!w;N=%w!lEnSjIhTn^ao zOcpvH>ZgedaUcM_=BdE29Xl7!X7+A@N1{LwJDZp`>5WD>LB&T=w-{ z{3mQ+yEC`3P0+ym3f4~n{|QPNHWwO&+0q19VRG9dB%R1AD@9#{arPhYUw5yu(3 z%>npMcykWM9!7yeeCIcOQ02n!`ii|gf<{8%6e1js!d!6jX*4`!@}SsEa5NQ@HE{42 z2CmYq$p$6IOCu+hBEk>%iV1@z@aZ88fM4iDrI5E*!AP6gYLD;n%11V?Wpq?b0 z5(H5I(SZ#}5D;=~9DG$QWU{|7NbP9fP?@z=Ku#iAR&%mA|U(5 zBav7n0x`ivVC+&%1i|_uh;Z0!PW#3oSW(Yntf*^f%pU-7uvIt$B>~Hi2H=Ar4uP&f!QD7Fi$$nF)wN5CM-9Yip~}7x0^i z)-;O+F&_sbndeZ~Lw!1(+95^tq5fO-4?ea2#fQ=Cj|DCJO$ zs8e&2Ml`sxy1oInfnO|np&W0j9oocR#X3n|Q=t`S!CSK};0vSmke;1xpdpXP>+>Q0 zT+kb<0qhLu z07UTqT&#vpK^Iw{hP+}njXx3v>X~I76e+-mBcB00;P+wG4|GzVO2oq0$-cgIj|Udv z7mVP!-a@n<$80`>jvk%@RTfKlR^U*A^$ol~Ya@UiDMmm~#(;wYu3EgSUQmACh_@73 z^G!>r?r@%+p79OcTtmG8yAEn&hVes<1Gs0P8pGN}IBpB-w0Q$qq}Y1Qw1UbH=hW#K zaGr+H^%c(woT7l=$O3S%HxbQ+)-bTK=3RrzH+@8JzHH4l`_R_IIdjSewi5?Uc#)N? z)ip@R4R8Pj`T{B(^@z1h>wuauWPoM~avt`A+!sUJwx~{+qoso!Ii2(l-n5``@AC2r zmWbfpD19RkDnN7MU3LL|;foq5S*Tu!V1j$!xN~(Y`P(4}#27hhRB@pQTM7PDSfzbYHqrus zd@L3Wg1NzUY}jN%%o$LTn-NP63}hA#!*KfI4#Vk^4~;H+K9`K;jN1``<0@^LFtP<98u(BBlMxo=K7snD5nzu02tfxS0u!`BJ zcP=MU#o^dZ=Tqz^7@eq{=5dP6k--P>8;bi*RYBX zcHOi?ZhAIFZYl(h!_w+190w0MdVM44vCcvp^n4t8GEf@5dMqU&9SxQl`1nZdrcKvP z6@b6uLA*F{`ucmmfX88lO>Ka@42pyDtLp&l zvQGeVJQ@PvMFVCM^DyL^ZFW-uxP*F$>!xo&E(F(2T|lKlQ$Cjt!)_{>N0aNzE1u<53=A78*xUgq72v(8^U&U#elO*{sbC#V zt}Wk1a@sAE5XnbnH{tyNv$VXrWOX`WfMgkgX5mrTO`G1Eh|mWIWtMDCm(2=?Al_v+ z9o~Br9yo~Ld(!5#Iu{|c-a~FG2;}G4GPuF#}1HVmEmoh1~>$)%fx# z)OkDXrsDhEH*L>vdXRX*z3!V}APSLwWOfsb#lU$}Jq#-!o!!*sc|>+ouX@{e6Xw*a z-~qmyDq=a&LppD&02@5SdlL}`2LY-6EN3J#7Gt} zn!=G;LO2KhLP-t*uj$_)r|FQ+o1Pe_=?OY-!UIw5x6ygiAvjIH72caho{;yZ!*H5D zmGh=OoTek^O;6H!)2~v;?f%*BLr~$sxwN$O%$)pFXP-HL{@E`a{yKmD{JCeII(0lR zJ2QR%19t)Y5Emvs@6@>$zx)SZ|He1}@X*&czxmp0U;p2J|M$N5%&BA98M}^YJ%q@6 zf~2LV=bn1*%ln=$_^>ZyE4=T2^`&zs^D-Y_fwc6jW9NVWTMrZUp!*5kfBwpIXY;cj zTY@|KZ<9Kl=I$pF)AOjJ#)F{g40S;c^}rB3}HBm!5iT3#4Tnd-k=z zed~efhqw`W>zgkHQ#5_1i_gp(zxnkS&OAmY#N@yHolh?x zO+20gnEc=U&W~Y$^=YriQy?uP=k$}2|9BSIl>d)UApWp6`4~y?B;})tw;nkYK2iCP zp}>=s|L6)lVfl}&z>}8$s0uuB`H!f;lb8Q!3Va6gAE_SrEaX3m0-uTeM^NCik$-pv zJ|p=k)*m=bm+Z5We^>=RGx?yvVY+0WoqRO*^Ft``8Ole)DGMAtHvBB*qmh4n?fKKW z2ab+EQ~9XxdtZC*WcER0)6Z5us{8KmpUXce1wLc>(SQ1rmrmy#FhTMe%SSu@@~h{L z9bkaZTK?1z{^a>n2h2`<*7BqO^k-jwDmUYSGgP0o{N$T|{k3!XpPzj6*Z=U1FC66G=}Vude8P{u z{rSrO@wb2X)aPh_;*Y=cTQC1~&gYl^iU0VW-#wClWdC~>eeQnv%VF*dKb}NaV_%G;{>M@OX_R9yhKiMZ={?kvr|LcL`QQ$wld?5b` z_MiQSAAa;;fKPenqaPm3|4Pp~`TQS$|5u+<%7Y*O)%XAS`IA`>=D)%I!{=W6n>R{G zEP)hGYJGAS9Hk~;kxJh9o7bK@et`Tm*#7$JpZ)h=U#THeXmrMtyXZ6ux#r5R|NEc4 zdj42e+Jgy*nR#bk`sQE#`0bAhua=dUS3Ie!yu9pc;YV-(_^-bC(wV%>2a3nR2D}sJ zzx+qv`~HtF{`Ac^-+b#yU4Zq|i$DJU_x|Y1=TAJC{s!B>)3fqUKl{pS-}>{v`s=^_ zyTALpzkf0pApPxM|J9#=>$O*&J)QU93m>+KG^