]> Dogcows Code - chaz/thecheat/commitdiff
The Cheat 1.1.2 v1.1.2
authorCharles McGarvey <chazmcgarvey@brokenzipper.com>
Fri, 19 Mar 2004 19:00:00 +0000 (12:00 -0700)
committerCharles McGarvey <chazmcgarvey@brokenzipper.com>
Fri, 19 Mar 2004 19:00:00 +0000 (12:00 -0700)
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.

44 files changed:
AboutBoxController.h
AboutBoxController.m
AppController.h
AppController.m
CheatClient.h
CheatClient.m
CheatListener.h
CheatListener.m
CheatServer.h
CheatServer.m
English.lproj/InfoPlist.strings
English.lproj/MainMenu.nib/classes.nib
English.lproj/MainMenu.nib/keyedobjects.nib
English.lproj/MainMenu.nib/objects.nib
English.lproj/MainMenu~.nib/classes.nib
English.lproj/MainMenu~.nib/keyedobjects.nib
English.lproj/MainMenu~.nib/objects.nib
English.lproj/Record.nib/classes.nib [new file with mode: 0644]
English.lproj/Record.nib/info.nib [new file with mode: 0644]
English.lproj/Record.nib/keyedobjects.nib [new file with mode: 0644]
English.lproj/Record~.nib/classes.nib [new file with mode: 0644]
English.lproj/Record~.nib/info.nib [new file with mode: 0644]
English.lproj/Record~.nib/keyedobjects.nib [new file with mode: 0644]
English.lproj/Session.nib/classes.nib [new file with mode: 0644]
English.lproj/Session.nib/info.nib [new file with mode: 0644]
English.lproj/Session.nib/keyedobjects.nib [new file with mode: 0644]
English.lproj/Session.nib/objects.nib [new file with mode: 0644]
English.lproj/Session~.nib/classes.nib [moved from English.lproj/MyDocument.nib/classes.nib with 100% similarity]
English.lproj/Session~.nib/info.nib [moved from English.lproj/MyDocument.nib/info.nib with 100% similarity]
English.lproj/Session~.nib/keyedobjects.nib [moved from English.lproj/MyDocument.nib/keyedobjects.nib with 100% similarity]
English.lproj/Session~.nib/objects.nib [moved from English.lproj/MyDocument.nib/objects.nib with 100% similarity]
Info-The_Cheat.plist
NetTrafficController.h
PreferenceController.h
Read Me.rtf
SessionController.h [moved from MyDocument.h with 91% similarity]
SessionController.m [moved from MyDocument.m with 91% similarity]
The Cheat.pbproj/chaz.pbxuser
The Cheat.pbproj/project.pbxproj
cheat_globals.h
cheat_globals.m
cheat_net.h
cheat_net.m
icondoc.icns [new file with mode: 0644]

index 05f4e5d775943f7c41b3975a644ac9d5eff46b64..d932f5992734e437300435c4a8eed8649628654f 100644 (file)
@@ -8,7 +8,8 @@
 // Copyright: 2003 Chaz McGarvey.  All rights reserved.
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-#import <Foundation/Foundation.h>
+#import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 
 @interface AboutBoxController : NSWindowController
index e499ef829bedddeb3d140007dc1a93ffe8f504b7..6211a41862446460dca7566b3f8e791e8633b5f1 100644 (file)
@@ -12,8 +12,6 @@
 
 #include "cheat_shared.h"
 
-#import <Chaz/CMUpdateCheck.h>
-
 
 @implementation AboutBoxController
 
index db42eedf43939044389e7f74779735f390818bc6..af9c6549edbd4a0b03bdfdb72b4a91bb9f8ae919 100644 (file)
@@ -9,6 +9,7 @@
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 #import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #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;
index acd33b8639403a3ad4441792114865613c969ae5..af247bdccd4e257aca362285d578090ccbfd3957 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "cheat_shared.h"
 
+#import "SessionController.h"
 #import "AboutBoxController.h"
 #import "PreferenceController.h"
 #import "NetTrafficController.h"
 
 #import "ServerHolder.h"
 
-#import <Chaz/CMUpdateCheck.h>
-
 
 @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) );
 }
 
 
+- (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
 {
 }
 
 
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#pragma mark Interface Activation
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+
+- (IBAction)newSessionWindow:(id)sender
+{
+       [[[SessionController alloc] init] showWindow:self];
+}
+
 - (IBAction)showAboutBoxWindow:(id)sender
 {
        if ( !aboutBoxController )
 }
 
 
-- (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
 */
 
 
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%   NetTrafficControlling
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#pragma mark Controlling NetTraffic
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 
 - (int)netTrafficConnectionCount
 
 - (void)netTrafficKillConnection:(int)index
 {
-       NSLog( @"kill connection" );
+       CMLog( @"kill connection" );
 
        close( [[servers objectAtIndex:index] sockfd] );
 }
 
 
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%   ListenerDelegate
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#pragma mark Controlling Listener
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 
 - (void)listenerListeningWithSocket:(int)sock
 }
 
 
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%   ServerDelegate
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#pragma mark Controlling Server
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 
 - (void)server:(CheatServer *)server connectedWithSocket:(int)sock
 }
 
 
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%   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 )
        {
 
 - (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
        }
        
        [serverList addObject:aService];
-       NSLog( @"server added: %i", [serverList count] );
+       CMLog( @"server added: %i", [serverList count] );
        
        [[NSNotificationCenter defaultCenter] postNotificationName:@"TCServerFound" object:aService];
 }
                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;
                }
        }
index 553e2385a61c33597c2f03598db94ee3bf03f2b1..227fcb6955c8b2fe809f53aa4fb3d208bbea55da 100644 (file)
@@ -9,6 +9,7 @@
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 #import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #include "cheat_types.h"
 #include "cheat_globals.h"
index a4ebd973951a20b84847bff717f13f8a3065f5d7..dac94e20f618e6331c6667a651ec71654c71dc17 100644 (file)
@@ -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;
                }
        
        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 (;;)
        {
                {
                        if ( result != 0 && result != -1 )
                        {
-                               NSLog( @"ERROR: incomplete header received" );
+                               CMLog( @"ERROR: incomplete header received" );
                                close( sockfd );
                                break;
                        }
 
                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;
 
        [rootProxy clientDisconnected];
 
-       NSLog( @"CLIENT close" );
+       CMLog( @"CLIENT close" );
 }
 
 
index 78b4bedeb462b2ae299417c1bf96a15cd5cd8c26..e2a3d660aa5c80b84a5a9256e6c42d3257992b65 100644 (file)
@@ -9,6 +9,7 @@
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 #import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #import "ListenerDelegate.h"
 
index 40c4eb034938f8e760b49413746bb95cac244b9f..1f3869ee88745346ce0510eb9ed12e726b7d0129 100644 (file)
@@ -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;
        }
 
                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;
                }
 
                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;
                }
 
        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;
        }
 {
        int                                             result;
 
-       NSLog( @"LISTENER start" );
+       CMLog( @"LISTENER start" );
 
        if ( listenRemote )
        {
                }
        }
 
-       NSLog( @"LISTENER close" );
+       CMLog( @"LISTENER close" );
 
        [rootProxy listenerDisconnected];
 }
index ad0c12a98d5cd0524e8b8127394d59d0e41d2d3a..92e602c5dabe09fc4ac38dd7b2231a5bc63d4e5d 100644 (file)
@@ -9,6 +9,7 @@
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 #import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #import "ServerDelegate.h"
 
@@ -41,7 +42,7 @@
 
        NSMutableArray          *searchResults;
        NSMutableArray          *searchResultsUndone;
-       int                                     maxSearchResultsAmount;
+       int                                     searchResultsAmountDisplayed;
 }
 
 + (NSConnection *)serverWithDelegate:(id)delegate socket:(int)sock;
index dd1c86841bab75dcdfdc8d4d021d0232f961f1ab..04cbdd92fc877d5cef0c5ff2ff25a77036d1560e 100644 (file)
@@ -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 );
        }
 }
 
index 2db152c254d426f28677dcf8e79dec62d2040ac1..315ce0077e9bef73f95e933839116abdfe59b0a3 100644 (file)
Binary files a/English.lproj/InfoPlist.strings and b/English.lproj/InfoPlist.strings differ
index 331fb3af29b0a12bd627f275c8079a2c26d290cd..a30170a624c862114054e8f1068df66ef029218a 100644 (file)
@@ -6,6 +6,7 @@
                 launchEmailMenu = id; 
                 launchHelpFile = id; 
                 launchWebsiteMenu = id; 
+                newSessionWindow = id; 
                 showAboutBoxWindow = id; 
                 showNetTrafficWindow = id; 
                 showPreferenceWindow = id; 
index 46a09cbd0427c480b4d7f06b37a5026030dc735a..9ef368ddd24ddfa373cd51278fee340cd9531237 100644 (file)
Binary files a/English.lproj/MainMenu.nib/keyedobjects.nib and b/English.lproj/MainMenu.nib/keyedobjects.nib differ
index bb4317df74319fc047af1f2b3f33fe416f8e2b69..2d16e82868ca270f2490e0fd1789030df49763d9 100644 (file)
Binary files a/English.lproj/MainMenu.nib/objects.nib and b/English.lproj/MainMenu.nib/objects.nib differ
index df3e57d9a2b19eb72330ba6dd0968b6cc543ad66..a30170a624c862114054e8f1068df66ef029218a 100644 (file)
@@ -3,8 +3,10 @@
         {
             ACTIONS = {
                 checkForUpdate = id; 
+                launchEmailMenu = id; 
                 launchHelpFile = id; 
                 launchWebsiteMenu = id; 
+                newSessionWindow = id; 
                 showAboutBoxWindow = id; 
                 showNetTrafficWindow = id; 
                 showPreferenceWindow = id; 
index 76e0352b6120c2762a0349cfa0ac21139610891b..88943c664419b30d0a8a7a52673ea3d2472b273c 100644 (file)
Binary files a/English.lproj/MainMenu~.nib/keyedobjects.nib and b/English.lproj/MainMenu~.nib/keyedobjects.nib differ
index b3ba7f253d614ade7a57691312c20843d169bf77..7dc130724d3424b850e761094a0faa26d3ac52aa 100644 (file)
Binary files a/English.lproj/MainMenu~.nib/objects.nib and b/English.lproj/MainMenu~.nib/objects.nib differ
diff --git a/English.lproj/Record.nib/classes.nib b/English.lproj/Record.nib/classes.nib
new file mode 100644 (file)
index 0000000..b9b4b09
--- /dev/null
@@ -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 (file)
index 0000000..036e61d
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>IBDocumentLocation</key>
+       <string>98 99 356 240 0 0 1280 1002 </string>
+       <key>IBFramework Version</key>
+       <string>349.0</string>
+       <key>IBOpenObjects</key>
+       <array>
+               <integer>6</integer>
+       </array>
+       <key>IBSystem Version</key>
+       <string>7D24</string>
+</dict>
+</plist>
diff --git a/English.lproj/Record.nib/keyedobjects.nib b/English.lproj/Record.nib/keyedobjects.nib
new file mode 100644 (file)
index 0000000..5c01280
Binary files /dev/null and b/English.lproj/Record.nib/keyedobjects.nib differ
diff --git a/English.lproj/Record~.nib/classes.nib b/English.lproj/Record~.nib/classes.nib
new file mode 100644 (file)
index 0000000..b9b4b09
--- /dev/null
@@ -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 (file)
index 0000000..036e61d
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>IBDocumentLocation</key>
+       <string>98 99 356 240 0 0 1280 1002 </string>
+       <key>IBFramework Version</key>
+       <string>349.0</string>
+       <key>IBOpenObjects</key>
+       <array>
+               <integer>6</integer>
+       </array>
+       <key>IBSystem Version</key>
+       <string>7D24</string>
+</dict>
+</plist>
diff --git a/English.lproj/Record~.nib/keyedobjects.nib b/English.lproj/Record~.nib/keyedobjects.nib
new file mode 100644 (file)
index 0000000..5c50428
Binary files /dev/null and b/English.lproj/Record~.nib/keyedobjects.nib differ
diff --git a/English.lproj/Session.nib/classes.nib b/English.lproj/Session.nib/classes.nib
new file mode 100644 (file)
index 0000000..72ac787
--- /dev/null
@@ -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 (file)
index 0000000..5268009
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>IBDocumentLocation</key>
+       <string>294 88 356 407 0 0 1280 1002 </string>
+       <key>IBEditorPositions</key>
+       <dict>
+               <key>143</key>
+               <string>402 411 86 87 0 0 1280 1002 </string>
+               <key>192</key>
+               <string>272 343 101 49 0 0 1280 1002 </string>
+               <key>207</key>
+               <string>376 382 134 49 0 0 1280 1002 </string>
+               <key>400</key>
+               <string>202 287 69 87 0 0 1280 1002 </string>
+               <key>405</key>
+               <string>264 308 79 68 0 0 1280 1002 </string>
+               <key>410</key>
+               <string>509 326 69 49 0 0 1280 1002 </string>
+               <key>735</key>
+               <string>499 516 296 322 0 0 1280 1002 </string>
+       </dict>
+       <key>IBFramework Version</key>
+       <string>349.0</string>
+       <key>IBLockedObjects</key>
+       <array>
+               <integer>285</integer>
+       </array>
+       <key>IBOldestOS</key>
+       <integer>2</integer>
+       <key>IBOpenObjects</key>
+       <array>
+               <integer>285</integer>
+       </array>
+       <key>IBSystem Version</key>
+       <string>7F44</string>
+</dict>
+</plist>
diff --git a/English.lproj/Session.nib/keyedobjects.nib b/English.lproj/Session.nib/keyedobjects.nib
new file mode 100644 (file)
index 0000000..4426d8a
Binary files /dev/null and b/English.lproj/Session.nib/keyedobjects.nib differ
diff --git a/English.lproj/Session.nib/objects.nib b/English.lproj/Session.nib/objects.nib
new file mode 100644 (file)
index 0000000..3e639c8
Binary files /dev/null and b/English.lproj/Session.nib/objects.nib differ
index 60bd6dc2c890c561f48235af2bf56873d15c9511..4f0df19642170b651b9ba7c61821ea3140e98822 100644 (file)
@@ -7,18 +7,26 @@
        <key>CFBundleDocumentTypes</key>
        <array>
                <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>cheat</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>icondoc.icns</string>
                        <key>CFBundleTypeName</key>
-                       <string>The Cheat</string>
+                       <string>Cheat Document</string>
+                       <key>CFBundleTypeOSTypes</key>
+                       <array>
+                               <string>ThCh</string>
+                       </array>
                        <key>CFBundleTypeRole</key>
                        <string>Editor</string>
-                       <key>NSDocumentClass</key>
-                       <string>MyDocument</string>
                </dict>
        </array>
        <key>CFBundleExecutable</key>
        <string>The Cheat</string>
        <key>CFBundleGetInfoString</key>
-       <string>The Cheat 1.1.1</string>
+       <string>The Cheat 1.1.2</string>
        <key>CFBundleIconFile</key>
        <string>icon.icns</string>
        <key>CFBundleIdentifier</key>
@@ -30,7 +38,7 @@
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>1.1.1</string>
+       <string>1.1.2</string>
        <key>CFBundleSignature</key>
        <string>ThCh</string>
        <key>NSMainNibFile</key>
index fb7a1160cd6710083839f495bb4c9b0d060770d8..d3569049cee955557c390daa7f4e982aad286efc 100644 (file)
@@ -9,6 +9,7 @@
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 #import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #import "NetTrafficControlling.h"
 
index d7dada7d4f82fbdbb7e31e45f2d650463c739418..6b42051cadca7506771065c58247a392809ca67c 100644 (file)
@@ -9,6 +9,7 @@
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 #import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #import "PreferenceControlling.h"
 
index e15a74ee872d7d20a2c185f8d34130a1f75a1202..9377d5417c27792bb31c34a87cb84d6c4fc1e3c1 100644 (file)
@@ -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).\
 \
similarity index 91%
rename from MyDocument.h
rename to SessionController.h
index 352874ece5737f86aec581ced94b725f2602ff01..178ecfe1ca882bf0a2b3430d84c0fd8886dabbbd 100644 (file)
@@ -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 <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
 
 #include <float.h>
 
@@ -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;
 
 - (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
 
similarity index 91%
rename from MyDocument.m
rename to SessionController.m
index cd8d768f20d244c326f4c0c01fdc731860191575..35763fe51e5a68af6f05f44018729420bafca604 100644 (file)
@@ -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"
 
 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 )
        {
index b91f8362d7b2e38e1692bb5e22ae4b72cad6eff5..d912312f9437301151c06e91e12b5ba277d7087b 100644 (file)
@@ -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,
                                        PBXFileDataSource_Warnings_ColumnID,
                                );
                        };
-                       PBXPerProjectTemplateStateSaveDate = 100588994;
+                       PBXPerProjectTemplateStateSaveDate = 101460657;
                        PBXPrepackagedSmartGroups_v2 = (
                                {
                                        PBXTransientLocationAtTop = bottom;
                                                        _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,
                                                                                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;
                                                                _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,
                                                                        2A37F4AFFDCFA73011CA2CEA,
                                                                        2A37F4B8FDCFA73011CA2CEA,
                                                                        6E8EE12505F7EA8100ED3F4F,
+                                                                       1058C7A6FEA54F5311CA2CBB,
+                                                                       6E90BC2805F7FB9000857F22,
                                                                        1C37FBAC04509CD000000102,
                                                                );
                                                                PBXSmartGroupTreeModuleOutlineStateSelectionKey = (
                                                                        (
-                                                                               42,
-                                                                               37,
+                                                                               11,
+                                                                               1,
                                                                                0,
                                                                        ),
                                                                );
-                                                               PBXSmartGroupTreeModuleOutlineStateVisibleRectKey = "{{0, 0}, {216, 848}}";
+                                                               PBXSmartGroupTreeModuleOutlineStateVisibleRectKey = "{{0, 0}, {216, 851}}";
                                                        };
                                                        PBXTopSmartGroupGIDs = (
                                                        );
                                                _percentageOfCollapsedView = 0;
                                                isCollapsed = yes;
                                                sizes = (
-                                                       "{{0, 0}, {327, 353}}",
-                                                       "{{327, 0}, {534, 353}}",
+                                                       "{{0, 0}, {327, 349}}",
+                                                       "{{327, 0}, {534, 349}}",
                                                );
                                        };
                                        VerticalSplitView = {
                                                _percentageOfCollapsedView = 0;
                                                isCollapsed = yes;
                                                sizes = (
-                                                       "{{0, 0}, {861, 353}}",
-                                                       "{{0, 353}, {861, 362}}",
+                                                       "{{0, 0}, {861, 349}}",
+                                                       "{{0, 349}, {861, 366}}",
                                                );
                                        };
                                };
                        "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,
                                                        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 = (
                                                );
                                        };
                                                _percentageOfCollapsedView = 0;
                                                isCollapsed = yes;
                                                sizes = (
-                                                       "{{0, 0}, {491, 167}}",
-                                                       "{{0, 176}, {491, 267}}",
+                                                       "{{0, 0}, {365, 167}}",
+                                                       "{{0, 176}, {365, 267}}",
                                                );
                                        };
                                        VerticalSplitView = {
                        };
                        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" = {
                                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}}";
                        };
                        "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;
                        6E8DD71805FC763300D2C0EA = 6E8DD71805FC763300D2C0EA;
                        6E8DD71B05FC763C00D2C0EA = 6E8DD71B05FC763C00D2C0EA;
                        6E8DD71C05FC763C00D2C0EA = 6E8DD71C05FC763C00D2C0EA;
-                       6E8DD74405FC776700D2C0EA = 6E8DD74405FC776700D2C0EA;
                        6E8DD75305FC778700D2C0EA = 6E8DD75305FC778700D2C0EA;
                        6E8DD76205FC783B00D2C0EA = 6E8DD76205FC783B00D2C0EA;
                        6E8EDFDA05F7DBEE00ED3F4F = 6E8EDFDA05F7DBEE00ED3F4F;
                        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 = {
        };
        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 = {
        };
        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 = {
        };
        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 = {
        };
        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 = "<absolute>";
+       };
+       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 = "<absolute>";
+       };
+       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 = "<absolute>";
+       };
+       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 = "<absolute>";
+       };
+       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;
                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 = {
                        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;
                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;
                refType = 0;
                sourceTree = "<absolute>";
        };
-       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;
                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;
        };
        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 = "<absolute>";
        };
-       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 = {
                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;
                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;
                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;
                isa = PBXTextBookmark;
                name = broadcastWithName;
                rLen = 17;
-               rLoc = 2520;
+               rLoc = 2917;
                rType = 0;
                vrLen = 1300;
                vrLoc = 1648;
                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;
                name = "
 ";
                rLen = 1;
-               rLoc = 1090;
+               rLoc = 1118;
                rType = 0;
                vrLen = 727;
                vrLoc = 0;
                isa = PBXTextBookmark;
                name = "cheat_globals.m: TCGlobalUpdateAutomatically";
                rLen = 0;
-               rLoc = 620;
+               rLoc = 619;
                rType = 0;
                vrLen = 994;
                vrLoc = 0;
                isa = PBXTextBookmark;
                name = "PreferenceController.h: updateAutomaticallyButton";
                rLen = 0;
-               rLoc = 613;
+               rLoc = 635;
                rType = 0;
-               vrLen = 974;
+               vrLen = 904;
                vrLoc = 106;
        };
        6E90C09A05FA7EA900857F22 = {
                isa = PBXTextBookmark;
                name = "AboutBoxController.m: 20";
                rLen = 0;
-               rLoc = 456;
+               rLoc = 424;
                rType = 0;
                vrLen = 656;
                vrLoc = 0;
                isa = PBXTextBookmark;
                name = "AboutBoxController.h: aboutWindow";
                rLen = 0;
-               rLoc = 414;
+               rLoc = 431;
                rType = 0;
                vrLen = 533;
                vrLoc = 0;
                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;
                        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 = "<absolute>";
+       };
+       6EE8120806025A6E00F1CD3F = {
+               isa = PBXFileReference;
+               lastKnownFileType = sourcecode.c.objc;
+               name = AboutBoxController.m;
+               path = "/Users/chaz/Projects/The Cheat/AboutBoxController.m";
+               refType = 0;
+               sourceTree = "<absolute>";
+       };
+       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 = "<absolute>";
+       };
+       6EE8121406025AD800F1CD3F = {
+               isa = PBXFileReference;
+               lastKnownFileType = sourcecode.c.objc;
+               name = AppController.m;
+               path = "/Users/chaz/Projects/The Cheat/AppController.m";
+               refType = 0;
+               sourceTree = "<absolute>";
+       };
+       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 = "<absolute>";
+       };
+       6EE8122706025C8100F1CD3F = {
+               isa = PBXFileReference;
+               lastKnownFileType = sourcecode.c.objc;
+               name = ClientController.m;
+               path = "/Users/chaz/Projects/The Cheat/ClientController.m";
+               refType = 0;
+               sourceTree = "<absolute>";
+       };
+       6EE81236060274E900F1CD3F = {
+               fRef = 6EE81239060274E900F1CD3F;
+               isa = PBXBookmark;
+       };
+       6EE81239060274E900F1CD3F = {
+               isa = PBXFileReference;
+               lastKnownFileType = folder;
+               refType = 4;
+               sourceTree = "<group>";
+       };
+       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 = (
        };
        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 = {
index 70235de1f222fe4698f04e0b9b0155a88f202538..c02181c8ed496a5812b60954d2d72941713a4592 100644 (file)
                        fileEncoding = 30;
                        isa = PBXFileReference;
                        lastKnownFileType = sourcecode.c.objc;
-                       path = MyDocument.m;
+                       path = SessionController.m;
                        refType = 4;
                        sourceTree = "<group>";
                };
                        fileEncoding = 30;
                        isa = PBXFileReference;
                        lastKnownFileType = sourcecode.c.h;
-                       path = MyDocument.h;
+                       path = SessionController.h;
                        refType = 4;
                        sourceTree = "<group>";
                };
                2A37F4AFFDCFA73011CA2CEA = {
                        children = (
-                               32DBCF750370BD2300C91783,
                                2A37F4B0FDCFA73011CA2CEA,
                                6E51A986057330B900506538,
                                6E51A987057330B900506538,
                                6E71F41B051BCCC600A80003,
                                6E71F41C051BCCC600A80003,
                                6E0BDF7D0511568D00A80003,
+                               32DBCF750370BD2300C91783,
                        );
                        isa = PBXGroup;
                        name = "Other Sources";
                                2A37F4B5FDCFA73011CA2CEA,
                        );
                        isa = PBXVariantGroup;
-                       name = MyDocument.nib;
+                       name = Session.nib;
                        path = "";
                        refType = 4;
                        sourceTree = "<group>";
                        isa = PBXFileReference;
                        lastKnownFileType = wrapper.nib;
                        name = English;
-                       path = English.lproj/MyDocument.nib;
+                       path = English.lproj/Session.nib;
                        refType = 4;
                        sourceTree = "<group>";
                };
                        children = (
                                6E8DD52805FC4EB600D2C0EA,
                                6E1E43700588275100526509,
+                               6E789E4A0603A52B008F8B51,
                                2A37F4B6FDCFA73011CA2CEA,
+                               2A37F4B4FDCFA73011CA2CEA,
+                               6EE8122A0602610900F1CD3F,
                                6E51A97605732B9000506538,
                                6E0D40BC052245E700A80003,
                                6E0D40B005223D4E00A80003,
-                               2A37F4B4FDCFA73011CA2CEA,
                                089C165FFE840EACC02AAC07,
                                6EF8EC08055A1730008BBE46,
                        );
                        refType = 4;
                        sourceTree = "<group>";
                };
+               6E789E4A0603A52B008F8B51 = {
+                       isa = PBXFileReference;
+                       lastKnownFileType = image.icns;
+                       path = icondoc.icns;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               6E789E4B0603A52B008F8B51 = {
+                       fileRef = 6E789E4A0603A52B008F8B51;
+                       isa = PBXBuildFile;
+                       settings = {
+                       };
+               };
                6E8DD52305FC4EA100D2C0EA = {
                        buildActionMask = 2147483647;
                        dstPath = "";
                        refType = 4;
                        sourceTree = "<group>";
                };
+               6EE8122A0602610900F1CD3F = {
+                       children = (
+                               6EE8122B0602610900F1CD3F,
+                       );
+                       isa = PBXVariantGroup;
+                       name = Record.nib;
+                       path = "";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               6EE8122B0602610900F1CD3F = {
+                       isa = PBXFileReference;
+                       lastKnownFileType = wrapper.nib;
+                       name = English;
+                       path = English.lproj/Record.nib;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               6EE8122C0602610900F1CD3F = {
+                       fileRef = 6EE8122A0602610900F1CD3F;
+                       isa = PBXBuildFile;
+                       settings = {
+                       };
+               };
                6EF8EBD9055A1730008BBE46 = {
                        buildPhases = (
                                6EF8EBDA055A1730008BBE46,
                        buildRules = (
                        );
                        buildSettings = {
+                               DEPLOYMENT_LOCATION = NO;
                                FRAMEWORK_SEARCH_PATHS = /Users/chaz/Projects/Chaz/build;
                                GCC_C_LANGUAGE_STANDARD = "compiler-default";
                                GCC_ENABLE_ASM_KEYWORD = YES;
                                6E51A97905732B9000506538,
                                6E1E43710588275100526509,
                                6E8DD52905FC4EB600D2C0EA,
+                               6EE8122C0602610900F1CD3F,
+                               6E789E4B0603A52B008F8B51,
                        );
                        isa = PBXResourcesBuildPhase;
                        runOnlyForDeploymentPostprocessing = 0;
index f50a0e995d83e39b10f16f6cf63917231ae955b5..22d748b97d77723659cb7029c2fcdbb664c6acb7 100644 (file)
@@ -20,7 +20,7 @@ char extern                           TCDefaultListenPath[104];
 
 //#define                                      TCMaxSearchResults (100)
 
-int extern                             TCGlobalDocumentCount;
+int extern                             TCGlobalSessionCount;
 int extern                             TCGlobalAlternateBroadcastNameCount;
 char extern                            TCGlobalListening;
 
index dab3acb116f7a7e2a4fef5ae22e7b9b83c3b1f64..019c7253ad9e258b8d1afc697c361dbd5d227c50 100644 (file)
@@ -12,7 +12,7 @@
 
 char                                   TCDefaultListenPath[104] = "/.thecheat_socket";
 
-int                                            TCGlobalDocumentCount = 1;
+int                                            TCGlobalSessionCount = 0;
 int                                            TCGlobalAlternateBroadcastNameCount = 2;
 char                                   TCGlobalListening = NO;
 
index 1f82d2e4cb00c450a3b1653aa89a52a1ec8f8d4b..38718de070093f24c648d36ba34a79acd0863260 100644 (file)
@@ -11,6 +11,8 @@
 #ifndef _cheat_net_H
 #define _cheat_net_H
 
+#import <Chaz/Chaz.h>
+
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <netinet/in.h>
@@ -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
index be27b7c5315c812b4eeeeb30cde499ac85fc90cd..f668f1a659e50279bc8ff218b71141e3a46c4c32 100644 (file)
@@ -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 (file)
index 0000000..a0f68ef
Binary files /dev/null and b/icondoc.icns differ
This page took 0.20833 seconds and 4 git commands to generate.