[
  {
    "path": ".gitignore",
    "content": "# taken from http://blog.illuminex.com/2009/10/better-sample-gitignore-file-for-xcode.html\n\n# Mac OS X Finder and whatnot\n.DS_Store\n\n\n# Sparkle distribution Private Key (Don't check me in!)\ndsa_priv.pem\n\n\n# XCode (and ancestors) per-user config (very noisy, and not relevant)\n*.mode1\n*.mode1v3\n*.mode2v3\n*.perspective\n*.perspectivev3\n*.pbxuser\n\n# Xcode 4 http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects\nxcuserdata\n\n\n# Generated files\nVersionX-revision.h\n\n\n# build products\nbuild/\n*.[oa]\n\n# Other source repository archive directories (protects when importing)\n.hg\n.svn\nCVS\n\n\n# automatic backup files\n*~.nib\n*.swp\n*~\n*(Autosaved).rtfd/\nBackup[ ]of[ ]*.pages/\nBackup[ ]of[ ]*.key/\nBackup[ ]of[ ]*.numbers/\n\n"
  },
  {
    "path": "LICENSE.md",
    "content": "TodoTxtMac: A Todo.txt todo manager for Mac OS X\n\n\n\n\nCopyright (C) 2014 Michael Descy\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n\n\nThe MIT License (MIT)\n\nCopyright (C) 2014 Michael Descy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# TodoTxtMac\n\n# Overview\n\nTodoTxtMac is a minimalist, keyboard-driven to-do manager for Mac OS X that conforms to the todo.txt format spec. Version 2.0.0 and up are supported only on Mac OS X 10.11 (El Capitan). Version 1.6.1 can be used on lower versions of Mac OS X, down to Mac OS X 10.8, though support is not guaranteed.\n\n# Goals\n\nThis application is inspired by the [Todotxt.net][] application for Microsoft Windows with numerous improvements and modifications specific to the Mac OS X platform. It is designed to pair well with other todo.txt applications, such as [SwiftoDo][], [Todotxt.net][], [SimpleTask][], [topydo][], and [many others][].\n\nFrom a design perspective the goal is to be the fastest, simplest, and cleanest implementation possible.\n\n[todotxt.net]: http://benrhughes.github.io/todotxt.net/\n[SwiftoDo]: https://itunes.apple.com/us/app/swiftodo-task-list-for-todo.txt/id1073798440?ls=1&mt=8\n[SimpleTask]: https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo\n[topydo]: https://github.com/bram85/topydo\n[many others]: http://todotxt.com\n\n# Features\n\n## General features\n\n- Full compliance with the todo.txt format spec.\n- Fully keyboard-driven, with one-key bindings for commonly-used commands.\n- Multiple selection in the task list.\n- Support for due dates, which are formatted \"due:YYYY-MM-DD\".\n- Shortcuts to toggle completion, change priority, set due dates, and delete all selected tasks.\n- Archive completed tasks (to done.txt), either on command or automatically.\n- Preserves Windows or Unix line endings in the todo.txt file for cross-platform compatability.\n- Automatic update checking.\n- Displays general metadata (task counts, etc.) about the task list.\n- Undo/redo support.\n\n## Adding/removing tasks\n\n- Paste one or more tasks into the task list from the clipboard.\n- Import one or more tasks into the task list via drag-and-drop.\n- Optionally prepend the task creation task on newly created tasks (including those pasted in from the clipboard).\n- Copy selected tasks to the clipboard.\n- Cut selected tasks to the clipboard.\n- Reload file on command.\n\n## Sorting and filtering\n\n- Sort task list by priority, project, context, due date, etc.\n- Filter task list.\n- Quick filters: preset filters mapped to number keys.\n- Search field for quick, ad-hoc filtering of the task list.\n\n## Due dates\n\n- Set arbitrary due dates on selected tasks.\n- Increment, decrement, or remove due dates.\n- Postpone tasks by X (user-entered) days.\n- Supports relative due dates, such as \"due:tomorrow\" and \"due:Saturday\" for new tasks. These strings can be localized.\n\n## Fonts and colors\n\n- User-customizable font for the task list.\n- Bold priorities in task list.\n- Colors completed tasks in light gray and applies strikethrough.\n- Colors overdue tasks in purple and tasks due today in red. Both these colors are user customizable.\n- User-customizable colors for projects, contexts, due dates, threshold dates, creation dates, and arbitrary tags in task list.\n\n## Mac-specific user interface features\n\n- Autosave on change (Note that the title bar will say \"Edited\" even after autosaving, because this is the Mac's default behavior).\n- Autocomplete project names.\n- Autocomplete context names.\n- Multiple document interface.\n- Full screen mode.\n- Open todo.txt files by dragging and dropping them onto the application icon.\n\n# Keyboard Shortcuts\n\n## Working with tasks\n\n- N: new task\n- J: move down to next task\n- K: move up to previous task\n- X: toggle task completion\n- D or Backspace: delete task (with confirmation)\n- U or Enter: update task\n- P: postpone task by X (user-entered) days\n- S: set due date\n- Option+S: set threshold date\n- I: set priority to user-entered value (A-Z)\n- T: append text to end of selected tasks\n- R: prepend text to beginning of selected tasks (after priority and creation date if they exist)\n- A: archive completed tasks (archive file done.txt must be set)\n- Command+Up: Increase priority\n- Command+Down: Decrease priority\n- Command+Left or Command+Right: Remove priority\n- Command+C: Copy selected tasks to the clipboard\n- Command+X: Cut selected tasks (copy to the clipboard and delete from task list)\n- Command+Shift+V: Paste tasks into the task list from the clipboard\n- Command+Option+Up: Increase due date by 1 day\n- Command+Option+Down: Decrease due date by 1 day\n- Command+Option+Left or Command+Option+Right: Remove due date\n\n## Undo/redo\n\n- Command+Z: Undo\n- Command+Shift+Z: Redo\n\n## Working with files\n\n- Command+N: new file\n- Command+O: open file\n- Command+S: save file (forces the file to save immediately)\n- .: reload file\n- Command+I: view task list metadata (task counts, etc.)\n- Command+W: close file\n- Command+Option+W: close all files\n\n## Sorting the task list\n\n- Command+0: order in file\n- Command+1: priority\n- Command+2: project\n- Command+3: context\n- Command+4: due date\n- Command+5: creation date\n- Command+6: completion date\n- Command+7: threshold date\n- Command+8: alphabetical\n\n## Filtering the task list\n\n- Command+F: find within displayed tasks (moves focus to the search field)\n- F: define quick filters\n- 1: apply quick filter 1\n- 2: apply quick filter 2\n- 3: apply quick filter 3\n- 4: apply quick filter 4\n- 5: apply quick filter 5\n- 6: apply quick filter 6\n- 7: apply quick filter 7\n- 8: apply quick filter 8\n- 9: apply quick filter 9\n- 0: remove applied filter\n\n# Features Not Planned\n\n- This application is not meant for direct reordering of tasks in the todo.txt file.\n- This application does not retain blank lines in the todo.txt file.\n- This application does not support line breaks, long-form notes, attachments, or other features not part of the todo.txt format specification.\n\n# Frequently Asked Questions (FAQ)\n\n## Is there a preference to re-open my todo.txt file on launch?\n\nYes, but most people will not need such a preference, because the default behavior of TodoTxtMac is to reopen whatever todo.txt files were open when you last quit the app. To enjoy this behavior, do not close your todo.txt file's window prior to quitting the app.\n\nIf the TodoTxtMac is not reopening your files, or keeping a list of them in the \"File > Open Recent\" menu, then you should check the following preferences under System Preferences > General:\n\n1. \"Close windows when quitting an app\" must be unchecked.\n2. \"Recent items\" must not be \"None\".\n\nIf you need to force TodoTxtMac to open a particular todo file on launch, you may set a default todo.txt file in TodoTxtMac's Preferences > Startup.\n\nYou may also force TodoTxtMac to open a particular todo file on launch, you may launch the app with the command-line argument \"todo-file\", in the Terminal, as follows:\n\n    $ open /Applications/TodoTxtMac.app --args -todo-file ~/Documents/todo.txt\n\n## Is this application Dropbox-enabled?\n\nNo. Unlike the official Todo.txt iOS application, this application does not call Dropbox's API. You can sync your file outside of TodoTxtMac via Dropbox or other services.\n\n## TodoTxtMac says my todo.txt file cannot be autosaved. The file has been changed by another application.\n\nYour todo.txt file can get modified outside of TodoTxtMac, especially if you are syncing the file via Dropbox or a similar service. TodoTxtMac uses Cocoa's default document object model to handle the file interactions. This means that the application will warn you of file changes that came from outside the application when you try to make changes to the file, not at the moment the file was changed. To avoid file conflicts, try the following strategies:\n\n1. Reload your TodoTxtMac file manually (press `.`) before making changes to it, if you believe the file was updated (by Dropbox for example) recently.\n2. Close TodoTxtMac when not using it for extended periods.\n3. When presented with the option to \"Save Anyway\" or \"Revert\" changes, always revert changes. You will have to re-do your last action in TodoTxtMac, but you will not lose the changes that originated outside the application.\n\n## Will this project be ported from Objective C to Swift?\n\nWhen Apple officially deprecates Objective C, the plan is to migrate this project to Swift.\n\n# License\n\nThis application is dual-licensed under the GNU General Public License and the MIT License. See LICENSE.txt for full license information.\n\n# For Contributors\n\n## Source Code Conventions\n\nI am striving for very clean code. I am following the following general coding conventions:\n\n- For clarity, limit nesting of brackets to two sets per line, as in: `[[thisString stringValue] isEqualToString:@\"otherStringValue\"]`.\n- Maximum line length of 100 characters.\n- Indent with spaces rather than tabs.\n- Always use curly braces for conditionals and loops.\n- Use descriptive variable and method names.\n\n## Pull Requests\n\nThe project uses [git-flow] to implement Vincent Driessen's [branching model]. All pull requests should be directed at the \"develop\" branch.\n\n[git-flow]: https://github.com/nvie/gitflow\n[branching model]: http://nvie.com/posts/a-successful-git-branching-model/\n\n# Credits/Thanks\n\nThanks to Gina Trapani who created the [Todo.txt][] format and the community of developers who created the command line tools and iOS/Android apps.\n\nThanks to Ben Hughes whose Windows application [todotxt.net][] formed the basis of this application's design and feature set. Todotxt.net is a fantastic program and did not have an analog on the Mac. After starting my application, I contributed some patches to todotxt.net and am happy to be a contributor on such a great project.\n\nThanks to Josh Wright <@BendyTree> for his [RegExCategories][] library.\n\nThanks to Sam Daitzman <@sdaitzman> for the application icon.\n\nThanks to Andy Matuschak and the other contributors for the [Sparkle framework].\n\n[Todo.txt]: http://www.todotxt.com\n[RegExCategories]: https://github.com/bendytree/Objective-C-RegEx-Categories\n[OK Icon]: http://vector.me/browse/329308/ok_icon\n[Vector.me]: http://vector.me/\n[Sparkle framework]: http://sparkle.andymatuschak.org/\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUAppcast.h",
    "content": "//\n//  SUAppcast.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 3/12/06.\n//  Copyright 2006 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SUAPPCAST_H\n#define SUAPPCAST_H\n\n#import <Foundation/Foundation.h>\n#import \"SUExport.h\"\n\n@class SUAppcastItem;\nSU_EXPORT @interface SUAppcast : NSObject<NSURLDownloadDelegate>\n\n@property (copy) NSString *userAgentString;\n@property (copy) NSDictionary *httpHeaders;\n\n- (void)fetchAppcastFromURL:(NSURL *)url completionBlock:(void (^)(NSError *))err;\n- (SUAppcast *)copyWithoutDeltaUpdates;\n\n@property (readonly, copy) NSArray *items;\n@end\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUAppcastItem.h",
    "content": "//\n//  SUAppcastItem.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 3/12/06.\n//  Copyright 2006 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SUAPPCASTITEM_H\n#define SUAPPCASTITEM_H\n\n#import <Foundation/Foundation.h>\n#import \"SUExport.h\"\n\nSU_EXPORT @interface SUAppcastItem : NSObject\n@property (copy, readonly) NSString *title;\n@property (copy, readonly) NSDate *date;\n@property (copy, readonly) NSString *itemDescription;\n@property (strong, readonly) NSURL *releaseNotesURL;\n@property (copy, readonly) NSString *DSASignature;\n@property (copy, readonly) NSString *minimumSystemVersion;\n@property (copy, readonly) NSString *maximumSystemVersion;\n@property (strong, readonly) NSURL *fileURL;\n@property (copy, readonly) NSString *versionString;\n@property (copy, readonly) NSString *displayVersionString;\n@property (copy, readonly) NSDictionary *deltaUpdates;\n@property (strong, readonly) NSURL *infoURL;\n\n// Initializes with data from a dictionary provided by the RSS class.\n- (instancetype)initWithDictionary:(NSDictionary *)dict;\n- (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error;\n\n@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;\n@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;\n@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate;\n\n// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.\n@property (readonly, copy) NSDictionary *propertiesDictionary;\n\n- (NSURL *)infoURL;\n\n@end\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUErrors.h",
    "content": "//\n//  SUErrors.h\n//  Sparkle\n//\n//  Created by C.W. Betts on 10/13/14.\n//  Copyright (c) 2014 Sparkle Project. All rights reserved.\n//\n\n#ifndef SUERRORS_H\n#define SUERRORS_H\n\n#import <Foundation/Foundation.h>\n#import \"SUExport.h\"\n\n/**\n * Error domain used by Sparkle\n */\nSU_EXPORT extern NSString *const SUSparkleErrorDomain;\n\ntypedef NS_ENUM(OSStatus, SUError) {\n    // Appcast phase errors.\n    SUAppcastParseError = 1000,\n    SUNoUpdateError = 1001,\n    SUAppcastError = 1002,\n    SURunningFromDiskImageError = 1003,\n    \n    // Downlaod phase errors.\n    SUTemporaryDirectoryError = 2000,\n    \n    // Extraction phase errors.\n    SUUnarchivingError = 3000,\n    SUSignatureError = 3001,\n    \n    // Installation phase errors.\n    SUFileCopyFailure = 4000,\n    SUAuthenticationFailure = 4001,\n    SUMissingUpdateError = 4002,\n    SUMissingInstallerToolError = 4003,\n    SURelaunchError = 4004,\n    SUInstallationError = 4005,\n    SUDowngradeError = 4006,\n    \n    // System phase errors\n    SUSystemPowerOffError = 5000\n};\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUExport.h",
    "content": "//\n//  SUExport.h\n//  Sparkle\n//\n//  Created by Jake Petroules on 2014-08-23.\n//  Copyright (c) 2014 Sparkle Project. All rights reserved.\n//\n\n#ifndef SUEXPORT_H\n#define SUEXPORT_H\n\n#ifdef BUILDING_SPARKLE\n#define SU_EXPORT __attribute__((visibility(\"default\")))\n#else\n#define SU_EXPORT\n#endif\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h",
    "content": "//\n//  SUStandardVersionComparator.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 12/21/07.\n//  Copyright 2007 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SUSTANDARDVERSIONCOMPARATOR_H\n#define SUSTANDARDVERSIONCOMPARATOR_H\n\n#import <Foundation/Foundation.h>\n#import \"SUExport.h\"\n#import \"SUVersionComparisonProtocol.h\"\n\n/*!\n    Sparkle's default version comparator.\n\n    This comparator is adapted from MacPAD, by Kevin Ballard.\n    It's \"dumb\" in that it does essentially string comparison,\n    in components split by character type.\n*/\nSU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison>\n\n/*!\n    Returns a singleton instance of the comparator.\n*/\n+ (SUStandardVersionComparator *)defaultComparator;\n\n/*!\n    Compares version strings through textual analysis.\n\n    See the implementation for more details.\n*/\n- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;\n@end\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUUpdater.h",
    "content": "//\n//  SUUpdater.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 1/4/06.\n//  Copyright 2006 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SUUPDATER_H\n#define SUUPDATER_H\n\n#import <Foundation/Foundation.h>\n#import \"SUExport.h\"\n#import \"SUVersionComparisonProtocol.h\"\n#import \"SUVersionDisplayProtocol.h\"\n\n@class SUAppcastItem, SUAppcast;\n\n@protocol SUUpdaterDelegate;\n\n/*!\n    The main API in Sparkle for controlling the update mechanism.\n\n    This class is used to configure the update paramters as well as manually\n    and automatically schedule and control checks for updates.\n */\nSU_EXPORT @interface SUUpdater : NSObject\n\n@property (unsafe_unretained) IBOutlet id<SUUpdaterDelegate> delegate;\n\n+ (SUUpdater *)sharedUpdater;\n+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;\n- (instancetype)initForBundle:(NSBundle *)bundle;\n\n@property (readonly, strong) NSBundle *hostBundle;\n@property (strong, readonly) NSBundle *sparkleBundle;\n\n@property BOOL automaticallyChecksForUpdates;\n\n@property NSTimeInterval updateCheckInterval;\n\n/*!\n * The URL of the appcast used to download update information.\n *\n * This property must be called on the main thread.\n */\n@property (copy) NSURL *feedURL;\n\n@property (nonatomic, copy) NSString *userAgentString;\n\n@property (copy) NSDictionary *httpHeaders;\n\n@property BOOL sendsSystemProfile;\n\n@property BOOL automaticallyDownloadsUpdates;\n\n@property (nonatomic, copy) NSString *decryptionPassword;\n\n/*!\n    Explicitly checks for updates and displays a progress dialog while doing so.\n\n    This method is meant for a main menu item.\n    Connect any menu item to this action in Interface Builder,\n    and Sparkle will check for updates and report back its findings verbosely\n    when it is invoked.\n */\n- (IBAction)checkForUpdates:(id)sender;\n\n/*!\n    Checks for updates, but does not display any UI unless an update is found.\n\n    This is meant for programmatically initating a check for updates. That is,\n    it will display no UI unless it actually finds an update, in which case it\n    proceeds as usual.\n\n    If the fully automated updating is turned on, however, this will invoke that\n    behavior, and if an update is found, it will be downloaded and prepped for\n    installation.\n */\n- (void)checkForUpdatesInBackground;\n\n/*!\n    Checks for updates and, if available, immediately downloads and installs them.\n    A progress dialog is shown but the user will never be prompted to read the\n    release notes.\n    \n    You may want to respond to the userDidCancelDownload delegate method in case\n    the user clicks the \"Cancel\" button while the update is downloading.\n */\n- (void)installUpdatesIfAvailable;\n\n/*!\n    Returns the date of last update check.\n\n    \\returns \\c nil if no check has been performed.\n */\n@property (readonly, copy) NSDate *lastUpdateCheckDate;\n\n/*!\n    Begins a \"probing\" check for updates which will not actually offer to\n    update to that version.\n\n    However, the delegate methods\n    SUUpdaterDelegate::updater:didFindValidUpdate: and\n    SUUpdaterDelegate::updaterDidNotFindUpdate: will be called,\n    so you can use that information in your UI.\n */\n- (void)checkForUpdateInformation;\n\n/*!\n    Appropriately schedules or cancels the update checking timer according to\n    the preferences for time interval and automatic checks.\n\n    This call does not change the date of the next check,\n    but only the internal NSTimer.\n */\n- (void)resetUpdateCycle;\n\n@property (readonly) BOOL updateInProgress;\n\n@end\n\n// -----------------------------------------------------------------------------\n// SUUpdater Notifications for events that might be interesting to more than just the delegate\n// The updater will be the notification object\n// -----------------------------------------------------------------------------\nSU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;\nSU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;\nSU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;\nSU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;\n#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;\n#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;\n\n// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo\nSU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;\n// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo\nSU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;\n\n// -----------------------------------------------------------------------------\n//\tSUUpdater Delegate:\n// -----------------------------------------------------------------------------\n\n/*!\n    Provides methods to control the behavior of an SUUpdater object.\n */\n@protocol SUUpdaterDelegate <NSObject>\n@optional\n\n/*!\n    Returns whether to allow Sparkle to pop up.\n\n    For example, this may be used to prevent Sparkle from interrupting a setup assistant.\n\n    \\param updater The SUUpdater instance.\n */\n- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;\n\n/*!\n    Returns additional parameters to append to the appcast URL's query string.\n\n    This is potentially based on whether or not Sparkle will also be sending along the system profile.\n\n    \\param updater The SUUpdater instance.\n    \\param sendingProfile Whether the system profile will also be sent.\n\n    \\return An array of dictionaries with keys: \"key\", \"value\", \"displayKey\", \"displayValue\", the latter two being specifically for display to the user.\n */\n- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;\n\n/*!\n    Returns a custom appcast URL.\n\n    Override this to dynamically specify the entire URL.\n\n    \\param updater The SUUpdater instance.\n */\n- (NSString *)feedURLStringForUpdater:(SUUpdater *)updater;\n\n/*!\n    Returns whether Sparkle should prompt the user about automatic update checks.\n\n    Use this to override the default behavior.\n\n    \\param updater The SUUpdater instance.\n */\n- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;\n\n/*!\n    Called after Sparkle has downloaded the appcast from the remote server.\n\n    Implement this if you want to do some special handling with the appcast once it finishes loading.\n\n    \\param updater The SUUpdater instance.\n    \\param appcast The appcast that was downloaded from the remote server.\n */\n- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;\n\n/*!\n    Returns the item in the appcast corresponding to the update that should be installed.\n\n    If you're using special logic or extensions in your appcast,\n    implement this to use your own logic for finding a valid update, if any,\n    in the given appcast.\n\n    \\param appcast The appcast that was downloaded from the remote server.\n    \\param updater The SUUpdater instance.\n */\n- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;\n\n/*!\n    Called when a valid update is found by the update driver.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that is proposed to be installed.\n */\n- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;\n\n/*!\n    Called when a valid update is not found.\n\n    \\param updater The SUUpdater instance.\n */\n- (void)updaterDidNotFindUpdate:(SUUpdater *)updater;\n\n/*!\n    Called immediately before downloading the specified update.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that is proposed to be downloaded.\n    \\param request The mutable URL request that will be used to download the update.\n */\n- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;\n\n/*!\n    Called after the specified update failed to download.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that failed to download.\n    \\param error The error generated by the failed download.\n */\n- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;\n\n/*!\n    Called when the user clicks the cancel button while and update is being downloaded.\n\n    \\param updater The SUUpdater instance.\n */\n- (void)userDidCancelDownload:(SUUpdater *)updater;\n\n/*!\n    Called immediately before installing the specified update.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that is proposed to be installed.\n */\n- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;\n\n/*!\n    Returns whether the relaunch should be delayed in order to perform other tasks.\n\n    This is not called if the user didn't relaunch on the previous update,\n    in that case it will immediately restart.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that is proposed to be installed.\n    \\param invocation The invocation that must be completed before continuing with the relaunch.\n\n    \\return \\c YES to delay the relaunch until \\p invocation is invoked.\n */\n- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;\n\n/*!\n    Returns whether the application should be relaunched at all.\n\n    Some apps \\b cannot be relaunched under certain circumstances.\n    This method can be used to explicitly prevent a relaunch.\n\n    \\param updater The SUUpdater instance.\n */\n- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;\n\n/*!\n    Called immediately before relaunching.\n\n    \\param updater The SUUpdater instance.\n */\n- (void)updaterWillRelaunchApplication:(SUUpdater *)updater;\n\n/*!\n    Returns an object that compares version numbers to determine their arithmetic relation to each other.\n\n    This method allows you to provide a custom version comparator.\n    If you don't implement this method or return \\c nil,\n    the standard version comparator will be used.\n\n    \\sa SUStandardVersionComparator\n\n    \\param updater The SUUpdater instance.\n */\n- (id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;\n\n/*!\n    Returns an object that formats version numbers for display to the user.\n\n    If you don't implement this method or return \\c nil,\n    the standard version formatter will be used.\n\n    \\sa SUUpdateAlert\n\n    \\param updater The SUUpdater instance.\n */\n- (id<SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;\n\n/*!\n    Returns the path which is used to relaunch the client after the update is installed.\n\n    The default is the path of the host bundle.\n\n    \\param updater The SUUpdater instance.\n */\n- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;\n\n/*!\n    Called before an updater shows a modal alert window,\n    to give the host the opportunity to hide attached windows that may get in the way.\n\n    \\param updater The SUUpdater instance.\n */\n- (void)updaterWillShowModalAlert:(SUUpdater *)updater;\n\n/*!\n    Called after an updater shows a modal alert window,\n    to give the host the opportunity to hide attached windows that may get in the way.\n\n    \\param updater The SUUpdater instance.\n */\n- (void)updaterDidShowModalAlert:(SUUpdater *)updater;\n\n/*!\n    Called when an update is scheduled to be silently installed on quit.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that is proposed to be installed.\n    \\param invocation Can be used to trigger an immediate silent install and relaunch.\n */\n- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;\n\n/*!\n    Calls after an update that was scheduled to be silently installed on quit has been canceled.\n\n    \\param updater The SUUpdater instance.\n    \\param item The appcast item corresponding to the update that was proposed to be installed.\n */\n- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item;\n\n/*!\n    Called after an update is aborted due to an error.\n\n    \\param updater The SUUpdater instance.\n    \\param error The error that caused the abort\n */\n- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;\n\n@end\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h",
    "content": "//\n//  SUVersionComparisonProtocol.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 12/21/07.\n//  Copyright 2007 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SUVERSIONCOMPARISONPROTOCOL_H\n#define SUVERSIONCOMPARISONPROTOCOL_H\n\n#import <Cocoa/Cocoa.h>\n#import \"SUExport.h\"\n\n/*!\n    Provides version comparison facilities for Sparkle.\n*/\n@protocol SUVersionComparison\n\n/*!\n    An abstract method to compare two version strings.\n\n    Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a,\n    and NSOrderedSame if they are equivalent.\n*/\n- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!\n\n@end\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h",
    "content": "//\n//  SUVersionDisplayProtocol.h\n//  EyeTV\n//\n//  Created by Uli Kusterer on 08.12.09.\n//  Copyright 2009 Elgato Systems GmbH. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n#import \"SUExport.h\"\n\n/*!\n    Applies special display formatting to version numbers.\n*/\n@protocol SUVersionDisplay\n\n/*!\n    Formats two version strings.\n\n    Both versions are provided so that important distinguishing information\n    can be displayed while also leaving out unnecessary/confusing parts.\n*/\n- (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB;\n\n@end\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Headers/Sparkle.h",
    "content": "//\n//  Sparkle.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)\n//  Copyright 2006 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SPARKLE_H\n#define SPARKLE_H\n\n#import <Cocoa/Cocoa.h>\n\n// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless\n// there are name-space collisions) so we can list all of them to start with:\n\n#import \"SUAppcast.h\"\n#import \"SUAppcastItem.h\"\n#import \"SUStandardVersionComparator.h\"\n#import \"SUUpdater.h\"\n#import \"SUVersionComparisonProtocol.h\"\n#import \"SUVersionDisplayProtocol.h\"\n#import \"SUErrors.h\"\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Modules/module.modulemap",
    "content": "framework module Sparkle {\n  umbrella header \"Sparkle.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h",
    "content": "//\n//  SUUnarchiver.h\n//  Sparkle\n//\n//  Created by Andy Matuschak on 3/16/06.\n//  Copyright 2006 Andy Matuschak. All rights reserved.\n//\n\n#ifndef SUUNARCHIVER_H\n#define SUUNARCHIVER_H\n\n#import <Foundation/Foundation.h>\n\n@class SUHost;\n@protocol SUUnarchiverDelegate;\n\n@interface SUUnarchiver : NSObject\n\n@property (copy, readonly) NSString *archivePath;\n@property (copy, readonly) NSString *updateHostBundlePath;\n@property (copy, readonly) NSString *decryptionPassword;\n@property (weak) id<SUUnarchiverDelegate> delegate;\n\n+ (SUUnarchiver *)unarchiverForPath:(NSString *)path updatingHostBundlePath:(NSString *)host withPassword:(NSString *)decryptionPassword;\n\n- (void)start;\n@end\n\n@protocol SUUnarchiverDelegate <NSObject>\n- (void)unarchiverDidFinish:(SUUnarchiver *)unarchiver;\n- (void)unarchiverDidFail:(SUUnarchiver *)unarchiver;\n@optional\n- (void)unarchiver:(SUUnarchiver *)unarchiver extractedProgress:(double)progress;\n@end\n\n#endif\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>15E49a</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>Autoupdate</string>\n\t<key>CFBundleIconFile</key>\n\t<string>AppIcon</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.sparkle-project.Sparkle.Autoupdate</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.14.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.14.0</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>7C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>15C43</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.11</string>\n\t<key>DTXcode</key>\n\t<string>0721</string>\n\t<key>DTXcodeBuild</key>\n\t<string>7C1002</string>\n\t<key>LSBackgroundOnly</key>\n\t<string>1</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>10.7</string>\n\t<key>LSUIElement</key>\n\t<string>1</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo",
    "content": "APPL????"
  },
  {
    "path": "Sparkle.framework/Versions/A/Resources/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>15E49a</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>Sparkle</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.sparkle-project.Sparkle</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Sparkle</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.14.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.14.0</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>7C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>15C43</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.11</string>\n\t<key>DTXcode</key>\n\t<string>0721</string>\n\t<key>DTXcodeBuild</key>\n\t<string>7C1002</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ADP2,1</key>\n\t<string>Developer Transition Kit</string>\n\t<key>iMac1,1</key>\n\t<string>iMac G3 (Rev A-D)</string>\n\t<key>iMac4,1</key>\n\t<string>iMac (Core Duo)</string>\n\t<key>iMac4,2</key>\n\t<string>iMac for Education (17 inch, Core Duo)</string>\n\t<key>iMac5,1</key>\n\t<string>iMac (Core 2 Duo, 17 or 20 inch, SuperDrive)</string>\n\t<key>iMac5,2</key>\n\t<string>iMac (Core 2 Duo, 17 inch, Combo Drive)</string>\n\t<key>iMac6,1</key>\n\t<string>iMac (Core 2 Duo, 24 inch, SuperDrive)</string>\n\t<key>iMac7,1</key>\n\t<string>iMac Intel Core 2 Duo (aluminum enclosure)</string>\n\t<key>iMac8,1</key>\n\t<string>iMac (Core 2 Duo, 20 or 24 inch, Early 2008 )</string>\n\t<key>iMac9,1</key>\n\t<string>iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 )</string>\n\t<key>iMac10,1</key>\n\t<string>iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 )</string>\n\t<key>iMac11,1</key>\n\t<string>iMac (Core i5 or i7, 27 inch Late 2009)</string>\n\t<key>iMac11,2</key>\n\t<string>21.5&quot; iMac (mid 2010)</string>\n\t<key>iMac11,3</key>\n\t<string>iMac (Core i5 or i7, 27 inch Mid 2010)</string>\n\t<key>iMac12,1</key>\n\t<string>iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011)</string>\n\t<key>iMac12,2</key>\n\t<string>iMac (Core i5 or i7, 27 inch Mid 2011)</string>\n\t<key>iMac13,1</key>\n\t<string>iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013)</string>\n\t<key>iMac13,2</key>\n\t<string>iMac (Core i5 or i7, 27 inch Late 2012)</string>\n\t<key>iMac14,1</key>\n\t<string>iMac (Core i5, 21.5 inch Late 2013)</string>\n\t<key>iMac14,2</key>\n\t<string>iMac (Core i5 or i7, 27 inch Late 2013)</string>\n\t<key>iMac14,3</key>\n\t<string>iMac (Core i5 or i7, 21.5 inch Late 2013)</string>\n\t<key>iMac14,4</key>\n\t<string>iMac (Core i5, 21.5 inch Mid 2014)</string>\n\t<key>iMac15,1</key>\n\t<string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2014 or Mid 2015)</string>\n\t<key>iMac16,1</key>\n\t<string>iMac (Core i5, 21,5 inch Late 2015)</string>\n\t<key>iMac16,2</key>\n\t<string>iMac (Retina 4K Core i5 or i7, 21.5 inch Late 2015)</string>\n\t<key>iMac17,1</key>\n\t<string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2015)</string>\n\t<key>MacBook1,1</key>\n\t<string>MacBook (Core Duo)</string>\n\t<key>MacBook2,1</key>\n\t<string>MacBook (Core 2 Duo)</string>\n\t<key>MacBook4,1</key>\n\t<string>MacBook (Core 2 Duo Feb 2008)</string>\n\t<key>MacBook5,1</key>\n\t<string>MacBook (Core 2 Duo, Late 2008, Unibody)</string>\n\t<key>MacBook5,2</key>\n\t<string>MacBook (Core 2 Duo, Early 2009, White)</string>\n\t<key>MacBook6,1</key>\n\t<string>MacBook (Core 2 Duo, Late 2009, Unibody)</string>\n\t<key>MacBook7,1</key>\n\t<string>MacBook (Core 2 Duo, Mid 2010, White)</string>\n\t<key>MacBook8,1</key>\n\t<string>MacBook (Core M, 12 inch, Early 2015)</string>\n\t<key>MacBookAir1,1</key>\n\t<string>MacBook Air (Core 2 Duo, 13 inch, Early 2008)</string>\n\t<key>MacBookAir2,1</key>\n\t<string>MacBook Air (Core 2 Duo, 13 inch, Mid 2009)</string>\n\t<key>MacBookAir3,1</key>\n\t<string>MacBook Air (Core 2 Duo, 11 inch, Late 2010)</string>\n\t<key>MacBookAir3,2</key>\n\t<string>MacBook Air (Core 2 Duo, 13 inch, Late 2010)</string>\n\t<key>MacBookAir4,1</key>\n\t<string>MacBook Air (Core i5 or i7, 11 inch, Mid 2011)</string>\n\t<key>MacBookAir4,2</key>\n\t<string>MacBook Air (Core i5 or i7, 13 inch, Mid 2011)</string>\n\t<key>MacBookAir5,1</key>\n\t<string>MacBook Air (Core i5 or i7, 11 inch, Mid 2012)</string>\n\t<key>MacBookAir5,2</key>\n\t<string>MacBook Air (Core i5 or i7, 13 inch, Mid 2012)</string>\n\t<key>MacBookAir6,1</key>\n\t<string>MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014)</string>\n\t<key>MacBookAir6,2</key>\n\t<string>MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014)</string>\n\t<key>MacBookAir7,1</key>\n\t<string>MacBook Air (Core i5 or i7, 11 inch, Early 2015)</string>\n\t<key>MacBookAir7,2</key>\n\t<string>MacBook Air (Core i5 or i7, 13 inch, Early 2015)</string>\n\t<key>MacBookPro1,1</key>\n\t<string>MacBook Pro Core Duo (15-inch)</string>\n\t<key>MacBookPro1,2</key>\n\t<string>MacBook Pro Core Duo (17-inch)</string>\n\t<key>MacBookPro2,1</key>\n\t<string>MacBook Pro Core 2 Duo (17-inch)</string>\n\t<key>MacBookPro2,2</key>\n\t<string>MacBook Pro Core 2 Duo (15-inch)</string>\n\t<key>MacBookPro3,1</key>\n\t<string>MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo)</string>\n\t<key>MacBookPro3,2</key>\n\t<string>MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo)</string>\n\t<key>MacBookPro4,1</key>\n\t<string>MacBook Pro (Core 2 Duo Feb 2008)</string>\n\t<key>MacBookPro5,1</key>\n\t<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>\n\t<key>MacBookPro5,2</key>\n\t<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>\n\t<key>MacBookPro5,3</key>\n\t<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>\n\t<key>MacBookPro5,4</key>\n\t<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>\n\t<key>MacBookPro5,5</key>\n\t<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>\n\t<key>MacBookPro6,1</key>\n\t<string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>\n\t<key>MacBookPro6,2</key>\n\t<string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>\n\t<key>MacBookPro7,1</key>\n\t<string>MacBook Pro Intel Core 2 Duo (mid 2010)</string>\n\t<key>MacBookPro8,1</key>\n\t<string>MacBook Pro Intel Core i5, Intel Core i7, 13&quot; (early 2011)</string>\n\t<key>MacBookPro8,2</key>\n\t<string>MacBook Pro Intel Core i7, 15&quot; (early 2011)</string>\n\t<key>MacBookPro8,3</key>\n\t<string>MacBook Pro Intel Core i7, 17&quot; (early 2011)</string>\n\t<key>MacBookPro9,1</key>\n\t<string>MacBook Pro (15-inch, Mid 2012)</string>\n\t<key>MacBookPro9,2</key>\n\t<string>MacBook Pro (13-inch, Mid 2012)</string>\n\t<key>MacBookPro10,1</key>\n\t<string>MacBook Pro (Retina, Mid 2012)</string>\n\t<key>MacBookPro10,2</key>\n\t<string>MacBook Pro (Retina, 13-inch, Late 2012)</string>\n\t<key>MacBookPro11,1</key>\n\t<string>MacBook Pro (Retina, 13-inch, Late 2013)</string>\n\t<key>MacBookPro11,2</key>\n\t<string>MacBook Pro (Retina, 15-inch, Late 2013)</string>\n\t<key>MacBookPro11,3</key>\n\t<string>MacBook Pro (Retina, 15-inch, Late 2013)</string>\n\t<key>MacbookPro11,4</key>\n\t<string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>\n\t<key>MacbookPro11,5</key>\n\t<string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>\n\t<key>MacbookPro12,1 </key>\n\t<string>MacBook Pro (Retina, 13-inch, Early 2015)</string>\n\t<key>Macmini1,1</key>\n\t<string>Mac Mini (Core Solo/Duo)</string>\n\t<key>Macmini2,1</key>\n\t<string>Mac mini Intel Core</string>\n\t<key>Macmini3,1</key>\n\t<string>Mac mini Intel Core</string>\n\t<key>Macmini4,1</key>\n\t<string>Mac mini Intel Core (Mid 2010)</string>\n\t<key>Macmini5,1</key>\n\t<string>Mac mini (Core i5, Mid 2011)</string>\n\t<key>Macmini5,2</key>\n\t<string>Mac mini (Core i5 or Core i7, Mid 2011)</string>\n\t<key>Macmini5,3</key>\n\t<string>Mac mini (Core i7, Server, Mid 2011)</string>\n\t<key>Macmini6,1</key>\n\t<string>Mac mini (Core i5, Late 2012)</string>\n\t<key>Macmini6,2</key>\n\t<string>Mac mini (Core i7, Normal or Server, Late 2012)</string>\n\t<key>Macmini7,1</key>\n\t<string>Mac mini (Core i5 or Core i7, Late 2014)</string>\n\t<key>MacPro1,1,Quad</key>\n\t<string>Mac Pro</string>\n\t<key>MacPro1,1</key>\n\t<string>Mac Pro (four-core)</string>\n\t<key>MacPro2,1</key>\n\t<string>Mac Pro (eight-core)</string>\n\t<key>MacPro3,1</key>\n\t<string>Mac Pro (January 2008 4- or 8- core &quot;Harpertown&quot;)</string>\n\t<key>MacPro4,1</key>\n\t<string>Mac Pro (March 2009)</string>\n\t<key>MacPro5,1</key>\n\t<string>Mac Pro (2010 or 2012)</string>\n\t<key>MacPro6,1</key>\n\t<string>Mac Pro (Late 2013)</string>\n\t<key>PowerBook1,1</key>\n\t<string>PowerBook G3</string>\n\t<key>PowerBook2,1</key>\n\t<string>iBook G3</string>\n\t<key>PowerBook2,2</key>\n\t<string>iBook G3 (FireWire)</string>\n\t<key>PowerBook2,3</key>\n\t<string>iBook G3</string>\n\t<key>PowerBook2,4</key>\n\t<string>iBook G3</string>\n\t<key>PowerBook3,1</key>\n\t<string>PowerBook G3 (FireWire)</string>\n\t<key>PowerBook3,2</key>\n\t<string>PowerBook G4</string>\n\t<key>PowerBook3,3</key>\n\t<string>PowerBook G4 (Gigabit Ethernet)</string>\n\t<key>PowerBook3,4</key>\n\t<string>PowerBook G4 (DVI)</string>\n\t<key>PowerBook3,5</key>\n\t<string>PowerBook G4 (1GHz / 867MHz)</string>\n\t<key>PowerBook4,1</key>\n\t<string>iBook G3 (Dual USB, Late 2001)</string>\n\t<key>PowerBook4,2</key>\n\t<string>iBook G3 (16MB VRAM)</string>\n\t<key>PowerBook4,3</key>\n\t<string>iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003)</string>\n\t<key>PowerBook5,1</key>\n\t<string>PowerBook G4 (17 inch)</string>\n\t<key>PowerBook5,2</key>\n\t<string>PowerBook G4 (15 inch FW 800)</string>\n\t<key>PowerBook5,3</key>\n\t<string>PowerBook G4 (17-inch 1.33GHz)</string>\n\t<key>PowerBook5,4</key>\n\t<string>PowerBook G4 (15 inch 1.5/1.33GHz)</string>\n\t<key>PowerBook5,5</key>\n\t<string>PowerBook G4 (17-inch 1.5GHz)</string>\n\t<key>PowerBook5,6</key>\n\t<string>PowerBook G4 (15 inch 1.67GHz/1.5GHz)</string>\n\t<key>PowerBook5,7</key>\n\t<string>PowerBook G4 (17-inch 1.67GHz)</string>\n\t<key>PowerBook5,8</key>\n\t<string>PowerBook G4 (Double layer SD, 15 inch)</string>\n\t<key>PowerBook5,9</key>\n\t<string>PowerBook G4 (Double layer SD, 17 inch)</string>\n\t<key>PowerBook6,1</key>\n\t<string>PowerBook G4 (12 inch)</string>\n\t<key>PowerBook6,2</key>\n\t<string>PowerBook G4 (12 inch, DVI)</string>\n\t<key>PowerBook6,3</key>\n\t<string>iBook G4</string>\n\t<key>PowerBook6,4</key>\n\t<string>PowerBook G4 (12 inch 1.33GHz)</string>\n\t<key>PowerBook6,5</key>\n\t<string>iBook G4 (Early-Late 2004)</string>\n\t<key>PowerBook6,7</key>\n\t<string>iBook G4 (Mid 2005)</string>\n\t<key>PowerBook6,8</key>\n\t<string>PowerBook G4 (12 inch 1.5GHz)</string>\n\t<key>PowerMac1,1</key>\n\t<string>Power Macintosh G3 (Blue &amp; White)</string>\n\t<key>PowerMac1,2</key>\n\t<string>Power Macintosh G4 (PCI Graphics)</string>\n\t<key>PowerMac2,1</key>\n\t<string>iMac G3 (Slot-loading CD-ROM)</string>\n\t<key>PowerMac2,2</key>\n\t<string>iMac G3 (Summer 2000)</string>\n\t<key>PowerMac3,1</key>\n\t<string>Power Macintosh G4 (AGP Graphics)</string>\n\t<key>PowerMac3,2</key>\n\t<string>Power Macintosh G4 (AGP Graphics)</string>\n\t<key>PowerMac3,3</key>\n\t<string>Power Macintosh G4 (Gigabit Ethernet)</string>\n\t<key>PowerMac3,4</key>\n\t<string>Power Macintosh G4 (Digital Audio)</string>\n\t<key>PowerMac3,5</key>\n\t<string>Power Macintosh G4 (Quick Silver)</string>\n\t<key>PowerMac3,6</key>\n\t<string>Power Macintosh G4 (Mirrored Drive Door)</string>\n\t<key>PowerMac4,1</key>\n\t<string>iMac G3 (Early/Summer 2001)</string>\n\t<key>PowerMac4,2</key>\n\t<string>iMac G4 (Flat Panel)</string>\n\t<key>PowerMac4,4</key>\n\t<string>eMac</string>\n\t<key>PowerMac4,5</key>\n\t<string>iMac G4 (17-inch Flat Panel)</string>\n\t<key>PowerMac5,1</key>\n\t<string>Power Macintosh G4 Cube</string>\n\t<key>PowerMac5,2</key>\n\t<string>Power Mac G4 Cube</string>\n\t<key>PowerMac6,1</key>\n\t<string>iMac G4 (USB 2.0)</string>\n\t<key>PowerMac6,3</key>\n\t<string>iMac G4 (20-inch Flat Panel)</string>\n\t<key>PowerMac6,4</key>\n\t<string>eMac (USB 2.0, 2005)</string>\n\t<key>PowerMac7,2</key>\n\t<string>Power Macintosh G5</string>\n\t<key>PowerMac7,3</key>\n\t<string>Power Macintosh G5</string>\n\t<key>PowerMac8,1</key>\n\t<string>iMac G5</string>\n\t<key>PowerMac8,2</key>\n\t<string>iMac G5 (Ambient Light Sensor)</string>\n\t<key>PowerMac9,1</key>\n\t<string>Power Macintosh G5 (Late 2005)</string>\n\t<key>PowerMac10,1</key>\n\t<string>Mac Mini G4</string>\n\t<key>PowerMac10,2</key>\n\t<string>Mac Mini (Late 2005)</string>\n\t<key>PowerMac11,2</key>\n\t<string>Power Macintosh G5 (Late 2005)</string>\n\t<key>PowerMac12,1</key>\n\t<string>iMac G5 (iSight)</string>\n\t<key>RackMac1,1</key>\n\t<string>Xserve G4</string>\n\t<key>RackMac1,2</key>\n\t<string>Xserve G4 (slot-loading, cluster node)</string>\n\t<key>RackMac3,1</key>\n\t<string>Xserve G5</string>\n\t<key>Xserve1,1</key>\n\t<string>Xserve (Intel Xeon)</string>\n\t<key>Xserve2,1</key>\n\t<string>Xserve (January 2008 quad-core)</string>\n\t<key>Xserve3,1</key>\n\t<string>Xserve (early 2009)</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "TodoTxtMac/Base.lproj/MainMenu.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"10117\" systemVersion=\"15F34\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"10117\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"NSApplication\"/>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\">\n            <connections>\n                <outlet property=\"delegate\" destination=\"lsB-8n-fAQ\" id=\"u6u-dm-tYl\"/>\n            </connections>\n        </customObject>\n        <menu title=\"AMainMenu\" systemMenu=\"main\" id=\"29\">\n            <items>\n                <menuItem title=\"TodoTxtMac\" id=\"56\">\n                    <menu key=\"submenu\" title=\"TodoTxtMac\" systemMenu=\"apple\" id=\"57\">\n                        <items>\n                            <menuItem title=\"About TodoTxtMac\" id=\"58\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"orderFrontStandardAboutPanel:\" target=\"-2\" id=\"142\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Check for Updates...\" id=\"xc3-uB-1hs\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"checkForUpdates:\" target=\"565-dx-Ism\" id=\"J12-bH-I7r\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"236\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" command=\"YES\"/>\n                            </menuItem>\n                            <menuItem title=\"Preferences…\" keyEquivalent=\",\" id=\"129\">\n                                <connections>\n                                    <action selector=\"openPreferencesWindow:\" target=\"7QU-ZR-XSK\" id=\"6wW-fR-gGb\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"143\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" command=\"YES\"/>\n                            </menuItem>\n                            <menuItem title=\"Services\" id=\"131\">\n                                <menu key=\"submenu\" title=\"Services\" systemMenu=\"services\" id=\"130\"/>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"144\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" command=\"YES\"/>\n                            </menuItem>\n                            <menuItem title=\"Hide TodoTxtMac\" keyEquivalent=\"h\" id=\"134\">\n                                <connections>\n                                    <action selector=\"hide:\" target=\"-1\" id=\"367\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Hide Others\" keyEquivalent=\"h\" id=\"145\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"hideOtherApplications:\" target=\"-1\" id=\"368\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Show All\" id=\"150\">\n                                <connections>\n                                    <action selector=\"unhideAllApplications:\" target=\"-1\" id=\"370\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"149\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" command=\"YES\"/>\n                            </menuItem>\n                            <menuItem title=\"Quit TodoTxtMac\" keyEquivalent=\"q\" id=\"136\">\n                                <connections>\n                                    <action selector=\"terminate:\" target=\"-3\" id=\"448\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"File\" id=\"TdN-Dv-raJ\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"File\" id=\"INu-wF-cUM\">\n                        <items>\n                            <menuItem title=\"New\" keyEquivalent=\"n\" id=\"g3T-7j-OsP\">\n                                <connections>\n                                    <action selector=\"newDocument:\" target=\"-1\" id=\"YhP-J5-FbS\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Open…\" keyEquivalent=\"o\" id=\"0Rb-22-wxm\">\n                                <connections>\n                                    <action selector=\"openDocument:\" target=\"-1\" id=\"HlJ-9k-4FJ\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Open Recent\" id=\"2hD-cz-gXK\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <menu key=\"submenu\" title=\"Open Recent\" systemMenu=\"recentDocuments\" id=\"6YB-e5-wOI\">\n                                    <items>\n                                        <menuItem title=\"Clear Menu\" id=\"tIp-4p-jWS\">\n                                            <connections>\n                                                <action selector=\"clearRecentDocuments:\" target=\"-1\" id=\"8HD-YM-8bP\"/>\n                                            </connections>\n                                        </menuItem>\n                                    </items>\n                                </menu>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"d8H-fy-eaD\"/>\n                            <menuItem title=\"Close\" keyEquivalent=\"w\" id=\"Kcg-cx-ph1\">\n                                <connections>\n                                    <action selector=\"performClose:\" target=\"-1\" id=\"BB2-Dp-6xc\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Close All\" alternate=\"YES\" keyEquivalent=\"w\" id=\"Z9J-7O-Bas\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"closeAllWindows:\" target=\"7QU-ZR-XSK\" id=\"Ebz-IH-BZ1\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Save\" keyEquivalent=\"s\" id=\"IJj-uK-2iI\">\n                                <connections>\n                                    <action selector=\"saveDocument:\" target=\"-1\" id=\"hkA-hA-5PU\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Save As…\" keyEquivalent=\"S\" id=\"Vbg-yR-v7K\">\n                                <connections>\n                                    <action selector=\"saveDocumentAs:\" target=\"-1\" id=\"9fY-86-pQP\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Revert to Saved\" id=\"6AX-Xe-5PC\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"revertDocumentToSaved:\" target=\"-1\" id=\"Zgp-ln-mz5\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"f5H-JZ-syD\"/>\n                            <menuItem title=\"Get Info (Metadata)\" keyEquivalent=\"i\" id=\"hel-oa-j2F\">\n                                <connections>\n                                    <action selector=\"showTasklistMetadata:\" target=\"-1\" id=\"e0z-7y-0CN\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"9Ex-lN-cax\"/>\n                            <menuItem title=\"Reload\" keyEquivalent=\".\" id=\"Ntd-2t-4s5\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"reloadFile:\" target=\"-1\" id=\"bcz-EK-Zbg\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Reload All\" alternate=\"YES\" keyEquivalent=\".\" id=\"Q6W-AH-Whq\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\"/>\n                                <connections>\n                                    <action selector=\"reloadAll:\" target=\"7QU-ZR-XSK\" id=\"2NE-Np-SLF\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Archive Completed Tasks\" keyEquivalent=\"a\" id=\"Kkd-iR-JVT\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"archiveCompletedTasks:\" target=\"-1\" id=\"yya-aD-oKe\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"Edit\" id=\"217\">\n                    <menu key=\"submenu\" title=\"Edit\" id=\"205\">\n                        <items>\n                            <menuItem title=\"Undo\" keyEquivalent=\"z\" id=\"207\">\n                                <connections>\n                                    <action selector=\"undo:\" target=\"-1\" id=\"223\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Redo\" keyEquivalent=\"Z\" id=\"215\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"redo:\" target=\"-1\" id=\"231\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"206\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" command=\"YES\"/>\n                            </menuItem>\n                            <menuItem title=\"Cut\" keyEquivalent=\"x\" id=\"199\">\n                                <connections>\n                                    <action selector=\"cut:\" target=\"-1\" id=\"228\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Copy\" keyEquivalent=\"c\" id=\"197\">\n                                <connections>\n                                    <action selector=\"copy:\" target=\"-1\" id=\"224\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Copy Task to New Task\" tag=\"7000\" keyEquivalent=\"C\" id=\"aGg-gt-UIO\">\n                                <connections>\n                                    <action selector=\"copyTaskToNewTask:\" target=\"-1\" id=\"X2j-OZ-tBd\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Paste\" keyEquivalent=\"v\" id=\"203\">\n                                <connections>\n                                    <action selector=\"paste:\" target=\"-1\" id=\"226\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Delete\" hidden=\"YES\" id=\"202\">\n                                <connections>\n                                    <action selector=\"delete:\" target=\"-1\" id=\"235\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Select All\" keyEquivalent=\"a\" id=\"198\">\n                                <connections>\n                                    <action selector=\"selectAll:\" target=\"-1\" id=\"232\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"doJ-np-pVi\"/>\n                            <menuItem title=\"Find\" keyEquivalent=\"f\" id=\"p6f-pv-EES\">\n                                <connections>\n                                    <action selector=\"moveFocusToSearchBox:\" target=\"-1\" id=\"O41-7n-bnw\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Replace...\" keyEquivalent=\"f\" id=\"i9O-dp-SXT\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"replaceText:\" target=\"-1\" id=\"Hqx-1H-7KY\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"Task\" tag=\"3000\" id=\"uCE-zB-agW\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"Task\" id=\"MoX-cC-Tbw\">\n                        <items>\n                            <menuItem title=\"Add New Task\" keyEquivalent=\"n\" id=\"Z4D-Og-fXr\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"moveFocusToNewTaskTextField:\" target=\"-1\" id=\"897-Hc-KbJ\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Update\" keyEquivalent=\"u\" id=\"HxV-pn-JsT\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"updateSelectedTask:\" target=\"-1\" id=\"IH9-bZ-S6A\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Update Selected Task\" hidden=\"YES\" id=\"3i7-Ag-Atr\">\n                                <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nDQ\n</string>\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"updateSelectedTask:\" target=\"-1\" id=\"qJ6-ER-cbj\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Append Text\" keyEquivalent=\"t\" id=\"XTM-iP-85t\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"appendText:\" target=\"-1\" id=\"p5w-qa-iTB\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Prepend Text\" keyEquivalent=\"r\" id=\"N06-zv-uJi\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"prependText:\" target=\"-1\" id=\"Uvh-d3-wu5\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Delete\" id=\"ezd-Y3-tV6\">\n                                <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nCA\n</string>\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"deleteSelectedTasks:\" target=\"-1\" id=\"P5W-AN-0tj\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Delete\" hidden=\"YES\" keyEquivalent=\"d\" id=\"XcZ-V8-VXC\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"deleteSelectedTasks:\" target=\"-1\" id=\"11H-aK-AV3\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"vRD-AB-8sn\"/>\n                            <menuItem title=\"Toggle Completion\" keyEquivalent=\"x\" id=\"fGU-nC-gCi\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"toggleTaskCompletion:\" target=\"-1\" id=\"BkD-oH-dPy\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"teR-zl-kPy\"/>\n                            <menuItem title=\"Set Priority\" keyEquivalent=\"i\" id=\"xfO-3k-ZLi\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"setPriority:\" target=\"-1\" id=\"akj-aP-Kcg\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Increase Priority\" keyEquivalent=\"\" id=\"6js-VE-fon\">\n                                <connections>\n                                    <action selector=\"increasePriority:\" target=\"-1\" id=\"wrI-DZ-VMH\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Decrease Priority\" keyEquivalent=\"\" id=\"j3w-FD-cEd\">\n                                <connections>\n                                    <action selector=\"decreasePriority:\" target=\"-1\" id=\"rDF-Il-y56\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Remove Priority\" keyEquivalent=\"\" id=\"YWv-co-tds\">\n                                <connections>\n                                    <action selector=\"removePriority:\" target=\"-1\" id=\"7g7-1h-4zM\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Remove Priority\" hidden=\"YES\" keyEquivalent=\"\" id=\"7uc-lb-HaT\">\n                                <connections>\n                                    <action selector=\"removePriority:\" target=\"-1\" id=\"922-am-W6H\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"rLe-sX-gaJ\"/>\n                            <menuItem title=\"Set Due Date\" keyEquivalent=\"s\" id=\"5fO-eP-YPw\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"setDueDate:\" target=\"-1\" id=\"7gK-A2-NsC\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Postpone\" keyEquivalent=\"p\" id=\"qhJ-ab-gOR\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"postpone:\" target=\"-1\" id=\"OEw-8l-YCH\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Increase Due Date By 1 Day\" keyEquivalent=\"\" id=\"VKT-bC-Sfo\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"increaseDueDateByOneDay:\" target=\"-1\" id=\"TY7-yn-JPo\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Decrease Due Date By 1 Day\" keyEquivalent=\"\" id=\"8X0-Ni-xRD\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"decreaseDueDateByOneDay:\" target=\"-1\" id=\"Qma-Th-G2K\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Remove Due Date\" keyEquivalent=\"\" id=\"lg0-ah-E37\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"removeDueDate:\" target=\"-1\" id=\"iCm-Nj-JHk\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Remove Due Date\" hidden=\"YES\" keyEquivalent=\"\" id=\"rfK-9O-xPV\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"removeDueDate:\" target=\"-1\" id=\"auI-HN-cQk\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"rXL-8W-w5S\"/>\n                            <menuItem title=\"Set Threshold Date\" keyEquivalent=\"s\" id=\"l4o-09-m07\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\"/>\n                                <connections>\n                                    <action selector=\"setThresholdDate:\" target=\"-1\" id=\"Ugf-Kp-aQg\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Increase Threshold Date By 1 Day\" keyEquivalent=\"\" id=\"298-EH-Uic\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"increaseThresholdDateByOneDay:\" target=\"-1\" id=\"a5v-Bs-UWe\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Decrease Treshold Date By 1 Day\" keyEquivalent=\"\" id=\"Chu-wi-rII\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"decreaseThresholdDateByOneDay:\" target=\"-1\" id=\"n8g-S3-3Kb\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Remove Threshold Date\" keyEquivalent=\"\" id=\"6Iu-dJ-mki\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"removeThresholdDate:\" target=\"-1\" id=\"JAn-de-tBw\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Remove Threshold Date\" hidden=\"YES\" keyEquivalent=\"\" id=\"wxr-lt-ibv\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                                <connections>\n                                    <action selector=\"removeThresholdDate:\" target=\"-1\" id=\"Dd9-oI-0iG\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"Sort\" tag=\"4000\" id=\"zaw-Cf-1uQ\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"Sort\" id=\"Oh9-df-kdx\">\n                        <items>\n                            <menuItem title=\"Order In File\" keyEquivalent=\"0\" id=\"uAq-fh-i5h\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"NUv-TU-Reb\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"XrW-8C-6ZT\"/>\n                            <menuItem title=\"Priority\" tag=\"1\" keyEquivalent=\"1\" id=\"dQS-l3-d0y\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"tGs-B4-4sC\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Project\" tag=\"2\" keyEquivalent=\"2\" id=\"SCn-7e-0Pw\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"Iet-Dd-5eW\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Context\" tag=\"3\" keyEquivalent=\"3\" id=\"iev-Ie-urO\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"3LI-Hc-yyM\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Due Date\" tag=\"4\" keyEquivalent=\"4\" id=\"hAN-bI-6Lj\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"y7Z-UD-a81\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Creation Date\" tag=\"5\" keyEquivalent=\"5\" id=\"aTb-nI-t5a\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"Zqt-xH-KnX\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Completion Date\" tag=\"6\" keyEquivalent=\"6\" id=\"Syc-Jy-VcH\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"YfC-gi-PwP\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Threshold Date\" tag=\"7\" keyEquivalent=\"7\" id=\"7gp-lw-eUf\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"H9G-OO-d9P\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Alphabetical\" tag=\"8\" keyEquivalent=\"8\" id=\"ts8-6t-CtK\">\n                                <connections>\n                                    <action selector=\"sortTaskListUsingTagforPreset:\" target=\"-1\" id=\"RCy-a1-sSA\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"Filter\" tag=\"5000\" id=\"zFI-qf-XfA\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"Filter\" id=\"QFi-qB-Q0i\">\n                        <items>\n                            <menuItem title=\"Define Filters\" tag=\"-1\" keyEquivalent=\"f\" id=\"Tox-5H-i7g\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"openFiltersWindow:\" target=\"7QU-ZR-XSK\" id=\"Oqt-se-5Kr\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"vVy-kk-aGk\"/>\n                            <menuItem title=\"Remove Filter\" keyEquivalent=\"0\" id=\"f8L-Hj-7Fl\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"6Vs-wz-bSq\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"GOO-i2-vC0\"/>\n                            <menuItem title=\"Quick Filter 1\" tag=\"1\" keyEquivalent=\"1\" id=\"26K-oV-RLQ\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"Dto-Hg-AuY\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 2\" tag=\"2\" keyEquivalent=\"2\" id=\"jEv-9H-XhK\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"oMM-TT-WnO\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 3\" tag=\"3\" keyEquivalent=\"3\" id=\"Bbf-lb-dWq\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"Qm9-Zx-Aqt\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 4\" tag=\"4\" keyEquivalent=\"4\" id=\"z7P-iy-Jns\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"OdZ-xz-aGp\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 5\" tag=\"5\" keyEquivalent=\"5\" id=\"ALm-yg-nEh\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"KPt-p6-4qJ\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 6\" tag=\"6\" keyEquivalent=\"6\" id=\"8It-YB-3jc\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"zhf-GB-kSX\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 7\" tag=\"7\" keyEquivalent=\"7\" id=\"RPL-WC-b0f\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"KKc-GA-5e7\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 8\" tag=\"8\" keyEquivalent=\"8\" id=\"em5-Zj-zX8\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"pSy-0T-8Bx\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Quick Filter 9\" tag=\"9\" keyEquivalent=\"9\" id=\"kWx-h9-xo5\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"filterTaskListUsingTagforPreset:\" target=\"-1\" id=\"X4G-QF-Z3g\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"View\" id=\"295\">\n                    <menu key=\"submenu\" title=\"View\" id=\"296\">\n                        <items>\n                            <menuItem title=\"Show Status Bar\" tag=\"6000\" keyEquivalent=\"/\" id=\"4lx-6A-S2z\">\n                                <connections>\n                                    <action selector=\"toggleStatusBarVisability:\" target=\"-1\" id=\"AWn-Xq-tHt\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"Window\" id=\"19\">\n                    <menu key=\"submenu\" title=\"Window\" systemMenu=\"window\" id=\"24\">\n                        <items>\n                            <menuItem title=\"Minimize\" keyEquivalent=\"m\" id=\"23\">\n                                <connections>\n                                    <action selector=\"performMiniaturize:\" target=\"-1\" id=\"37\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Zoom\" id=\"239\">\n                                <connections>\n                                    <action selector=\"performZoom:\" target=\"-1\" id=\"240\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"92\">\n                                <modifierMask key=\"keyEquivalentModifierMask\" command=\"YES\"/>\n                            </menuItem>\n                            <menuItem title=\"Bring All to Front\" id=\"5\">\n                                <connections>\n                                    <action selector=\"arrangeInFront:\" target=\"-1\" id=\"39\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem title=\"Help\" id=\"491\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"Help\" systemMenu=\"help\" id=\"492\">\n                        <items>\n                            <menuItem title=\"TodoTxtMac Help\" keyEquivalent=\"?\" id=\"493\">\n                                <connections>\n                                    <action selector=\"showHelp:\" target=\"-1\" id=\"494\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"TodoTxtMac Web Site\" id=\"II1-IX-RtO\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"openWebSite:\" target=\"7QU-ZR-XSK\" id=\"9Ag-Y1-CGm\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem isSeparatorItem=\"YES\" id=\"lRU-6h-IH1\"/>\n                            <menuItem title=\"Plaintext Productivity Web Site\" id=\"9hp-z8-KLG\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"openPlaintextProductivityWebSite:\" target=\"7QU-ZR-XSK\" id=\"ECP-z5-0Cu\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"Todo.txt Tips from Plaintext Productivity\" id=\"MgF-xZ-I3A\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"openTodoTxtTipsPlaintextProductivityWebSite:\" target=\"7QU-ZR-XSK\" id=\"tYj-xu-zQ4\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n            </items>\n        </menu>\n        <customObject id=\"419\" customClass=\"NSFontManager\"/>\n        <customObject id=\"7QU-ZR-XSK\" customClass=\"TTMAppController\"/>\n        <customObject id=\"lsB-8n-fAQ\" customClass=\"TTMAppDelegate\">\n            <connections>\n                <outlet property=\"appController\" destination=\"7QU-ZR-XSK\" id=\"Jmb-5i-JMS\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"565-dx-Ism\" customClass=\"SUUpdater\"/>\n        <customObject id=\"oKW-8b-22O\" customClass=\"NSDocumentController\"/>\n        <userDefaultsController representsSharedInstance=\"YES\" id=\"w2u-Zb-wUd\"/>\n        <menuItem title=\"Item\" id=\"m59-bi-F45\">\n            <modifierMask key=\"keyEquivalentModifierMask\"/>\n        </menuItem>\n    </objects>\n</document>\n"
  },
  {
    "path": "TodoTxtMac/Base.lproj/TTMDocument.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"11762\" systemVersion=\"16C67\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"11762\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n        <capability name=\"stacking Non-gravity area distributions on NSStackView\" minToolsVersion=\"7.0\" minSystemVersion=\"10.11\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"TTMDocument\">\n            <connections>\n                <outlet property=\"arrayController\" destination=\"z03-iY-Esn\" id=\"WqA-XF-LYw\"/>\n                <outlet property=\"bottomConstraint\" destination=\"yCu-XX-tWa\" id=\"l0K-0j-yVC\"/>\n                <outlet property=\"rawTextCell\" destination=\"B31-jc-X0I\" id=\"WRb-Kc-eMO\"/>\n                <outlet property=\"searchField\" destination=\"MtW-Mu-7ja\" id=\"Kva-PL-Nec\"/>\n                <outlet property=\"statusBarTextField\" destination=\"Sky-Qt-diC\" id=\"SoO-R7-lpJ\"/>\n                <outlet property=\"tableView\" destination=\"FD8-v3-r5U\" id=\"pBH-dg-EN3\"/>\n                <outlet property=\"tableViewDelegate\" destination=\"EHv-Hj-tOM\" id=\"h3o-MM-3Ms\"/>\n                <outlet property=\"textField\" destination=\"4SD-Qr-9gz\" id=\"SxF-oC-RrR\"/>\n                <outlet property=\"window\" destination=\"5\" id=\"18\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <window title=\"Window\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" releasedWhenClosed=\"NO\" visibleAtLaunch=\"NO\" frameAutosaveName=\"TTMDocument\" animationBehavior=\"default\" id=\"5\" userLabel=\"Window\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\" resizable=\"YES\" unifiedTitleAndToolbar=\"YES\"/>\n            <windowCollectionBehavior key=\"collectionBehavior\" fullScreenPrimary=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"133\" y=\"235\" width=\"510\" height=\"447\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"2560\" height=\"1417\"/>\n            <value key=\"minSize\" type=\"size\" width=\"94\" height=\"86\"/>\n            <view key=\"contentView\" wantsLayer=\"YES\" id=\"6\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"510\" height=\"447\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                <subviews>\n                    <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"sn0-eP-Rdc\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"22\" width=\"510\" height=\"425\"/>\n                        <subviews>\n                            <scrollView borderType=\"none\" autohidesScrollers=\"YES\" horizontalLineScroll=\"19\" horizontalPageScroll=\"10\" verticalLineScroll=\"19\" verticalPageScroll=\"10\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"C1v-eN-hR0\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"510\" height=\"425\"/>\n                                <clipView key=\"contentView\" id=\"5aa-vY-NrO\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"510\" height=\"425\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <tableView verticalHuggingPriority=\"750\" allowsExpansionToolTips=\"YES\" columnAutoresizingStyle=\"lastColumnOnly\" alternatingRowBackgroundColors=\"YES\" columnReordering=\"NO\" emptySelection=\"NO\" autosaveColumns=\"NO\" id=\"FD8-v3-r5U\" customClass=\"TTMTableView\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"510\" height=\"425\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <size key=\"intercellSpacing\" width=\"3\" height=\"2\"/>\n                                            <color key=\"backgroundColor\" name=\"_sourceListBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            <color key=\"gridColor\" name=\"gridColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            <tableColumns>\n                                                <tableColumn identifier=\"rawText\" width=\"507\" minWidth=\"100\" maxWidth=\"10000\" id=\"Psh-Gi-D1c\">\n                                                    <tableHeaderCell key=\"headerCell\" lineBreakMode=\"truncatingTail\" borderStyle=\"border\" alignment=\"left\" title=\"rawText\">\n                                                        <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                        <color key=\"textColor\" name=\"headerTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                        <color key=\"backgroundColor\" white=\"0.33333298560000002\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </tableHeaderCell>\n                                                    <textFieldCell key=\"dataCell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" alignment=\"left\" title=\"Text Cell\" id=\"B31-jc-X0I\">\n                                                        <font key=\"font\" metaFont=\"system\"/>\n                                                        <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                        <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                    </textFieldCell>\n                                                    <tableColumnResizingMask key=\"resizingMask\" resizeWithTable=\"YES\"/>\n                                                    <connections>\n                                                        <binding destination=\"z03-iY-Esn\" name=\"value\" keyPath=\"arrangedObjects.rawText\" id=\"Lqe-ON-xdz\"/>\n                                                    </connections>\n                                                </tableColumn>\n                                            </tableColumns>\n                                            <connections>\n                                                <outlet property=\"delegate\" destination=\"EHv-Hj-tOM\" id=\"uvv-h2-wBm\"/>\n                                                <outlet property=\"menu\" destination=\"oa5-ZA-h8N\" id=\"3EN-Hs-f7b\"/>\n                                                <outlet property=\"parentDocument\" destination=\"-2\" id=\"rdR-3Y-03G\"/>\n                                            </connections>\n                                        </tableView>\n                                    </subviews>\n                                </clipView>\n                                <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"ciJ-RQ-uYU\">\n                                    <rect key=\"frame\" x=\"1\" y=\"411\" width=\"509\" height=\"16\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                </scroller>\n                                <scroller key=\"verticalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"hIl-mE-RGE\">\n                                    <rect key=\"frame\" x=\"494\" y=\"1\" width=\"15\" height=\"0.0\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                </scroller>\n                            </scrollView>\n                        </subviews>\n                        <visibilityPriorities>\n                            <integer value=\"1000\"/>\n                        </visibilityPriorities>\n                        <customSpacing>\n                            <real value=\"3.4028234663852886e+38\"/>\n                        </customSpacing>\n                    </stackView>\n                    <textField horizontalCompressionResistancePriority=\"1\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Sky-Qt-diC\">\n                        <rect key=\"frame\" x=\"3\" y=\"2\" width=\"504\" height=\"16\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"height\" constant=\"16\" id=\"NXt-rJ-2VE\"/>\n                        </constraints>\n                        <textFieldCell key=\"cell\" lineBreakMode=\"truncatingTail\" sendsActionOnEndEditing=\"YES\" title=\"Label\" id=\"ZsD-0k-HPu\">\n                            <font key=\"font\" metaFont=\"smallSystem\"/>\n                            <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            <connections>\n                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.statusBarText\" id=\"m6H-KR-ctN\"/>\n                            </connections>\n                        </textFieldCell>\n                    </textField>\n                </subviews>\n                <constraints>\n                    <constraint firstItem=\"sn0-eP-Rdc\" firstAttribute=\"top\" secondItem=\"6\" secondAttribute=\"top\" id=\"7c9-c9-eZ7\"/>\n                    <constraint firstItem=\"Sky-Qt-diC\" firstAttribute=\"leading\" secondItem=\"6\" secondAttribute=\"leading\" constant=\"5\" id=\"brB-pD-hAb\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"Sky-Qt-diC\" secondAttribute=\"trailing\" constant=\"5\" id=\"j1w-Kd-0vp\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"Sky-Qt-diC\" secondAttribute=\"bottom\" constant=\"2\" id=\"jJO-2M-jzG\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"C1v-eN-hR0\" secondAttribute=\"trailing\" id=\"oC8-pX-hMQ\"/>\n                    <constraint firstItem=\"C1v-eN-hR0\" firstAttribute=\"leading\" secondItem=\"6\" secondAttribute=\"leading\" id=\"wJj-wx-1bd\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"sn0-eP-Rdc\" secondAttribute=\"bottom\" constant=\"22\" id=\"yCu-XX-tWa\"/>\n                </constraints>\n            </view>\n            <toolbar key=\"toolbar\" implicitIdentifier=\"4D4220C3-9B1C-441F-94D1-1A7D910A2AB0\" allowsUserCustomization=\"NO\" displayMode=\"iconOnly\" sizeMode=\"small\" id=\"Tbe-3z-Gsw\">\n                <allowedToolbarItems>\n                    <toolbarItem implicitItemIdentifier=\"120A55A2-2D6F-4D5D-B771-5160A368118F\" label=\"New Task\" paletteLabel=\"New Task\" visibilityPriority=\"100\" id=\"B1S-jN-Ztr\">\n                        <nil key=\"toolTip\"/>\n                        <size key=\"minSize\" width=\"96\" height=\"22\"/>\n                        <size key=\"maxSize\" width=\"100000\" height=\"22\"/>\n                        <textField key=\"view\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" id=\"4SD-Qr-9gz\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"14\" width=\"400\" height=\"22\"/>\n                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" state=\"on\" borderStyle=\"bezel\" placeholderString=\"New task...\" drawsBackground=\"YES\" usesSingleLineMode=\"YES\" id=\"Zzr-Le-XIh\">\n                                <font key=\"font\" metaFont=\"system\"/>\n                                <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            </textFieldCell>\n                            <connections>\n                                <action selector=\"addNewTask:\" target=\"-2\" id=\"y7y-5H-mBy\"/>\n                            </connections>\n                        </textField>\n                    </toolbarItem>\n                    <toolbarItem implicitItemIdentifier=\"B4880FAB-0558-4D02-A666-EB071DE8A773\" label=\"Search\" paletteLabel=\"Search\" visibilityPriority=\"100\" id=\"a5W-c1-Nr2\">\n                        <nil key=\"toolTip\"/>\n                        <size key=\"minSize\" width=\"96\" height=\"22\"/>\n                        <size key=\"maxSize\" width=\"140\" height=\"22\"/>\n                        <searchField key=\"view\" wantsLayer=\"YES\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" id=\"MtW-Mu-7ja\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"14\" width=\"96\" height=\"22\"/>\n                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n                            <searchFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" refusesFirstResponder=\"YES\" borderStyle=\"bezel\" usesSingleLineMode=\"YES\" bezelStyle=\"round\" sendsSearchStringImmediately=\"YES\" id=\"iTq-XW-8IB\">\n                                <font key=\"font\" metaFont=\"system\"/>\n                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                            </searchFieldCell>\n                            <connections>\n                                <binding destination=\"-2\" name=\"predicate\" keyPath=\"self.searchFieldPredicate\" id=\"GIK-On-p5m\">\n                                    <dictionary key=\"options\">\n                                        <string key=\"NSDisplayName\">predicate</string>\n                                        <string key=\"NSPredicateFormat\">rawText contains[cd] $value</string>\n                                    </dictionary>\n                                </binding>\n                            </connections>\n                        </searchField>\n                    </toolbarItem>\n                </allowedToolbarItems>\n                <defaultToolbarItems>\n                    <toolbarItem reference=\"B1S-jN-Ztr\"/>\n                    <toolbarItem reference=\"a5W-c1-Nr2\"/>\n                </defaultToolbarItems>\n            </toolbar>\n            <contentBorderThickness minY=\"22\"/>\n            <connections>\n                <outlet property=\"delegate\" destination=\"-2\" id=\"17\"/>\n            </connections>\n        </window>\n        <arrayController objectClassName=\"TTMTask\" automaticallyRearrangesObjects=\"YES\" id=\"z03-iY-Esn\">\n            <connections>\n                <binding destination=\"-2\" name=\"filterPredicate\" keyPath=\"self.activeFilterPredicate\" id=\"sjF-mO-jcs\"/>\n                <binding destination=\"-2\" name=\"contentArray\" keyPath=\"self.taskList\" id=\"6bb-CW-xta\"/>\n            </connections>\n        </arrayController>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <userDefaultsController representsSharedInstance=\"YES\" id=\"ZDT-kG-QuA\"/>\n        <customObject id=\"EHv-Hj-tOM\" customClass=\"TTMTableViewDelegate\">\n            <connections>\n                <outlet property=\"arrayController\" destination=\"z03-iY-Esn\" id=\"bZW-B4-fSs\"/>\n            </connections>\n        </customObject>\n        <menu id=\"oa5-ZA-h8N\">\n            <items>\n                <menuItem title=\"Add New Task\" keyEquivalent=\"n\" id=\"DaS-lw-tom\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"moveFocusToNewTaskTextField:\" target=\"-1\" id=\"P8g-Sf-ymP\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Update\" keyEquivalent=\"u\" id=\"b76-Yn-FZw\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"updateSelectedTask:\" target=\"-1\" id=\"b1F-HN-zIR\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Append Text\" keyEquivalent=\"t\" id=\"JCe-h2-3R5\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"appendText:\" target=\"-1\" id=\"70n-av-wTX\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Prepend Text\" keyEquivalent=\"r\" id=\"XdX-J7-z0X\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"prependText:\" target=\"-1\" id=\"E4e-Qe-cDu\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Delete\" hidden=\"YES\" keyEquivalent=\"d\" id=\"c4f-YX-vjt\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"deleteSelectedTasks:\" target=\"-1\" id=\"c2H-zi-BHD\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Delete\" id=\"I9O-Bd-cNZ\">\n                    <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nCA\n</string>\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"deleteSelectedTasks:\" target=\"-1\" id=\"yvS-0a-hYS\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"xGk-rN-DCC\"/>\n                <menuItem title=\"Toggle Completion\" keyEquivalent=\"x\" id=\"N2B-it-TGO\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"toggleTaskCompletion:\" target=\"-1\" id=\"EJy-Uz-slU\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"ezm-BQ-bR2\"/>\n                <menuItem title=\"Set Priority\" keyEquivalent=\"i\" id=\"dnL-GF-ydk\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"setPriority:\" target=\"-1\" id=\"ruw-d8-hfs\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Increase Priority\" keyEquivalent=\"\" id=\"7aA-PZ-bXA\">\n                    <connections>\n                        <action selector=\"increasePriority:\" target=\"-1\" id=\"7de-cW-CqL\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Decrease Priority\" keyEquivalent=\"\" id=\"bcL-Nb-Dox\">\n                    <connections>\n                        <action selector=\"decreasePriority:\" target=\"-1\" id=\"BIK-5W-D4O\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Remove Priority\" keyEquivalent=\"\" id=\"cCl-gJ-Ezx\">\n                    <connections>\n                        <action selector=\"removePriority:\" target=\"-1\" id=\"lk4-kv-MSF\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Remove Priority\" hidden=\"YES\" keyEquivalent=\"\" id=\"gZs-7t-faP\">\n                    <connections>\n                        <action selector=\"removePriority:\" target=\"-1\" id=\"Y0W-ql-vLx\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"8H5-zH-hDj\"/>\n                <menuItem title=\"Set Due Date\" keyEquivalent=\"s\" id=\"bAk-TR-UnI\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"setDueDate:\" target=\"-1\" id=\"Uon-ah-Duc\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Postpone\" keyEquivalent=\"p\" id=\"WnK-Q7-CZy\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"postpone:\" target=\"-1\" id=\"g12-14-v1p\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Increase Due Date By 1 Day\" keyEquivalent=\"\" id=\"fw1-ni-PD5\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"increaseDueDateByOneDay:\" target=\"-1\" id=\"Kbh-Fs-EEa\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Decrease Due Date By 1 Day\" keyEquivalent=\"\" id=\"QXa-wL-6lD\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"decreaseDueDateByOneDay:\" target=\"-1\" id=\"bJn-ip-371\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Remove Due Date\" keyEquivalent=\"\" id=\"yDV-Ow-fu4\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"removeDueDate:\" target=\"-1\" id=\"R6v-Z2-D81\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Remove Due Date\" hidden=\"YES\" keyEquivalent=\"\" id=\"YED-n9-vGT\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"removeDueDate:\" target=\"-1\" id=\"4g7-AY-8O7\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Update Selected Task\" hidden=\"YES\" id=\"hdk-6A-k2B\">\n                    <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nDQ\n</string>\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"updateSelectedTask:\" target=\"-1\" id=\"aG9-LP-3Li\"/>\n                    </connections>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"FyL-Gq-jSo\"/>\n                <menuItem title=\"Set Threshold Date\" keyEquivalent=\"s\" id=\"fGM-0b-agh\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" option=\"YES\"/>\n                    <connections>\n                        <action selector=\"setThresholdDate:\" target=\"-1\" id=\"IeD-mD-KUm\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Increase Threshold Date By 1 Day\" keyEquivalent=\"\" id=\"eSY-Jn-eRV\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"increaseThresholdDateByOneDay:\" target=\"-1\" id=\"oCb-9W-q5v\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Decrease Treshold Date By 1 Day\" keyEquivalent=\"\" id=\"OTg-xM-h4t\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"decreaseThresholdDateByOneDay:\" target=\"-1\" id=\"TNd-8N-PiX\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Remove Threshold Date\" keyEquivalent=\"\" id=\"fG9-Xa-uEt\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"removeThresholdDate:\" target=\"-1\" id=\"T6i-Nh-orO\"/>\n                    </connections>\n                </menuItem>\n                <menuItem title=\"Remove Threshold Date\" hidden=\"YES\" keyEquivalent=\"\" id=\"alZ-Ry-3E5\">\n                    <modifierMask key=\"keyEquivalentModifierMask\" shift=\"YES\" option=\"YES\" command=\"YES\"/>\n                    <connections>\n                        <action selector=\"removeThresholdDate:\" target=\"-1\" id=\"tJc-eP-Twk\"/>\n                    </connections>\n                </menuItem>\n            </items>\n            <point key=\"canvasLocation\" x=\"206.5\" y=\"704.5\"/>\n        </menu>\n    </objects>\n</document>\n"
  },
  {
    "path": "TodoTxtMac/FontNameTransformer.h",
    "content": "/*\n     File: FontNameTransformer.h\n Abstract: Value transformer that turns fonts into a human-readable string with the font's name and size. This is used in the preferences window.\n \n  Version: 1.9\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2013 Apple Inc. All Rights Reserved.\n \n */\n\n#import <Cocoa/Cocoa.h>\n\n\n@interface FontNameTransformer : NSValueTransformer {\n\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/FontNameTransformer.m",
    "content": "/*\n     File: FontNameTransformer.m\n Abstract: Value transformer that turns fonts into a human-readable string with the font's name and size. This is used in the preferences window.\n \n  Version: 1.9\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2013 Apple Inc. All Rights Reserved.\n \n */\n\n#import \"FontNameTransformer.h\"\n\n\n@implementation FontNameTransformer\n+ (Class)tranformedValueClass {\n    return [NSString class];\n}\n\n+ (BOOL)allowsReverseTransformation {\n    return NO;\n}\n\n- (id)transformedValue:(id)value {\n    if (value && [value isKindOfClass:[NSFont class]]) {\n        return [NSString stringWithFormat:@\"%@ %g\", [value displayName], [value pointSize]];\n    } else {\n        return @\"\";\n    }\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"size\" : \"16x16\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_16x16.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"16x16\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_16x16@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"32x32\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_32x32.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"32x32\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_32x32@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"128x128\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_128x128.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"128x128\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_128x128@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"256x256\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_256x256.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"256x256\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_256x256@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"512x512\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_512x512.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"512x512\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"icon_512x512@2x.png\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "TodoTxtMac/NSDate+RelativeDates.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2016 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n@interface NSDate (RelativeDates)\n\n- (NSDate*)advanceDateByWeekdays:(NSInteger)numberOfWeekdays;\n- (NSDate*)advanceDateByNumberOfCalendarUnits:(NSInteger)numberOfCalendarUnits\n                                 calendarUnit:(NSCalendarUnit)calendarUnit;\n- (BOOL)isWeekendDay;\n- (BOOL)isWeekday;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/NSDate+RelativeDates.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"NSDate+RelativeDates.h\"\n\n@implementation NSDate (RelativeDates)\n\n- (NSCalendar*)currentCalendar {\n    return [NSCalendar currentCalendar];\n}\n\n- (NSDate*)advanceDateByWeekdays:(NSInteger)numberOfWeekdays {\n    NSDate *relativeDate = self;\n    NSInteger weekdaysLeft = numberOfWeekdays;\n    \n    while (weekdaysLeft > 0) {\n        NSDate *newDate = [relativeDate advanceDateByNumberOfCalendarUnits:1 calendarUnit:NSCalendarUnitDay];\n        if (newDate == nil) {\n            return relativeDate;\n        }\n        relativeDate = newDate;\n        if ([relativeDate isWeekday]) {\n            weekdaysLeft -= 1;\n        }\n    }\n    return relativeDate;\n}\n\n- (NSDate*)advanceDateByNumberOfCalendarUnits:(NSInteger)numberOfCalendarUnits\n                                 calendarUnit:(NSCalendarUnit)calendarUnit {\n    return [[self currentCalendar] dateByAddingUnit:calendarUnit\n                                              value:numberOfCalendarUnits\n                                             toDate:self\n                                            options:NSCalendarMatchFirst];\n}\n\n- (BOOL)isWeekendDay {\n    long weekday = [[self currentCalendar] component:NSCalendarUnitWeekday fromDate:self];\n    return (weekday == 1 || weekday == 7);\n}\n\n- (BOOL)isWeekday {\n    return ![self isWeekendDay];\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/NSMutableAttributableString+ColorRegExMatches.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n@interface NSMutableAttributedString (ColorRegExMatches)\n\n/*!\n * @method applyColor:toRegexPatternMatches:\n * @abstract Adds foreground color attributes to a mutable attributed string based for all regular\n * epxression matches.\n * @param color Color to apply\n * @param regExPattern Regular expression pattern to apply colors to matches\n */\n- (void)applyColor:(NSColor*)color toRegexPatternMatches:(NSString*)regExPattern;\n\n/*!\n * @method applyColorToFullStringRange:\n * @abstract Adds foreground color attributes to the entire mutable attributed string.\n * @param color Color to apply\n */\n- (void)applyColorToFullStringRange:(NSColor*)color;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/NSMutableAttributableString+ColorRegExMatches.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"NSMutableAttributableString+ColorRegExMatches.h\"\n#import \"RegExCategories.h\"\n\n@implementation NSMutableAttributedString (ColorRegExMatches)\n\n- (void)applyColor:(NSColor*)color toRegexPatternMatches:(NSString*)regExPattern {\n    NSArray *matches = [self.string matchesWithDetails:RX(regExPattern)];\n    for (RxMatch *match in matches) {\n        [self addAttribute:NSForegroundColorAttributeName\n                   value:color\n                   range:match.range];\n    }\n}\n\n- (void)applyColorToFullStringRange:(NSColor*)color {\n    [self addAttribute:NSForegroundColorAttributeName\n           value:color\n           range:NSMakeRange(0, [self.string length])];\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/NSUserDefaults+myColorSupport.h",
    "content": "// This code is lifted from Apple's Developer Documenation.\n// Source: https://developer.apple.com/library/mac/documentation/cocoa/conceptual/DrawColor/Tasks/StoringNSColorInDefaults.html\n\n#import <Foundation/Foundation.h>\n\n@interface NSUserDefaults(myColorSupport)\n\n- (void)setColor:(NSColor *)aColor forKey:(NSString *)aKey;\n- (NSColor *)colorForKey:(NSString *)aKey;\n\n@end\n\n"
  },
  {
    "path": "TodoTxtMac/NSUserDefaults+myColorSupport.m",
    "content": "// This code is lifted from Apple's Developer Documenation.\n// Source: https://developer.apple.com/library/mac/documentation/cocoa/conceptual/DrawColor/Tasks/StoringNSColorInDefaults.html\n\n#import \"NSUserDefaults+myColorSupport.h\"\n\n@implementation NSUserDefaults(myColorSupport)\n\n- (void)setColor:(NSColor *)aColor forKey:(NSString *)aKey {\n    NSData *theData=[NSArchiver archivedDataWithRootObject:aColor];\n    [self setObject:theData forKey:aKey];\n}\n\n- (NSColor *)colorForKey:(NSString *)aKey {\n    NSColor *theColor=nil;\n    NSData *theData=[self dataForKey:aKey];\n    if (theData != nil)\n        theColor=(NSColor *)[NSUnarchiver unarchiveObjectWithData:theData];\n    return theColor;\n}\n\n@end"
  },
  {
    "path": "TodoTxtMac/RegExCategories.h",
    "content": "//\n//  RegExCategories.h\n//\n//  https://github.com/bendytree/Objective-C-RegEx-Categories\n//\n//\n//  The MIT License (MIT)\n//\n//  Copyright (c) 2013 Josh Wright <@BendyTree>\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n//  SOFTWARE.\n//\n\n#import <Foundation/Foundation.h>\n\n\n/********************************************************/\n/*********************** MACROS *************************/\n/********************************************************/\n\n/*\n * By default, we create an alias for NSRegularExpression\n * called `Rx` and creates a macro `RX()` for quick regex creation.\n *\n * If you don't want these macros, add the following statement\n * before you include this library:\n *\n * #define DisableRegExCategoriesMacros\n */\n\n\n/**\n * Creates a macro (alias) for NSRegularExpression named `Rx`.\n *\n * ie.\n * NSRegularExpression* rx = [[Rx alloc] initWithPattern:@\"\\d+\" options:0 error:nil];\n */\n\n#ifndef DisableRegExCategoriesMacros\n#define Rx NSRegularExpression\n#endif\n\n\n/**\n * Creates a macro (alias) for NSRegularExpression named `Rx`.\n *\n * ie.\n * NSRegularExpression* rx = [[Rx alloc] initWithPattern:@\"\\d+\" options:0 error:nil];\n */\n\n#ifndef DisableRegExCategoriesMacros\n#define RX(pattern) [[NSRegularExpression alloc] initWithPattern:pattern]\n#endif\n\n\n\n/********************************************************/\n/******************* MATCH OBJECTS **********************/\n/********************************************************/\n\n/**\n * RxMatch represents a single match. It contains the\n * matched value, range, sub groups, and the original\n * string.\n */\n\n@interface RxMatch : NSObject\n@property (retain) NSString* value;    /* The substring that matched the expression. */\n@property (assign) NSRange   range;    /* The range of the original string that was matched. */\n@property (retain) NSArray*  groups;   /* Each object is an RxMatchGroup. */\n@property (retain) NSString* original; /* The full original string that was matched against.  */\n@end\n\n\n@interface RxMatchGroup : NSObject\n@property (retain) NSString* value;\n@property (assign) NSRange range;\n@end\n\n\n\n\n\n/**\n * Extend NSRegularExpression.\n */\n\n@interface NSRegularExpression (ObjectiveCRegexCategories)\n\n\n/*******************************************************/\n/******************* INITIALIZATION ********************/\n/*******************************************************/\n\n/**\n * Initialize an Rx object from a string.\n *\n * ie.\n * Rx* rx = [[Rx alloc] initWithString:@\"\\d+\"];\n */\n\n- (NSRegularExpression*) initWithPattern:(NSString*)pattern;\n\n\n/**\n * Initialize an Rx object from a string.\n *\n * ie.\n * Rx* rx = [Rx rx:@\"\\d+\"];\n */\n\n+ (NSRegularExpression*) rx:(NSString*)pattern;\n\n\n/**\n * Initialize an Rx object from a string. By default, NSRegularExpression\n * is case sensitive, but this signature allows you to change that.\n *\n * ie.\n * Rx* rx = [Rx rx:@\"\\d+\" ignoreCase:YES];\n */\n\n+ (NSRegularExpression*) rx:(NSString*)pattern ignoreCase:(BOOL)ignoreCase;\n\n\n/**\n * Initialize an Rx object from a string and options.\n *\n * ie.\n * Rx* rx = [Rx rx:@\"\\d+\" options:NSRegularExpressionCaseInsensitive];\n */\n\n+ (NSRegularExpression*) rx:(NSString*)pattern options:(NSRegularExpressionOptions)options;\n\n\n/*******************************************************/\n/********************** IS MATCH ***********************/\n/*******************************************************/\n\n/**\n * Returns true if the string matches the regex. May also\n * be called on NSString as [@\"\\d\" isMatch:rx].\n *\n * ie.\n * Rx* rx = RX(@\"\\d+\");\n * BOOL isMatch = [rx isMatch:@\"Dog #1\"]; // => true\n */\n\n- (BOOL) isMatch:(NSString*)matchee;\n\n\n/**\n * Returns the index of the first match of the passed string.\n *\n * ie.\n * int i = [RX(@\"\\d+\") indexOf:@\"Buy 1 dog or buy 2?\"]; // => 4\n */\n\n- (int) indexOf:(NSString*)str;\n\n\n/**\n * Splits a string using the regex to identify delimeters. Returns\n * an NSArray of NSStrings.\n *\n * ie.\n * NSArray* pieces = [RX(@\"[ ,]\") split:@\"A dog,cat\"];\n *  => @[@\"A\", @\"dog\", @\"cat\"]\n */\n\n- (NSArray*) split:(NSString*)str;\n\n\n/**\n * Replaces all occurances in a string with a replacement string.\n *\n * ie.\n * NSString* result = [RX(@\"ruf+\") replace:@\"ruf ruff!\" with:@\"meow\"];\n *  => @\"meow meow!\"\n */\n\n- (NSString*) replace:(NSString*)string with:(NSString*)replacement;\n\n\n/**\n * Replaces all occurances of a regex using a block. The block receives the match\n * and should return the replacement.\n *\n * ie.\n * NSString* result = [RX(@\"[A-Z]+\") replace:@\"i love COW\" withBlock:^(NSString*){ return @\"lamp\"; }];\n *  => @\"i love lamp\"\n */\n\n- (NSString*) replace:(NSString*)string withBlock:(NSString*(^)(NSString* match))replacer;\n\n\n/**\n * Replaces all occurances of a regex using a block. The block receives a RxMatch object\n * that contains all the details of the match and should return a string\n * which is what the match is replaced with.\n *\n * ie.\n * NSString* result = [RX(@\"\\\\w+\") replace:@\"hi bud\" withDetailsBlock:^(RxMatch* match){ return [NSString stringWithFormat:@\"%i\", match.value.length]; }];\n *  => @\"2 3\"\n */\n\n- (NSString*) replace:(NSString *)string withDetailsBlock:(NSString*(^)(RxMatch* match))replacer;\n\n\n/**\n * Returns an array of matched root strings with no other match information.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * NSArray* matches = [RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\") matches:str];\n *  => @[ @\"me@example.com\", @\"you@example.com\" ]\n */\n\n- (NSArray*) matches:(NSString*)str;\n\n\n/**\n * Returns a string which is the first match of the NSRegularExpression.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * NSString* match = [RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\") firstMatch:str];\n *  => @\"me@example.com\"\n */\n\n- (NSString*) firstMatch:(NSString*)str;\n\n\n/**\n * Returns an NSArray of RxMatch* objects. Each match contains the matched\n * value, range, groups, etc.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * NSArray* matches = [str matchesWithDetails:RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\")];\n */\n\n- (NSArray*) matchesWithDetails:(NSString*)str;\n\n\n/**\n * Returns the first match as an RxMatch* object.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * Rx* rx = RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\");\n * RxMatch* match = [rx firstMatchWithDetails:str];\n */\n\n- (RxMatch*) firstMatchWithDetails:(NSString*)str;\n\n@end\n\n\n\n/**\n * A category on NSString to make it easy to use\n * Rx in simple operations.\n */\n\n@interface NSString (ObjectiveCRegexCategories)\n\n\n/**\n * Initialize an NSRegularExpression object from a string.\n *\n * ie.\n * NSRegularExpression* rx = [@\"\\d+\" toRx];\n */\n\n- (NSRegularExpression*) toRx;\n\n\n/**\n * Initialize an NSRegularExpression object from a string with\n * a flag denoting case-sensitivity. By default, NSRegularExpression\n * is case sensitive.\n *\n * ie.\n * NSRegularExpression* rx = [@\"\\d+\" toRxIgnoreCase:YES];\n */\n\n- (NSRegularExpression*) toRxIgnoreCase:(BOOL)ignoreCase;\n\n\n/**\n * Initialize an NSRegularExpression object from a string with options.\n *\n * ie.\n * NSRegularExpression* rx = [@\"\\d+\" toRxWithOptions:NSRegularExpressionCaseInsensitive];\n */\n\n- (NSRegularExpression*) toRxWithOptions:(NSRegularExpressionOptions)options;\n\n\n/**\n * Returns true if the string matches the regex. May also\n * be called as on Rx as [rx isMatch:@\"some string\"].\n *\n * ie.\n * BOOL isMatch = [@\"Dog #1\" isMatch:RX(@\"\\d+\")]; // => true\n */\n\n- (BOOL) isMatch:(NSRegularExpression*)rx;\n\n\n/**\n * Returns the index of the first match according to\n * the regex passed in.\n *\n * ie.\n * int i = [@\"Buy 1 dog or buy 2?\" indexOf:RX(@\"\\d+\")]; // => 4\n */\n\n- (int) indexOf:(NSRegularExpression*)rx;\n\n\n/**\n * Splits a string using the regex to identify delimeters. Returns\n * an NSArray of NSStrings.\n *\n * ie.\n * NSArray* pieces = [@\"A dog,cat\" split:RX(@\"[ ,]\")];\n *  => @[@\"A\", @\"dog\", @\"cat\"]\n */\n\n- (NSArray*) split:(NSRegularExpression*)rx;\n\n\n/**\n * Replaces all occurances of a regex with a replacement string.\n *\n * ie.\n * NSString* result = [@\"ruf ruff!\" replace:RX(@\"ruf+\") with:@\"meow\"];\n *  => @\"meow meow!\"\n */\n\n- (NSString*) replace:(NSRegularExpression*)rx with:(NSString*)replacement;\n\n\n/**\n * Replaces all occurances of a regex using a block. The block receives the match\n * and should return the replacement.\n *\n * ie.\n * NSString* result = [@\"i love COW\" replace:RX(@\"[A-Z]+\") withBlock:^(NSString*){ return @\"lamp\"; }];\n *  => @\"i love lamp\"\n */\n\n- (NSString*) replace:(NSRegularExpression *)rx withBlock:(NSString*(^)(NSString* match))replacer;\n\n\n/**\n * Replaces all occurances of a regex using a block. The block receives an RxMatch\n * object which contains all of the details for each match and should return a string\n * which is what the match is replaced with.\n *\n * ie.\n * NSString* result = [@\"hi bud\" replace:RX(@\"\\\\w+\") withDetailsBlock:^(RxMatch* match){ return [NSString stringWithFormat:@\"%i\", match.value.length]; }];\n *  => @\"2 3\"\n */\n\n- (NSString*) replace:(NSRegularExpression *)rx withDetailsBlock:(NSString*(^)(RxMatch* match))replacer;\n\n\n/**\n * Returns an array of matched root strings with no other match information.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * NSArray* matches = [str matches:RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\")];\n *  => @[ @\"me@example.com\", @\"you@example.com\" ]\n */\n\n- (NSArray*) matches:(NSRegularExpression*)rx;\n\n\n/**\n * Returns a string which is the first match of the NSRegularExpression.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * NSString* match = [str firstMatch:RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\")];\n *  => @\"me@example.com\"\n */\n\n- (NSString*) firstMatch:(NSRegularExpression*)rx;\n\n\n/**\n * Returns an NSArray of RxMatch* objects. Each match contains the matched\n * value, range, groups, etc.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * NSArray* matches = [str matchesWithDetails:RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\")];\n */\n\n- (NSArray*) matchesWithDetails:(NSRegularExpression*)rx;\n\n\n/**\n * Returns an the first match as an RxMatch* object.\n *\n * ie.\n * NSString* str = @\"My email is me@example.com and yours is you@example.com\";\n * RxMatch* match = [str firstMatchWithDetails:RX(@\"\\\\w+[@]\\\\w+[.](\\\\w+)\")];\n */\n\n- (RxMatch*) firstMatchWithDetails:(NSRegularExpression*)rx;\n\n@end"
  },
  {
    "path": "TodoTxtMac/RegExCategories.m",
    "content": "//\n//  RegExCategories.m\n//\n//  https://github.com/bendytree/Objective-C-RegEx-Categories\n//\n//\n//  The MIT License (MIT)\n//\n//  Copyright (c) 2013 Josh Wright <@BendyTree>\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n//  SOFTWARE.\n//\n\n#import \"RegExCategories.h\"\n\n@implementation NSRegularExpression (ObjectiveCRegexCategories)\n\n- (id) initWithPattern:(NSString*)pattern\n{\n    return [self initWithPattern:pattern options:0 error:nil];\n}\n\n+ (NSRegularExpression*) rx:(NSString*)pattern\n{\n    return [[self alloc] initWithPattern:pattern];\n}\n\n+ (NSRegularExpression*) rx:(NSString*)pattern ignoreCase:(BOOL)ignoreCase\n{\n    return [[self alloc] initWithPattern:pattern options:ignoreCase?NSRegularExpressionCaseInsensitive:0 error:nil];\n}\n\n+ (NSRegularExpression*) rx:(NSString*)pattern options:(NSRegularExpressionOptions)options\n{\n    return [[self alloc] initWithPattern:pattern options:options error:nil];\n}\n\n- (BOOL) isMatch:(NSString*)matchee\n{\n    return [self numberOfMatchesInString:matchee options:0 range:NSMakeRange(0, matchee.length)] > 0;\n}\n\n- (int) indexOf:(NSString*)matchee\n{\n    NSRange range = [self rangeOfFirstMatchInString:matchee options:0 range:NSMakeRange(0, matchee.length)];\n    return range.location == NSNotFound ? -1 : (int)range.location;\n}\n\n- (NSArray*) split:(NSString *)str\n{\n    NSRange range = NSMakeRange(0, str.length);\n    \n    //get locations of matches\n    NSMutableArray* matchingRanges = [NSMutableArray array];\n    NSArray* matches = [self matchesInString:str options:0 range:range];\n    for(NSTextCheckingResult* match in matches) {\n        [matchingRanges addObject:[NSValue valueWithRange:match.range]];\n    }\n    \n    //invert ranges - get ranges of non-matched pieces\n    NSMutableArray* pieceRanges = [NSMutableArray array];\n    \n    //add first range\n    [pieceRanges addObject:[NSValue valueWithRange:NSMakeRange(0,\n                                                               (matchingRanges.count == 0 ? str.length : [matchingRanges[0] rangeValue].location))]];\n    \n    //add between splits ranges and last range\n    for(int i=0; i<matchingRanges.count; i++){\n        BOOL isLast = i+1 == matchingRanges.count;\n        unsigned long startLoc = [matchingRanges[i] rangeValue].location + [matchingRanges[i] rangeValue].length;\n        unsigned long endLoc = isLast ? str.length : [matchingRanges[i+1] rangeValue].location;\n        [pieceRanges addObject:[NSValue valueWithRange:NSMakeRange(startLoc, endLoc-startLoc)]];\n    }\n    \n    //use split ranges to select pieces\n    NSMutableArray* pieces = [NSMutableArray array];\n    for(NSValue* val in pieceRanges) {\n        NSRange range = [val rangeValue];\n        NSString* piece = [str substringWithRange:range];\n        [pieces addObject:piece];\n    }\n    \n    return pieces;\n}\n\n- (NSString*) replace:(NSString*)string with:(NSString*)replacement\n{\n    return [self stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:replacement];\n}\n\n- (NSString*) replace:(NSString*)string withBlock:(NSString*(^)(NSString* match))replacer\n{\n    //no replacer? just return\n    if (!replacer) return string;\n    \n    //copy the string so we can replace subsections\n    NSMutableString* result = [string mutableCopy];\n    \n    //get matches\n    NSArray* matches = [self matchesInString:string options:0 range:NSMakeRange(0, string.length)];\n    \n    //replace each match (right to left so indexing doesn't get messed up)\n    for (int i=(int)matches.count-1; i>=0; i--) {\n        NSTextCheckingResult* match = matches[i];\n        NSString* matchStr = [string substringWithRange:match.range];\n        NSString* replacement = replacer(matchStr);\n        [result replaceCharactersInRange:match.range withString:replacement];\n    }\n    \n    return result;\n}\n\n- (NSString*) replace:(NSString *)string withDetailsBlock:(NSString*(^)(RxMatch* match))replacer\n{\n    //no replacer? just return\n    if (!replacer) return string;\n    \n    //copy the string so we can replace subsections\n    NSMutableString* replaced = [string mutableCopy];\n    \n    //get matches\n    NSArray* matches = [self matchesInString:string options:0 range:NSMakeRange(0, string.length)];\n    \n    //replace each match (right to left so indexing doesn't get messed up)\n    for (int i=(int)matches.count-1; i>=0; i--) {\n        NSTextCheckingResult* result = matches[i];\n        RxMatch* match = [self resultToMatch:result original:string];\n        NSString* replacement = replacer(match);\n        [replaced replaceCharactersInRange:result.range withString:replacement];\n    }\n    \n    return replaced;\n}\n\n- (NSArray*) matches:(NSString*)str\n{\n    NSMutableArray* matches = [NSMutableArray array];\n    \n    NSArray* results = [self matchesInString:str options:0 range:NSMakeRange(0, str.length)];\n    for (NSTextCheckingResult* result in results) {\n        NSString* match = [str substringWithRange:result.range];\n        [matches addObject:match];\n    }\n    \n    return matches;\n}\n\n- (NSString*) firstMatch:(NSString*)str\n{\n    NSTextCheckingResult* match = [self firstMatchInString:str options:0 range:NSMakeRange(0, str.length)];\n    \n    if (!match) return nil;\n    \n    return [str substringWithRange:match.range];\n}\n\n- (RxMatch*) resultToMatch:(NSTextCheckingResult*)result original:(NSString*)original\n{\n    RxMatch* match = [[RxMatch alloc] init];\n    match.original = original;\n    match.range = result.range;\n    match.value = result.range.length ? [original substringWithRange:result.range] : nil;\n    \n    //groups\n    NSMutableArray* groups = [NSMutableArray array];\n    match.groups = groups;\n    for(int i=0; i<result.numberOfRanges; i++){\n        RxMatchGroup* group = [[RxMatchGroup alloc] init];\n        group.range = [result rangeAtIndex:i];\n        group.value = group.range.length ? [original substringWithRange:group.range] : nil;\n        [groups addObject:group];\n    }\n    \n    return match;\n}\n\n- (NSArray*) matchesWithDetails:(NSString*)str\n{\n    NSMutableArray* matches = [NSMutableArray array];\n    \n    NSArray* results = [self matchesInString:str options:0 range:NSMakeRange(0, str.length)];\n    for (NSTextCheckingResult* result in results) {\n        [matches addObject:[self resultToMatch:result original:str]];\n    }\n    \n    return matches;\n}\n\n- (RxMatch*) firstMatchWithDetails:(NSString*)str\n{\n    NSArray* results = [self matchesInString:str options:0 range:NSMakeRange(0, str.length)];\n    \n    if (results.count == 0)\n        return nil;\n    \n    return [self resultToMatch:results[0] original:str];\n}\n\n@end\n\n\n\n@implementation NSString (ObjectiveCRegexCategories)\n\n- (NSRegularExpression*) toRx\n{\n    return [[NSRegularExpression alloc] initWithPattern:self];\n}\n\n- (NSRegularExpression*) toRxIgnoreCase:(BOOL)ignoreCase\n{\n    return [NSRegularExpression rx:self ignoreCase:ignoreCase];\n}\n\n- (NSRegularExpression*) toRxWithOptions:(NSRegularExpressionOptions)options\n{\n    return [NSRegularExpression rx:self options:options];\n}\n\n- (BOOL) isMatch:(NSRegularExpression*)rx\n{\n    return [rx isMatch:self];\n}\n\n- (int) indexOf:(NSRegularExpression*)rx\n{\n    return [rx indexOf:self];\n}\n\n- (NSArray*) split:(NSRegularExpression*)rx\n{\n    return [rx split:self];\n}\n\n- (NSString*) replace:(NSRegularExpression*)rx with:(NSString*)replacement\n{\n    return [rx replace:self with:replacement];\n}\n\n- (NSString*) replace:(NSRegularExpression *)rx withBlock:(NSString*(^)(NSString* match))replacer\n{\n    return [rx replace:self withBlock:replacer];\n}\n\n- (NSString*) replace:(NSRegularExpression *)rx withDetailsBlock:(NSString*(^)(RxMatch* match))replacer\n{\n    return [rx replace:self withDetailsBlock:replacer];\n}\n\n- (NSArray*) matches:(NSRegularExpression*)rx\n{\n    return [rx matches:self];\n}\n\n- (NSString*) firstMatch:(NSRegularExpression*)rx\n{\n    return [rx firstMatch:self];\n}\n\n- (NSArray*) matchesWithDetails:(NSRegularExpression*)rx\n{\n    return [rx matchesWithDetails:self];\n}\n\n- (RxMatch*) firstMatchWithDetails:(NSRegularExpression*)rx\n{\n    return [rx firstMatchWithDetails:self];\n}\n\n@end\n\n\n\n@implementation RxMatch\n@synthesize value, range, groups, original;\n@end\n\n@implementation RxMatchGroup\n@synthesize value, range;\n@end"
  },
  {
    "path": "TodoTxtMac/RelativeDates.strings",
    "content": "/* Fri */\n\"Fri\" = \"Fri\";\n\n/* Friday */\n\"Friday\" = \"Friday\";\n\n/* Mon */\n\"Mon\" = \"Mon\";\n\n/* Monday */\n\"Monday\" = \"Monday\";\n\n/* Sat */\n\"Sat\" = \"Sat\";\n\n/* Saturday */\n\"Saturday\" = \"Saturday\";\n\n/* Sun */\n\"Sun\" = \"Sun\";\n\n/* Sunday */\n\"Sunday\" = \"Sunday\";\n\n/* Thu */\n\"Thu\" = \"Thu\";\n\n/* Thursday */\n\"Thursday\" = \"Thursday\";\n\n/* today */\n\"today\" = \"today\";\n\n/* tomorrow */\n\"tomorrow\" = \"tomorrow\";\n\n/* Tue */\n\"Tue\" = \"Tue\";\n\n/* Tuesday */\n\"Tuesday\" = \"Tuesday\";\n\n/* Wed */\n\"Wed\" = \"Wed\";\n\n/* Wednesday */\n\"Wednesday\" = \"Wednesday\";\n\n/* yesterday */\n\"yesterday\" = \"yesterday\";\n\n"
  },
  {
    "path": "TodoTxtMac/TTMAppController.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n@class TTMPreferencesController;\n@class TTMFiltersController;\n\n@interface TTMAppController : NSObject\n\n// Constants for command-line argument names\nextern NSString *const TodoFileArgument;\n\n@property (nonatomic, retain) TTMPreferencesController *preferencesController;\n@property (nonatomic, retain) TTMFiltersController *filtersController;\n\n- (IBAction)openPreferencesWindow:(id)sender;\n- (IBAction)openFiltersWindow:(id)sender;\n- (IBAction)openWebSite:(id)sender;\n- (IBAction)openPlaintextProductivityWebSite:(id)sender;\n- (IBAction)openTodoTxtTipsPlaintextProductivityWebSite:(id)sender;\n\n#pragma mark - User Defaults-related Methods\n\n/*!\n * @method initializeUserDefaults:\n * @abstract This method sets up preferences managed by NSUserDefaultsController.\n */\n- (void)initializeUserDefaults:(id)sender;\n\n/*!\n * @method resetUserDefaults:\n * @abstract This method resets preferences managed by NSUserDefaultsController to default values.\n * It does not reset fitler-related preferences.\n */\n- (void)resetUserDefaults:(id)sender;\n\n#pragma mark - Command-line Argument-related Methods\n\n/*!\n * @method openTodoFileFromCommandLineArgument:\n * @abstract This method opens a todo.txt file based on the command line argument. \n * The name of the argument is defined in the TodoFileArgument constant.\n * If there is no command line argument, this method does nothing.\n */\n- (void)openTodoFileFromCommandLineArgument;\n\n/*!\n * @method commandLineArgumentTodoFile:\n * @abstract This method returns the value of the todo-file command line argument.\n * If there is no command-line argument, it returns null.\n */\n- (NSString*)commandLineArgumentTodoFile;\n\n/*!\n * @method openDocumentFromFilePath:\n * @abstract This method opens a todo.txt file (TTMDocument) based on a file path.\n */\n- (void)openDocumentFromFilePath:(NSString*)filePath;\n\n/*!\n * @method openDocumentFromFilePath:\n * @abstract This method opens a todo.txt file (TTMDocument) based on a file URL.\n */\n- (void)openDocumentFromFileURL:(NSURL*)fileURL;\n\n#pragma mark - Open Default Todo.txt File Methods\n\n/*!\n * @method openDefaultTodoFile:\n * @abstract This method opens the default todo.txt file (TTMDocument) based on user preferences.\n * If the user preference for opening a default todo.txt file on startup is disabled,\n * this method does nothing.\n */\n-(void)openDefaultTodoFile;\n\n#pragma mark - Close All Windows Methods\n\n/*!\n * @method closeAllWindows:\n * @abstract This method closes all open windows.\n */\n- (IBAction)closeAllWindows:(id)sender;\n\n/*!\n * @method documentController:didCloseAll:contextInfo\n * @abstract This method is a completion handler for closeAllWindows. It does nothing.\n */\n- (void)documentController:(NSDocumentController *)docController\n               didCloseAll:(BOOL)didCloseAll\n               contextInfo:(void *)contextInfo;\n\n#pragma mark - Reload All Methods\n\n/*!\n * @method reloadAll:\n * @abstract This method refreshes the task list from disk for all open windows.\n */\n- (IBAction)reloadAll:(id)sender;\n\n#pragma mark - Visual Refresh Methods\n\n/*!\n * @method visualRefreshAll:\n * @abstract This method visually refreshes the task list for all open windows.\n */\n- (IBAction)visualRefreshAll:(id)sender;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMAppController.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMAppController.h\"\n#import \"TTMPreferencesController.h\"\n#import \"TTMFiltersController.h\"\n#import \"TTMFilterPredicates.h\"\n#import \"TTMDocument.h\"\n#import \"TTMDocumentStatusBarText.h\"\n\n// Default user preference values, including those for saved filters\nstatic NSDictionary *defaultValues() {\n    \n    static NSData *defaultPredicateData = nil;\n    if (defaultPredicateData == nil) {\n        defaultPredicateData = [TTMFilterPredicates defaultFilterPredicateData];\n    }\n\n    static NSDictionary *dict = nil;\n    if (!dict) {\n        dict = [[NSDictionary alloc] initWithObjectsAndKeys:\n                @NO, @\"prependDateOnNewTasks\",\n                @1, @\"taskListSortType\",\n                defaultPredicateData, @\"activefilterPredicate\",\n                @0, @\"activefilterPreset\",\n                defaultPredicateData, @\"filterPredicate1\",\n                defaultPredicateData, @\"filterPredicate2\",\n                defaultPredicateData, @\"filterPredicate3\",\n                defaultPredicateData, @\"filterPredicate4\",\n                defaultPredicateData, @\"filterPredicate5\",\n                defaultPredicateData, @\"filterPredicate6\",\n                defaultPredicateData, @\"filterPredicate7\",\n                defaultPredicateData, @\"filterPredicate8\",\n                defaultPredicateData, @\"filterPredicate9\",\n                @\"\", @\"archiveFilePath\",\n                @NO, @\"archiveTasksUponCompletion\",\n                @NO, @\"useUserFont\",\n                @NO, @\"moveToTaskListAfterTaskCreation\",\n                @YES, @\"useHighlightColorsInTaskList\",\n                @NO, @\"useCustomColorForOverdueTasks\",\n                @NO, @\"useCustomColorForDueTodayTasks\",\n                @NO, @\"useCustomColorForProjects\",\n                @NO, @\"useCustomColorForContexts\",\n                @NO, @\"useCustomColorForTags\",\n                @NO, @\"useCustomColorForDueDates\",\n                @NO, @\"useCustomColorForThresholdDates\",\n                @NO, @\"useCustomColorForCreationDates\",\n                [NSArchiver archivedDataWithRootObject:[NSColor redColor]], @\"dueTodayColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor purpleColor]], @\"overdueColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor darkGrayColor]], @\"projectColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor darkGrayColor]], @\"contextColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor darkGrayColor]], @\"tagColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor darkGrayColor]], @\"dueDateColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor darkGrayColor]], @\"thresholdDateColor\",\n                [NSArchiver archivedDataWithRootObject:[NSColor darkGrayColor]], @\"creationDateColor\",\n                @NO, @\"escapeKeyCancelsAllTextChanges\",\n                @NO, @\"openDefaultTodoFileOnStartup\",\n                @\"\", @\"defaultTodoFilePath\",\n                @YES, @\"showStatusBar\",\n                [TTMDocumentStatusBarText defaultFormat], @\"statusBarFormat\",\n                @0, @\"levelsOfUndo\",\n                @YES, @\"allowUndoOfArchiveCommand\",\n                @NO, @\"hideFutureTasks\",\n                @NO, @\"closingLastWindowClosesApplication\",\n                @NO, @\"hideHiddenTasks\",\n                nil];\n    }\n    return dict;\n}\n\n// Default user preference values, excluding those for saved filters.\n// Defined to help allow users to reset preferences without losing saved filters.\nstatic NSDictionary *defaultValuesExcludingFilters() {\n    static NSMutableDictionary *defaults = nil;\n    if (defaults == nil) {\n        defaults = [NSMutableDictionary dictionaryWithDictionary:defaultValues()];\n        for (int i = 1; i <= 9; i++) {\n            [defaults removeObjectForKey:[TTMFilterPredicates keyFromPresetNumber:i]];\n        }\n        [defaults removeObjectForKey:@\"activefilterPredicate\"];\n    }\n    return defaults;\n}\n\n@implementation TTMAppController\n\n// Constants for command-line argument names\nNSString *const TodoFileArgument = @\"todo-file\";\n\n- (id)init {\n    self = [super init];\n    if (self) {\n    }\n    return self;\n}\n\n- (IBAction)openPreferencesWindow:(id)sender {\n    if (!self.preferencesController) {\n        self.preferencesController = [[TTMPreferencesController alloc]\n                                      initWithWindowNibName:@\"TTMPreferences\"];\n    }\n    [self.preferencesController showWindow:self];\n}\n\n- (IBAction)openFiltersWindow:(id)sender {\n    if (!self.filtersController) {\n        self.filtersController = [[TTMFiltersController alloc]\n                                  initWithWindowNibName:@\"TTMFilters\"];\n    }\n    [self.filtersController showWindow:self];\n}\n\n- (void)launchURLFromString:(NSString*)urlString {\n    NSURL *url = [NSURL URLWithString:urlString];\n    [[NSWorkspace sharedWorkspace] openURL:url];\n}\n\n- (IBAction)openWebSite:(id)sender {\n    [self launchURLFromString:@\"http://mjdescy.github.io/TodoTxtMac/\"];\n}\n\n- (IBAction)openPlaintextProductivityWebSite:(id)sender {\n    [self launchURLFromString:@\"http://plaintext-productivity.net\"];\n}\n\n- (IBAction)openTodoTxtTipsPlaintextProductivityWebSite:(id)sender {\n    [self launchURLFromString:@\"http://plaintext-productivity.net/1-00-tasks-introduction.html\"];\n}\n\n\n#pragma mark - User Defaults-related Methods\n\n- (void)initializeUserDefaults:(id)sender {\n    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues()];\n    [[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:defaultValues()];\n}\n\n- (void)resetUserDefaults:(id)sender {\n    [[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:\n                                                                 defaultValuesExcludingFilters()];\n    [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValues:self];\n    [[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:defaultValues()];\n}\n\n#pragma mark - Command-line Argument-related Methods\n\n- (void)openTodoFileFromCommandLineArgument {\n    NSString *fileToOpenOnLaunch = [self commandLineArgumentTodoFile];\n    if (!fileToOpenOnLaunch) {\n        return;\n    }\n    [self openDocumentFromFilePath:fileToOpenOnLaunch];\n}\n\n- (NSString*)commandLineArgumentTodoFile {\n    NSUserDefaults *args = [NSUserDefaults standardUserDefaults];\n    return [args stringForKey:TodoFileArgument];\n}\n\n- (void)openDocumentFromFilePath:(NSString*)filePath {\n    NSURL *fileURL = [NSURL fileURLWithPath:filePath];\n    [self openDocumentFromFileURL:fileURL];\n}\n\n- (void)openDocumentFromFileURL:(NSURL*)fileURL {\n    [[NSDocumentController sharedDocumentController]\n     openDocumentWithContentsOfURL:fileURL\n     display:YES\n     completionHandler:^(NSDocument *document, BOOL alreadyOpen, NSError *error){\n         // NSLog(@\"%@\",document);\n     }];\n}\n\n#pragma mark - Open Default Todo.txt File Methods\n\n-(void)openDefaultTodoFile {\n    if (![[NSUserDefaults standardUserDefaults] boolForKey:@\"openDefaultTodoFileOnStartup\"]) {\n        return;\n    }\n    [self openDocumentFromFilePath:[[NSUserDefaults standardUserDefaults]\n                                    stringForKey:@\"defaultTodoFilePath\"]];\n}\n\n#pragma mark - Close All Windows Methods\n\n- (IBAction)closeAllWindows:(id)sender {\n    [[NSDocumentController sharedDocumentController]\n         closeAllDocumentsWithDelegate:self\n                   didCloseAllSelector:@selector(documentController:didCloseAll:contextInfo:)\n                           contextInfo:NULL];\n}\n\n- (void)documentController:(NSDocumentController *)docController\n                     didCloseAll:(BOOL)didCloseAll\n                     contextInfo:(void *)contextInfo {\n    return;\n}\n\n#pragma mark - Reload All Methods\n\n- (IBAction)reloadAll:(id)sender {\n    NSArray *documents = [[NSDocumentController sharedDocumentController] documents];\n    [documents enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {\n        [(TTMDocument*)obj reloadFile:self];\n    }];\n}\n\n#pragma mark - Visual Refresh Methods\n\n- (IBAction)visualRefreshAll:(id)sender {\n    NSArray *documents = [[NSDocumentController sharedDocumentController] documents];\n    [documents enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {\n        [(TTMDocument*)obj visualRefreshOnly:self];\n    }];\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMAppDelegate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n@class TTMAppController;\n\n@interface TTMAppDelegate : NSObject <NSApplicationDelegate>\n\n@property (nonatomic, retain) IBOutlet TTMAppController *appController;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMAppDelegate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMAppDelegate.h\"\n#import \"TTMFilterPredicates.h\"\n#import \"TTMAppController.h\"\n\n@implementation TTMAppDelegate\n\n- (void)applicationDidFinishLaunching:(NSNotification *)notification {\n    [self.appController initializeUserDefaults:self];\n    \n    // Open file from command line argument. Does nothing if there is no command line argument.\n    [self.appController openTodoFileFromCommandLineArgument];\n    \n    // Open default todo file, if one is selected and the option is enabled.\n    [self.appController openDefaultTodoFile];\n}\n\n- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender {\n    // Suppress creating an Untitled document on launch if either:\n    // 1. there is a command line argument to open a todo file, or\n    // 2. the open default todo.txt file on startup user preference is selected.\n    // Without this method override, opening a todo file using the command line argument\n    // or the default todo file user preference also opens an Untitled document every time.\n    return ([self.appController commandLineArgumentTodoFile] == NULL &&\n            ![[NSUserDefaults standardUserDefaults] boolForKey:@\"openDefaultTodoFileOnStartup\"]);\n}\n\n- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {\n    return [[NSUserDefaults standardUserDefaults] boolForKey:@\"closingLastWindowClosesApplication\"];\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMDateUtility.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n@interface TTMDateUtility : NSObject\n\n/*!\n * @method convertStringToDate:\n * @abstract This method converts a string in \"yyyy-MM-dd\" format to an NSDate object.\n * @param dateString An NSString in \"yyyy-MM-dd\" format. It must not contain time elements.\n * @return Returns a date object based on the date string.\n */\n+ (NSDate*)convertStringToDate:(NSString*)dateString;\n\n/*!\n * @method convertDateToString:\n * @abstract This method returns today's date as a string in \"yyyy-MM-dd\" format.\n * @param date The date to convert to a string.\n * @return The date parameter as a string in \"yyyy-MM-dd\" format.\n */\n+ (NSString*)convertDateToString:(NSDate*)date;\n\n/*!\n * @method todayAsString:\n * @abstract This method returns today's date.\n * @return Today's date.\n */\n+ (NSDate*)today;\n\n/*!\n * @method todayAsString:\n * @abstract This method returns today's date as a string in \"yyyy-MM-dd\" format.\n * @return Today's date as a string in \"yyyy-MM-dd\" format.\n */\n+ (NSString*)todayAsString;\n\n/*!\n * @method addDays:toDate:\n * @abstract This method adds a number of days to the date.\n * @param days The number of days to add. Can be negative.\n * @param date The date to add days to.\n * @return A date offset by the given number of days.\n */\n+ (NSDate*)addDays:(NSInteger)days toDate:(NSDate*)date;\n\n/*!\n * @method dateWithoutTime:\n * @abstract This method strips the time element from a date.\n * @param date The date to return as of 00:00:00.\n * @return A date with the time element set to 00:00:00.\n * @discussion This method is necessary to allow for date \"is equal\" comparisons\n * in NSPredicateEditor.\n */\n+ (NSDate*)dateWithoutTime:(NSDate*)date;\n\n/*!\n * @method dateFromNaturalLanguageString:\n * @abstract This method returns a date based on a string such as \"today\" or \"Monday\".\n * @param string A string that could represent a relative due date.\n * @return A date, or nil if no date matches the string passed to the method.\n */\n+ (NSDate*)dateFromNaturalLanguageString:(NSString*)string;\n\n/*!\n * @method relativeDateFromWeekdayName:withAllowedWeekdayNames:withDateFormat\n * @abstract This method returns a date based on a string that represents a weekday name.\n * @return A date, or nil if no date matches the string passed to the method.\n * @param weekdayName A string that could be a weekday name.\n * @param allowedWeekdayNames An array of weekday names (or shortnames) that the weekdayName \n * will be tested to match.\n * @param dateFormat Date format to apply to the weekdayName for matching purposes.\n * @discussion This is a convenience method called from\n * relativeDateFromWeekdayName:withAllowedWeekdayNames:withDateFormat.\n */\n+ (NSDate*)relativeDateFromWeekdayName:(NSString*)weekdayName\n               withAllowedWeekdayNames:(NSArray*)allowedWeekdayNames\n                        withDateFormat:(NSString*)dateFormat;\n\n/*!\n * @method dateStringFromNaturalLanguageString:\n * @abstract This method returns a string-formatted date in \"YYYY-MM-DD\" format, \n * based on a string such as \"today\" or \"Monday\".\n * @param string A string that could represent a relative due date.\n * @return A string-formatted date in \"YYYY-MM-DD\" format, or nil if no date matches\n * the string passed to the method.\n */\n+ (NSString*)dateStringFromNaturalLanguageString:(NSString*)string;\n\n+ (NSInteger)daysBetweenDate:(NSDate*)startDate andEndDate:(NSDate*)endDate;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMDateUtility.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMDateUtility.h\"\n#import \"NSDate+RelativeDates.h\"\n\n@implementation TTMDateUtility\n\n+ (NSDate*)convertStringToDate:(NSString*)dateString {\n    if (!dateString) {\n        return nil;\n    }\n    \n    // dateString must not contain a time element.\n    // We add a time element to it to set the time to midnight.\n    NSString *dateTimeString = [dateString stringByAppendingString:@\" 00:00:00\"];\n    \n    // Convert dateString to NSDate.\n    NSDateFormatter *dateFormatter = [self dateFormatter];\n    [dateFormatter setDateFormat:@\"yyyy-MM-dd HH:mm:ss\"];\n    return [dateFormatter dateFromString:dateTimeString];\n}\n\n+ (NSDateFormatter*)dateFormatter {\n    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];\n    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n    [dateFormatter setCalendar:gregorian];\n    [dateFormatter setLocale:[NSLocale systemLocale]];\n    [dateFormatter setDateFormat:@\"yyyy-MM-dd\"];\n    return dateFormatter;\n}\n\n+ (NSString*)convertDateToString:(NSDate*)date {\n    if (!date) {\n        return nil;\n    }\n    NSDateFormatter *dateFormatter = [self dateFormatter];\n    return [dateFormatter stringFromDate:date];\n}\n\n+ (NSDate*)today {\n    return [self dateWithoutTime:[NSDate date]];\n}\n\n+ (NSString*)todayAsString {\n    return [self convertDateToString:[self today]];\n}\n\n+ (NSDate*)addDays:(NSInteger)days toDate:(NSDate*)date {\n    NSDateComponents *dayComponent = [[NSDateComponents alloc] init];\n    dayComponent.day = days;\n    NSCalendar *theCalendar = [NSCalendar currentCalendar];\n    return [theCalendar dateByAddingComponents:dayComponent toDate:date options:0];\n}\n\n+ (NSDate*)dateWithoutTime:(NSDate*)date {\n    if (date == nil) {\n        return nil;\n    }\n    NSDateComponents *comps = [[NSCalendar currentCalendar]\n                               components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay\n                               fromDate:date];\n    \n    return [[NSCalendar currentCalendar] dateFromComponents:comps];\n}\n\n+ (NSDate*)dateFromNaturalLanguageString:(NSString*)string {\n    // This method's structure of comparing localized strings, rather than just using\n    // an NSDataDetector, came about because NSDataDetector does not properly find dates\n    // in short strings such as \"today\", \"tomorrow\", or \"Friday\". NSDataDetector does find\n    // dates when a time is specified, such as \"today at 00:00\", but it also finds the time\n    // when nonsense plus a time is specified, as in \"never at 00:00\" (which returns today's date\n    // at midnight).\n\n    if (!string) {\n        return nil;\n    }\n    \n    NSString *todayString = NSLocalizedStringFromTable(@\"today\", @\"RelativeDates\", @\"today\");\n    if ([string caseInsensitiveCompare:todayString] ==\n        NSOrderedSame) {\n        return [self today];\n    }\n    \n    NSString *tomorrowString = NSLocalizedStringFromTable(@\"tomorrow\", @\"RelativeDates\",\n                                                          @\"tomorrow\");\n    if ([string caseInsensitiveCompare:tomorrowString]\n        == NSOrderedSame) {\n        return  [self addDays:1 toDate:[self today]];\n    }\n    \n    NSString *yesterdayString = NSLocalizedStringFromTable(@\"yesterday\", @\"RelativeDates\",\n                                                           @\"yesterday\");\n    if ([string caseInsensitiveCompare:yesterdayString]\n        == NSOrderedSame) {\n        return  [self addDays:-1 toDate:[self today]];\n    }\n    \n    NSString *testString = [string lowercaseString];\n    NSDate *returnDate;\n    \n    NSArray *weekdayNames =\n        @[[NSLocalizedStringFromTable(@\"Monday\", @\"RelativeDates\", @\"Monday\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Tuesday\", @\"RelativeDates\", @\"Tuesday\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Wednesday\", @\"RelativeDates\", @\"Wednesday\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Thursday\", @\"RelativeDates\", @\"Thursday\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Friday\", @\"RelativeDates\", @\"Friday\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Saturday\", @\"RelativeDates\", @\"Saturday\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Sunday\", @\"RelativeDates\", @\"Sunday\") lowercaseString]];\n    returnDate = [self relativeDateFromWeekdayName:testString\n                           withAllowedWeekdayNames:weekdayNames\n                                    withDateFormat:@\"eeee\"];\n    if (returnDate) {\n        return returnDate;\n    }\n\n    NSArray *shortWeekdayNames =\n        @[[NSLocalizedStringFromTable(@\"Mon\", @\"RelativeDates\", @\"Mon\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Tue\", @\"RelativeDates\", @\"Tue\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Wed\", @\"RelativeDates\", @\"Wed\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Thu\", @\"RelativeDates\", @\"Thu\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Fri\", @\"RelativeDates\", @\"Fri\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Sat\", @\"RelativeDates\", @\"Sat\") lowercaseString],\n          [NSLocalizedStringFromTable(@\"Sun\", @\"RelativeDates\", @\"Sun\") lowercaseString]];\n    returnDate = [self relativeDateFromWeekdayName:testString\n                           withAllowedWeekdayNames:shortWeekdayNames\n                                    withDateFormat:@\"eee\"];\n    if (returnDate) {\n        return returnDate;\n    }\n    \n    return nil;\n}\n\n+ (NSDate*)relativeDateFromWeekdayName:(NSString*)weekdayName\n               withAllowedWeekdayNames:(NSArray*)allowedWeekdayNames\n                        withDateFormat:(NSString*)dateFormat {\n    NSSet *weekdayNamesSet = [NSSet setWithArray:allowedWeekdayNames];\n    if (![weekdayNamesSet containsObject:weekdayName]) {\n        return nil;\n    }\n    \n    NSDateFormatter *dateFormatter = [self dateFormatter];\n    [dateFormatter setDateFormat:dateFormat];\n    \n    NSDate *todaysDate = [self today];\n    \n    for (NSUInteger i = 1; i < 8; i++) {\n        NSDate *testDate = [self addDays:i toDate:todaysDate];\n        NSString *generatedWeekdayName = [[dateFormatter stringFromDate:testDate] lowercaseString];\n        if ([weekdayName caseInsensitiveCompare:generatedWeekdayName] == NSOrderedSame) {\n            return testDate;\n        }\n    }\n    \n    return nil;\n}\n\n+ (NSString*)dateStringFromNaturalLanguageString:(NSString*)naturalLanguageString {\n    NSDate *date = [self dateFromNaturalLanguageString:naturalLanguageString];\n    if (date == nil) {\n        return nil;\n    } else {\n        return [self convertDateToString:date];\n    }\n}\n\n+ (NSInteger)daysBetweenDate:(NSDate*)startDate andEndDate:(NSDate*)endDate {\n    NSCalendar *currentCalendar = [NSCalendar currentCalendar];\n    NSDateComponents *components = [currentCalendar components:NSCalendarUnitDay fromDate:startDate toDate:endDate options:NSCalendarMatchFirst];\n    \n    return components.day;\n}\n\n@end"
  },
  {
    "path": "TodoTxtMac/TTMDocument.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n@class TTMAppController;\n@class TTMFieldEditor;\n@class TTMTask;\n@class TTMTasklistMetadata;\n@class TTMTableView;\n@class TTMTableViewDelegate;\n\n#define TASKMENUTAG   3000\n#define SORTMENUTAG   4000\n#define FILTERMENUTAG 5000\n#define STATUSBARMENUITEMTAG 6000\n#define COPYTASKTONEWTASKMENUTAG 7000\n\ntypedef enum : NSUInteger {\n    TTMSortOrderInFile,\n    TTMSortPriority,\n    TTMSortProject,\n    TTMSortContext,\n    TTMSortDueDate,\n    TTMSortCreationDate,\n    TTMSortCompletionDate,\n    TTMSortThresholdDate,\n    TTMSortAlphabetical\n} TTMTaskListSortType;\n\n@interface TTMDocument : NSDocument\n\n#pragma mark - Properties\n\n// Data elements related to the task list\n@property (nonatomic, copy) NSMutableArray *taskList;\n@property (nonatomic) BOOL usesWindowsLineEndings;\n@property (nonatomic, copy) NSString *preferredLineEnding;\n\n// Window controls\n@property (nonatomic, retain) IBOutlet NSTextField *textField;\n@property (nonatomic, retain) IBOutlet NSSearchField *searchField;\n@property (nonatomic, retain) IBOutlet NSPredicate *searchFieldPredicate;\n@property (nonatomic, retain) IBOutlet TTMTableView *tableView;\n@property (nonatomic, retain) IBOutlet TTMTableViewDelegate *tableViewDelegate;\n@property (nonatomic, retain) IBOutlet NSArrayController *arrayController;\n@property (nonatomic, retain) IBOutlet NSCell *rawTextCell;\n@property (nonatomic, retain) TTMFieldEditor *customFieldEditor;\n@property (nonatomic, retain) IBOutlet NSTextField *statusBarTextField;\n@property (nonatomic, retain) NSString *statusBarText;\n@property (nonatomic, retain) IBOutlet NSLayoutConstraint *bottomConstraint;\n@property (nonatomic, retain) IBOutlet NSView *findReplaceView;\n@property (nonatomic, retain) IBOutlet NSTextField *findText;\n@property (nonatomic, retain) IBOutlet NSTextField *replaceText;\n\n// User font preference\n@property (nonatomic) BOOL usingUserFont;\n@property (nonatomic, retain) NSFont *userFont;\n\n// Active filter predicate\n@property (nonatomic, retain) NSPredicate *activeFilterPredicate;\n@property (nonatomic) NSUInteger activeFilterPredicateNumber;\n\n// Active sort type\n@property (nonatomic) NSUInteger activeSortType;\n\n// Tasklist metadata\n@property (nonatomic, retain) TTMTasklistMetadata *tasklistMetadata;\n@property (nonatomic, retain) TTMTasklistMetadata *filteredTasklistMetadata;\n@property (nonatomic, retain) IBOutlet NSWindow *tasklistMetadataSheet;\n\n// Task objects for undo/redo of task edits\n@property (nonatomic, copy) NSArray *originalTasks;\n\n@property (nonatomic, retain) NSDate *lastInternalModificationDate;\n\n\n#pragma mark - File Loading and Saving Methods\n\n/*!\n * @method reloadFile:\n * @abstract Reloads the task list file.\n */\n- (IBAction)reloadFile:(id)sender;\n\n/*!\n * @method getTaskListSelections\n * @abstract This method gets/saves selected items in the task list before the reload:\n * method reloads the task list file, to allow for selections to be retained (as much as possible)\n * after the user reloads the file.\n */\n- (NSMutableArray*)getTaskListSelections;\n\n/*!\n * @method setTaskListSelections:\n * @param taskListSelections Array of task items to select\n * @abstract This method re-sets selected items in the task list after the reload:\n * method reloads the task list file, to allow for selections to be retained (as much as possible)\n * after the user reloads the file. This method makes a best effort to select the same tasks as\n * were selected before (which are to be returned by the getTaskListSelections: method prior to\n * reloading the file. Tasks that change (i.e., are completed or otherwise modified) or removed \n * from the list will not be selected after reload. For duplicate tasks (those with identical\n * raw text), the first of the duplicate tasks will be selected.\n */\n- (void)setTaskListSelections:(NSArray*)taskListSelectedItems;\n\n#pragma mark - Undo/Redo Methods\n\n/*!\n * @method replaceTasks:withTasks:\n * @abstract This method replaces one array of tasks with another in the task list.\n * It is used for undo/redo operations, namely to undo the reload file command.\n */\n\n- (void)replaceAllTasks:(NSArray*)newTasks;\n\n/*!\n * @method replaceTasks:withTasks:\n * @abstract This method replaces one array of tasks with another in the task list. \n * It is used for undo/redo operations.\n */\n- (void)replaceTasks:(NSArray*)oldTasks withTasks:(NSArray*)newTasks;\n\n/*!\n * @method addTasks:\n * @abstract This method adds an array of tasks to the task list.\n * It is used for undo/redo operations.\n */\n- (void)addTasks:(NSArray*)newTasks;\n\n/*!\n * @method addTasks:\n * @abstract This method removes an array of tasks from the task list.\n * It is used for undo/redo operations.\n */\n- (void)removeTasks:(NSArray*)oldTasks;\n\n/*!\n * @method addTasks:\n * @abstract This method performs and undo for the archive command.\n * It is used for undo/redo operations.\n */\n- (void)undoArchiveTasks:(NSArray*)archivedTasks fromArchiveFile:(NSString*)archiveFilePath;\n\n#pragma mark - Add/Remove Task(s) methods\n\n/*!\n * @method createWorkingTaskWithRawText:createWorkingTaskWithRawText\n * @abstract Creates a task object to be inserted into the task list.\n * @param rawText The text to base the task on\n * @param newTaskId The (zero-based) numerical position of the task within the todo.txt file.\n */\n- (TTMTask*)createWorkingTaskWithRawText:(NSString*)rawText withTaskId:(NSUInteger)newTaskId;\n\n/*!\n * @method moveFocusToNewTaskTextField:\n * @abstract Moves focus to the new task text field so the user can type in a new task.\n */\n- (IBAction)moveFocusToNewTaskTextField:(id)sender;\n\n/*!\n * @method removeAllTasks:\n * @abstract Removes all tasks from the task list.\n * @discussion This method is called before a todo.txt file is loaded.\n */\n- (void)removeAllTasks;\n\n/*!\n * @method addTasksFromArray:removeAllTasksFirst:undoActionName\n * @abstract Add tasks from an array to the task list.\n * @param rawTextStrings The array of tasks' raw text strings.\n * @param removeAllRecordsFirst Set to YES if all records should be removed prior to adding tasks.\n * @param undoActionName Set to undo action name; blank if operation is not undoable\n */\n- (void)addTasksFromArray:(NSArray*)rawTextStrings\n      removeAllTasksFirst:(BOOL)removeAllRecordsFirst\n           undoActionName:(NSString*)undoActionName;\n\n/*!\n * @method addNewTask:\n * @abstract Adds a new task to the task list based on the content of the text field.\n */\n- (IBAction)addNewTask:(id)sender;\n\n/*!\n * @method tabFromTextFieldToTaskList:\n * @abstract Simulate a tab keypress to move from the text field to the task list.\n * @discussion This method is optionally called in the addNewTask: method.\n */\n- (void)tabFromTextFieldToTaskList;\n\n/*!\n * @method addNewTasksFromClipboard:\n * @abstract Adds tasks on the clipboard (one or more tasks separated by line breaks)\n * to the task list.\n */\n- (void)addNewTasksFromClipboard:(id)sender;\n\n/*!\n * @method addNewTasksFromDragAndDrop:\n * @abstract Add tasks from drag and drop (of text) onto the task list.\n */\n- (IBAction)addNewTasksFromDragAndDrop:(id)sender;\n\n/*!\n * @method addNewTasksFromPasteBoard:\n * @abstract Adds tasks from a pasteboard to the task list.\n * @param pasteboard The pasteboard, either the general pasteboard or the dragging pasteboard.\n * @discussion This is a convenience method called from both addNewTasksFromClipboard: and\n * addNewTasksFromDragAndDrop:.\n */\n- (void)addNewTasksFromPasteBoard:(NSPasteboard*)pasteboard;\n\n/*!\n * @method copyTaskToNewTask:\n * @abstract Copies selected task to new tast text edit box.\n */\n- (IBAction)copyTaskToNewTask:(id)sender;\n\n#pragma mark - Update Task Methods\n\n/*!\n * @method refreshTaskListWithSave:\n * @abstract Refresh the task list array controller and table view, and refresh\n * the lists of projects and contexts used for autocompletion. Optionally save the\n * file prior to calling the refresh.\n * @param saveToFile Set to YES to save the file before the refresh.\n */\n- (void)refreshTaskListWithSave:(BOOL)saveToFile;\n\n/*!\n * @method visualRefreshOnly:\n * @abstract Refreshes the tableView control to apply color changes, etc., only.\n */\n- (IBAction)visualRefreshOnly:(id)sender;\n\n/*!\n * @method setTaskListFont:\n * @abstract Sets/changes font for task list.\n */\n- (void)setTaskListFont;\n\n/*!\n * @method updateSelectedTask:\n * @abstract Set the selected task in the task list to edit mode.\n */\n- (IBAction)updateSelectedTask:(id)sender;\n\n/*!\n * @method initializeUpdateSelectedTask:\n * @abstract Captures undo data for the update task list command, prior to the update being made.\n */\n- (void)initializeUpdateSelectedTask;\n\n/*!\n * @method finalizeUpdateSelectedTask:rawText\n * @abstract Finalizes preparation of undo data for the update task list command, \n * after the update is made.\n */\n- (void)finalizeUpdateSelectedTask:(NSString*)rawText;\n\n/*!\n * @method toggleTaskCompletion:\n * @abstract Marks incomplete tasks completed. Marks complete tasks incomplete.\n */\n- (IBAction)toggleTaskCompletion:(id)sender;\n\n/*!\n * @method deleteSelectedTasks:\n * @abstract Delete selected tasks in the task list.\n */\n- (IBAction)deleteSelectedTasks:(id)sender;\n\n/*!\n * @method appendText:\n * @abstract Append text, entered in a modal sheet, to selected tasks.\n */\n- (IBAction)appendText:(id)sender;\n\n/*!\n * @method prependText:\n * @abstract Prepend text, entered in a modal sheet, to selected tasks.\n */\n- (IBAction)prependText:(id)sender;\n\n/*!\n * @method replaceText:\n * @abstract Find and replace text, entered in a modal sheet, to selected tasks.\n */\n- (IBAction)replaceText:(id)sender;\n\n#pragma mark - Priority Methods\n\n/*!\n * @method setPriority:\n * @abstract Sets the priority for selected tasks via a modal sheet.\n */\n- (IBAction)setPriority:(id)sender;\n\n/*!\n * @method increasePriority:\n * @abstract Increases the priority of selected tasks by 1, e.g. from B to A.\n */\n- (IBAction)increasePriority:(id)sender;\n\n/*!\n * @method decreasePriority:\n * @abstract Decreases the priority of selected tasks by 1, e.g. from A to B.\n */\n- (IBAction)decreasePriority:(id)sender;\n\n/*!\n * @method removePriority:\n * @abstract Removes the priority from selected tasks.\n */\n- (IBAction)removePriority:(id)sender;\n\n#pragma mark - Postpone and Due Date Methods\n\n/*!\n * @method setDueDate:\n * @abstract Sets the due date for selected tasks via a modal sheet.\n */\n- (IBAction)setDueDate:(id)sender;\n\n/*!\n * @method increaseDueDateByOneDay:\n * @abstract Increases the due date of selected tasks by one day, e.g. from 2014-12-01 to 2014-12-02.\n */\n- (IBAction)increaseDueDateByOneDay:(id)sender;\n\n/*!\n * @method decreaseDueDateByOneDay:\n * @abstract Decreases the due date of selected tasks by one day, e.g. from 2014-12-02 to 2014-12-01.\n */\n- (IBAction)decreaseDueDateByOneDay:(id)sender;\n\n/*!\n * @method removeDueDate:\n * @abstract Removes due date from selected tasks.\n */\n- (IBAction)removeDueDate:(id)sender;\n\n/*!\n * @method postpone:\n * @abstract Postpones (increases) the due date of selected tasks by a user-entered number of days,\n * which is entered via a modal sheet.\n * @discussion This method can be used to decrease the due date of selected tasks, too, if the user\n * enters a negative number.\n */\n- (IBAction)postpone:(id)sender;\n\n#pragma mark - Threshold Date Methods\n\n/*!\n * @method setThresholdDate:\n * @abstract Sets the threshold date for selected tasks via a modal sheet.\n */\n- (IBAction)setThresholdDate:(id)sender;\n\n/*!\n * @method increaseThresholdDateByOneDay:\n * @abstract Increases the threshold date of selected tasks by one day, e.g. from 2014-12-01 to 2014-12-02.\n */\n- (IBAction)increaseThresholdDateByOneDay:(id)sender;\n\n/*!\n * @method decreaseDueDateByOneDay:\n * @abstract Decreases the threshold date of selected tasks by one day, e.g. from 2014-12-02 to 2014-12-01.\n */\n- (IBAction)decreaseThresholdDateByOneDay:(id)sender;\n\n/*!\n * @method removeThresholdDate:\n * @abstract Removes threshold date for selected tasks.\n */\n- (IBAction)removeThresholdDate:(id)sender;\n\n#pragma mark - Sort Methods\n\n/*!\n * @method sortTaskList:\n * @abstract Sorts the task list.\n * @param sortType An enum value that specifies the sort type.\n * @discussion This method also sets the default sort type to whatever sort type is passed to it.\n */\n- (void)sortTaskList:(TTMTaskListSortType)sortType;\n\n/*!\n * @method sortTaskListUsingTagforPreset:\n * @abstract Sorts the task list, using the preset number found in the sender's tag.\n */\n- (IBAction)sortTaskListUsingTagforPreset:(id)sender;\n\n#pragma mark - Filter Methods\n\n/*!\n * @method combineFilterPresetPredicate:withSearchFilterPredicate\n * @abstract Combines the filter preset predicate applied to the task list with the search field \n * predicate in an \"AND\" fashion.\n */\n- (NSPredicate*)combineFilterPresetPredicate:(NSPredicate*)filterPresetPredicate\n                   withSearchFilterPredicate:(NSPredicate*)searchFilterPredicate;\n\n/*!\n * @method filterTaskListUsingTagforPreset:\n * @abstract Sets the filter on the task list to a numbered preset, based on the sender's tag.\n * Filter preset 0 is defined to mean \"no filter\".\n */\n- (IBAction)filterTaskListUsingTagforPreset:(id)sender;\n\n/*!\n * @method removeTaskListFilter:\n * @abstract Removes the currently active filter.\n */\n- (void)removeTaskListFilter;\n\n/*!\n * @method reapplyActiveFilterPredicate:\n * @abstract Applies the active filter to the task list.\n */\n- (void)reapplyActiveFilterPredicate;\n\n/*!\n * @method changeActiveFilterPredicateToPreset:\n * @abstract Changes the active filter preset to the one the user selected.\n * @param presetNumber The preset number the user selected.\n */\n- (void)changeActiveFilterPredicateToPreset:(NSUInteger)presetNumber;\n\n#pragma mark - Archive Methods\n\n/*!\n * @method archiveCompletedTasks:\n * @abstract Archives all completed tasks to the user-specified archive file.\n * @discussion The user must specify an archive file in the application's preferences.\n * There is only one archive file; any open task file will archive to the same file.\n */\n- (IBAction)archiveCompletedTasks:(id)sender;\n\n/*!\n * @method appendString:toArchiveFile:\n * @abstract Appends a string, which can contain one or more tasks, to another file.\n * @param content One or more tasks. Multiple tasks must be separated by line breaks.\n * @param archiveFilePath Archive file path. This path must be specified by the file path\n * saved in the application's preferences and obtained using the standard file open dialog.\n * @discussion This is a convenience method called by the archiveCompletedTasks: method.\n */\n- (void)appendString:(NSString*)content toArchiveFile:(NSString*)archiveFilePath;\n\n- (void)removeTasks:(NSArray*)tasksToRemove fromArchiveFile:(NSString*)archiveFilePath;\n\n#pragma mark - Find Methods\n\n/*!\n * @method moveFocusToSearchBox:\n * @abstract Moves focus to the search box to find text.\n */\n- (IBAction)moveFocusToSearchBox:(id)sender;\n\n/*!\n * @method makeSearchBoxRefuseFocus:\n * @abstract Resets search box to refuse first responder (so user cannot tab to it).\n */\n- (IBAction)makeSearchBoxRefuseFocus:(id)sender;\n\n#pragma mark - Tasklist Metadata Methods\n\n/*!\n * @method showTasklistMetadata:\n * @abstract Display tasklist metadata in a modal sheet.\n */\n- (IBAction)showTasklistMetadata:(id)sender;\n\n/*!\n * @method hideTasklistMetadata:\n * @abstract Hide tasklist metadata modal sheet.\n */\n- (IBAction)hideTasklistMetadata:(id)sender;\n\n#pragma mark - Status Bar Methods\n\n/*!\n * @method updateStatusBarText:\n * @abstract Updates the status bar text, based on the properties of the TTMDocument.\n */\n- (void)updateStatusBarText;\n\n/*!\n * @method statusBarVisable:\n * @abstract Returns whether the status bar is visible.\n */\n- (BOOL)statusBarVisable;\n\n/*!\n * @method setStatusBarVisable:\n * @abstract Show or hide the status bar.\n * Each time this method is called the choice to show or hide the status bar is saved to user\n * defaults. The next window opened (including after relaunch) will either show or hide the \n * status bar according to the flag passed to this method.\n * @param flag Set to true to show the status bar; set to false to hide the status bar.\n */\n- (void)setStatusBarVisable:(BOOL)flag;\n\n/*!\n * @method toggleStatusBarVisability:\n * @abstract Change whether the status bar is shown or hidden. \n */\n- (IBAction)toggleStatusBarVisability:(id)sender;\n\n- (void)setTableWidthToWidthOfContents;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMDocument.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMDocument.h\"\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n#import \"TTMTableView.h\"\n#import \"TTMTableViewDelegate.h\"\n#import \"TTMFilterPredicates.h\"\n#import \"TTMFieldEditor.h\"\n#import \"RegExCategories.h\"\n#import \"TTMTasklistMetadata.h\"\n#import \"TTMDocumentStatusBarText.h\"\n\n@implementation TTMDocument\n\n#pragma mark - Instance Variables\n\nstatic NSString * const RelativeDueDatePattern = @\"(?<=due:)\\\\S*\";\n\n#pragma mark - init Methods\n\n- (id)init\n{\n    self = [super init];\n    if (self) {\n        [[self undoManager] disableUndoRegistration];\n        _taskList = [[NSMutableArray alloc] init];\n        _arrayController = [[NSArrayController alloc] initWithContent:_taskList];\n        _preferredLineEnding = @\"\\n\";\n        _usesWindowsLineEndings = NO;\n        _activeFilterPredicateNumber = [TTMFilterPredicates activeFilterPredicatePresetNumber];\n        [self.undoManager setLevelsOfUndo:[[NSUserDefaults standardUserDefaults]\n                                           integerForKey:@\"levelsOfUndo\"]];\n        [[self undoManager] enableUndoRegistration];\n\n        _lastInternalModificationDate = nil;\n    }\n\n    return self;\n}\n\n- (void)awakeFromNib {\n    // Set custom field editor.\n    \n    // Set arrayController sort type.\n    self.activeSortType = [[NSUserDefaults standardUserDefaults] integerForKey:@\"taskListSortType\"];\n    [self sortTaskList:self.activeSortType];\n\n    // Load active filter predicate.\n    self.activeFilterPredicate = [TTMFilterPredicates activeFilterPredicate];\n    \n    // Set up drag and drop for tableView.\n    [self.tableView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];\n    [self.tableView registerForDraggedTypes:[NSArray arrayWithObject:NSStringPboardType]];\n\n    [self setTaskListFont];\n\n    [self setTableWidthToWidthOfContents];\n\n    // Observe array controller selection to update \"selected tasks\" count in status bar\n    [self.arrayController addObserver:self forKeyPath:@\"selection\" options:NSKeyValueObservingOptionNew context:nil];\n    \n    // Observe self to update search field filter\n    [self addObserver:self forKeyPath:@\"searchFieldPredicate\" options:NSKeyValueObservingOptionNew context:nil];\n    \n    // Observe NSUserDefaults to update undo-related preferences\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"levelsOfUndo\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n\n    // Observe NSUserDefaults to update filter-related preferences\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate1\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate2\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate3\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate4\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate5\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate6\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate7\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate8\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n    [[NSUserDefaults standardUserDefaults] addObserver:self\n                                            forKeyPath:@\"filterPredicate9\"\n                                               options:NSKeyValueObservingOptionNew\n                                               context:nil];\n}\n\n- (NSString *)windowNibName {\n    return @\"TTMDocument\";\n}\n\n- (void)windowControllerDidLoadNib:(NSWindowController *)aController {\n    [super windowControllerDidLoadNib:aController];\n    \n    // Add any code here that needs to be executed once the windowController\n    // has loaded the document's window.\n    [self setStatusBarVisable:[[NSUserDefaults standardUserDefaults] boolForKey:@\"showStatusBar\"]];\n}\n\n- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)client {\n    if (!self.customFieldEditor) {\n        self.customFieldEditor = [[TTMFieldEditor alloc] init];\n    }\n    [self.customFieldEditor setFieldEditor:YES];\n    self.customFieldEditor.projectsArray = self.tasklistMetadata.projectsArray;\n    self.customFieldEditor.contextsArray = self.tasklistMetadata.contextsArray;\n    self.customFieldEditor.drawsBackground = YES;\n    self.customFieldEditor.backgroundColor = [NSColor whiteColor];\n    return self.customFieldEditor;\n}\n\n#pragma mark - File Loading and Saving Methods\n\n- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {\n    // Prepare file contents to save.\n    NSMutableString *fileData = [[NSMutableString alloc] init];\n    for (int i = 0; i < [self.taskList count]; i++) {\n        if ([[self.taskList objectAtIndex:i] isKindOfClass:[TTMTask class]]) {\n            NSString *line = [[self.taskList objectAtIndex:i] rawText];\n            // Append the string to fileData if it is not null.\n            // Appending a null causes an exception.\n            if (line) {\n                [fileData appendString:line];\n                [fileData appendString:self.preferredLineEnding];\n            }\n        }\n    }\n    return [fileData dataUsingEncoding:NSUTF8StringEncoding];\n}\n\n- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError {\n    // Read file contents.\n    NSString *fileContents = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];\n    if (!fileContents) {\n        if (outError != nil) {\n            *outError = [NSError errorWithDomain:NSCocoaErrorDomain\n                                            code:NSFileReadUnknownError\n                                        userInfo:nil];\n        }\n        return NO;\n    }\n\n    // Check the line endings in the file, and remember if Windows line endings (\"\\r\\n\") are used.\n    self.usesWindowsLineEndings = ([fileContents rangeOfString:@\"\\r\\n\"].location != NSNotFound);\n    self.preferredLineEnding = (self.usesWindowsLineEndings) ? @\"\\r\\n\" : @\"\\n\";\n    \n    // Split contents of file into an array of strings.\n    // Note: A file with Windows line endings (\"\\r\\n\") may also have Unix line endings (\"\\n\").\n    // This can happen if a text file is created on Windows, then is edited on the Mac\n    // (in TextEdit, for example).\n    // Because inconsistent line endings can exist, for files with Windows line endings,\n    // we remove the carriage return character prior to splitting the file contents into\n    // an array of strings.\n    NSArray *rawTextStrings = (self.usesWindowsLineEndings) ?\n        [[fileContents stringByReplacingOccurrencesOfString:@\"\\r\" withString:@\"\"] componentsSeparatedByString:@\"\\n\"] :\n        [fileContents componentsSeparatedByString:@\"\\n\"];\n\n    // Refresh the arrayController and tableView\n    [self addTasksFromArray:rawTextStrings removeAllTasksFirst:YES undoActionName:@\"\"];\n\n    [self updateLastInternalModificationDate];\n\n    return YES;\n}\n\n- (void)updateLastInternalModificationDate {\n        NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:self];\n        NSError *outError;\n        [fileCoordinator coordinateReadingItemAtURL:self.fileURL options:0 error:&outError byAccessor:^(NSURL *fileURL) {\n            NSError *error;\n            NSDate *fileDate;\n            [fileURL getResourceValue:&fileDate forKey:NSURLContentModificationDateKey error:&error];\n            self.lastInternalModificationDate = fileDate;\n        }];\n}\n\n- (IBAction)reloadFile:(id)sender {\n    [[self.undoManager prepareWithInvocationTarget:self] replaceAllTasks:[self.taskList copy]];\n    [self.undoManager setActionName:NSLocalizedString(@\"Reload File\", @\"Undo Reload File\")];\n    \n    // retain selected items, because selection is lost when the file/arrayController is reloaded\n    NSArray *taskListSelectedItemsList = [self getTaskListSelections];\n    \n    // Reload the file.\n    NSError *error;\n    [self revertToContentsOfURL:self.fileURL ofType:@\"NSString\" error:&error];\n\n    // re-set selected items\n    [self setTaskListSelections:taskListSelectedItemsList];\n    \n    [self updateTaskListMetadata];\n}\n\n- (NSArray*)getTaskListSelections {\n    return [[self.arrayController selectedObjects] copy];\n}\n\n- (void)setTaskListSelections:(NSArray*)taskListSelectedItems {\n    if (taskListSelectedItems == nil) {\n        return;\n    }\n\n    NSMutableArray *selectedItems = [NSMutableArray arrayWithArray:taskListSelectedItems];\n    NSMutableArray *itemsToSelect = [NSMutableArray array];\n    \n    for (TTMTask *task in [self.arrayController arrangedObjects]) {\n        int i = 0;\n        BOOL selected = NO;\n        while (i < [selectedItems count] && !selected) {\n            TTMTask *selection = [selectedItems objectAtIndex:i];\n            if ([task.rawText isEqualToString:selection.rawText]) {\n                [itemsToSelect addObject:task];\n                [selectedItems removeObjectAtIndex:i];\n                selected = YES;\n            }\n            else {\n                i++;\n            }\n        }\n    }\n    [self.arrayController setSelectedObjects:itemsToSelect];\n}\n\n- (void)presentedItemDidChange {\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [self performSynchronousFileAccessUsingBlock:^{\n            NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:self];\n            NSError *outError;\n            [fileCoordinator coordinateReadingItemAtURL:self.fileURL options:0 error:&outError byAccessor:^(NSURL *fileURL) {\n                NSError *error;\n                NSDate *fileDate;\n                [fileURL getResourceValue:&fileDate forKey:NSURLContentModificationDateKey error:&error];\n                if (![self.lastInternalModificationDate isEqualToDate:fileDate] && !self.tableView.isEditing) {\n                    [self reloadFile:self];\n                }\n            }];\n        }];\n    });\n}\n\n+ (BOOL)autosavesInPlace {\n    return YES;\n}\n\n#pragma mark - Undo/Redo Methods\n\n- (void)replaceAllTasks:(NSArray*)newTasks {\n    [[self.undoManager prepareWithInvocationTarget:self] replaceAllTasks:[[self.arrayController arrangedObjects] copy]];\n    NSRange range = NSMakeRange(0, [[self.arrayController arrangedObjects] count]);\n    \n    // retain selected items, because selection is lost when the file/arrayController is reloaded\n    NSArray *taskListSelectedItemsList = [self getTaskListSelections];\n    \n    // Save the current filter number.\n    NSUInteger filterNumber = self.activeFilterPredicateNumber;\n    \n    // Remove the current filter.\n    [self removeTaskListFilter];\n    \n    // remove all tasks\n    [self.arrayController removeObjectsAtArrangedObjectIndexes:[NSIndexSet indexSetWithIndexesInRange:range]];\n    \n    // add new tasks\n    [self.arrayController addObjects:newTasks];\n    \n    // Refresh the task list.\n    [self refreshTaskListWithSave:NO];\n    \n    // Re-apply the filter active before the file was reloaded.\n    [self changeActiveFilterPredicateToPreset:filterNumber];\n    \n    // re-set selected items\n    [self setTaskListSelections:taskListSelectedItemsList];\n}\n\n\n- (void)replaceTasks:(NSArray*)oldTasks withTasks:(NSArray*)newTasks {\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.arrayController removeObjects:oldTasks];\n    [self.arrayController addObjects:newTasks];\n    [self refreshTaskListWithSave:YES];\n}\n\n- (void)addTasks:(NSArray*)newTasks {\n    [[self.undoManager prepareWithInvocationTarget:self] removeTasks:newTasks];\n    [self.arrayController addObjects:newTasks];\n    [self refreshTaskListWithSave:YES];\n}\n\n- (void)removeTasks:(NSArray*)oldTasks {\n    [[self.undoManager prepareWithInvocationTarget:self] addTasks:oldTasks];\n    [self.arrayController removeObjects:oldTasks];\n    [self refreshTaskListWithSave:YES];\n}\n\n- (void)undoArchiveTasks:(NSArray*)archivedTasks fromArchiveFile:(NSString*)archiveFilePath {\n    [self addTasks:archivedTasks];\n    [self removeTasks:archivedTasks fromArchiveFile:archiveFilePath];\n}\n\n#pragma mark - Add/Remove Task Methods\n\n- (TTMTask*)createWorkingTaskWithRawText:(NSString*)rawText withTaskId:(NSUInteger)newTaskId {\n    // Convert natural-language due dates, such as \"due:today\" and \"due:tomorrow\", to YYYY-MM-DD.\n    NSString *relativeDueDateText = [rawText firstMatch:RX(RelativeDueDatePattern)];\n    NSString *relativeDueDateReplacementText =\n        [TTMDateUtility dateStringFromNaturalLanguageString:relativeDueDateText];\n    if (relativeDueDateReplacementText != nil) {\n        rawText = [rawText replace:RX(RelativeDueDatePattern)\n                              with:relativeDueDateReplacementText];\n    }\n    \n    // Optionally prepend the creation date and create the task.\n    BOOL prependDate = [[NSUserDefaults standardUserDefaults] boolForKey:@\"prependDateOnNewTasks\"];\n    TTMTask *workingTask = (prependDate) ?\n        [[self.arrayController newObject] initWithRawText:rawText\n                                               withTaskId:newTaskId\n                                        withPrependedDate:[TTMDateUtility today]] :\n        [[self.arrayController newObject] initWithRawText:rawText withTaskId:newTaskId];\n    return workingTask;\n}\n\n- (IBAction)moveFocusToNewTaskTextField:(id)sender {\n    [self.textField becomeFirstResponder];\n}\n\n- (void)removeAllTasks {\n    for (TTMTask *task in self.taskList) {\n        [self.arrayController removeObject:task];\n    }\n}\n\n- (void)addTasksFromArray:(NSArray*)rawTextStrings\n      removeAllTasksFirst:(BOOL)removeAllTasksFirst\n     undoActionName:(NSString*)undoActionName {\n    if (removeAllTasksFirst) {\n        [self removeAllTasks];\n    }\n    \n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    NSUInteger newTaskId = (self.arrayController == nil) ?\n                            [self.taskList count] :\n                            [[self.arrayController arrangedObjects] count];\n    for (NSString *rawTextString in rawTextStrings) {\n        if (rawTextString.length > 0) {\n            TTMTask *newTask;\n            if (removeAllTasksFirst) {\n                newTask = [[TTMTask alloc]\n                           initWithRawText:(NSString*)rawTextString\n                           withTaskId:newTaskId++];\n                [self.arrayController addObject:newTask];\n            } else {\n                newTask = [self createWorkingTaskWithRawText:(NSString*)rawTextString\n                                                  withTaskId:newTaskId++];\n                [self.arrayController addObject:newTask];\n            }\n            [newTasks addObject:[newTask copy]];\n        }\n    }\n    \n    if ([undoActionName length] > 0) {\n        [self.undoManager setActionName:undoActionName];\n        [[self.undoManager prepareWithInvocationTarget:self] removeTasks:newTasks];\n    }\n    \n    if (removeAllTasksFirst) {\n        [self visualRefreshOnly:self];\n    } else {\n        [self updateTaskListMetadata];\n    }    \n}\n\n- (IBAction)addNewTask:(id)sender {\n    NSString *newTaskText = [self.textField stringValue];\n    \n    // Reject zero-length input.\n    if ([newTaskText length] == 0) {\n        return;\n    }\n    \n    NSUInteger newTaskId = [[self.arrayController arrangedObjects] count];\n    TTMTask *newTask = [self createWorkingTaskWithRawText:newTaskText\n                                               withTaskId:newTaskId];\n    \n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    [newTasks addObject:[newTask copy]];\n    [[self.undoManager prepareWithInvocationTarget:self] removeTasks:newTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Add New Task\", @\"Undo Add New Task\")];\n    \n    [self.arrayController addObject:newTask];\n    [self reapplyActiveFilterPredicate];\n    [self refreshTaskListWithSave:YES];\n    [self.textField setStringValue:@\"\"];\n    \n    // Optionally move focus to the task list depending on the user setting.\n    if ([[NSUserDefaults standardUserDefaults] boolForKey:@\"moveToTaskListAfterTaskCreation\"]) {\n        if ([self.arrayController.selectedObjects containsObject:newTask]) {\n            [self tabFromTextFieldToTaskList];\n            [self.tableView scrollRowToVisible:self.tableView.selectedRow];\n        }\n    }\n}\n\n- (void)tabFromTextFieldToTaskList {\n    // Simulate a tab press.\n    unichar keyChar = 9;\n    NSString *keyDownString = [NSString stringWithCharacters:&keyChar length:1];\n    NSPoint point = {0, 0};\n    NSEvent *newEvent =[NSEvent keyEventWithType:NSKeyDown\n                                        location:point\n                                   modifierFlags:0\n                                       timestamp:[NSDate timeIntervalSinceReferenceDate]\n                                    windowNumber:self.windowForSheet.windowNumber\n                                         context:nil\n                                      characters:keyDownString\n                     charactersIgnoringModifiers:keyDownString\n                                       isARepeat:NO\n                                         keyCode:keyChar];\n    [NSApp postEvent:newEvent atStart:YES];\n}\n\n- (void)addNewTasksFromClipboard:(id)sender {\n    [self addNewTasksFromPasteBoard:[NSPasteboard generalPasteboard]];\n}\n\n- (void)addNewTasksFromDragAndDrop:(id)sender {\n    [self.undoManager setActionName:NSLocalizedString(@\"Drag and Drop\", @\"Undo Drag and Drop\")];\n    [self addNewTasksFromPasteBoard:[sender draggingPasteboard]];\n}\n\n- (void)addNewTasksFromPasteBoard:(NSPasteboard*)pasteboard {\n    NSString *pasteboardText = [pasteboard stringForType:NSPasteboardTypeString];\n    if ([pasteboardText length] == 0) {\n        return;\n    }\n    \n    NSArray *rawTextStrings = [pasteboardText\n                               componentsSeparatedByCharactersInSet:\n                               [NSCharacterSet newlineCharacterSet]];\n    \n    [self addTasksFromArray:rawTextStrings\n        removeAllTasksFirst:NO undoActionName:NSLocalizedString(@\"Paste\", @\"Undo Paste\")];\n    [self reapplyActiveFilterPredicate];\n    [self refreshTaskListWithSave:YES];\n}\n\n- (IBAction)copyTaskToNewTask:(id)sender {\n    // cancel if multiple rows are selected\n    if ([[self.arrayController selectedObjects] count] != 1) {\n        return;\n    }\n    \n    TTMTask *task = [[self.arrayController selectedObjects] objectAtIndex:0];\n    [self.textField setStringValue:task.rawText];\n    [self moveFocusToNewTaskTextField:self];\n}\n\n#pragma mark - Update Task Methods\n\n- (void)refreshTaskListWithSave:(BOOL)saveToFile {\n    // retain selected items, because selection is lost when the file/arrayController is reloaded\n    NSArray *taskListSelectedItemsList = [self getTaskListSelections];\n\n    // Optionally save the file.\n    if (saveToFile) {\n        [self saveToFile];\n    }\n\n    // Re-sort the table.\n    [self.arrayController rearrangeObjects];\n    // Reload table.\n    [self.tableView reloadData];\n    [self setTableWidthToWidthOfContents];\n\n    // re-set selected items\n    [self setTaskListSelections:taskListSelectedItemsList];\n    \n    // Update the lists of projects and contexts.\n    [self updateTaskListMetadata];\n}\n\n- (void)saveToFile {\n    [self autosaveWithImplicitCancellability:YES completionHandler:^(NSError * _Nullable errorOrNil) {\n        [self updateLastInternalModificationDate];\n    }];\n}\n\n- (BOOL)canAsynchronouslyWriteToURL:(NSURL *)url ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation {\n    return YES;\n}\n\n- (IBAction)visualRefreshOnly:(id)sender {\n    [self setTaskListFont];\n    [self reapplyActiveFilterPredicate];\n    [self.tableView reloadData];\n    [self setTableWidthToWidthOfContents];\n    [self updateTaskListMetadata];\n}\n\n- (void)setTaskListFont {\n    self.usingUserFont = [[NSUserDefaults standardUserDefaults] boolForKey:@\"useUserFont\"];\n    if (self.usingUserFont) {\n        self.userFont = [NSFont userFontOfSize:0.0];\n    } else {\n        self.userFont = [NSFont controlContentFontOfSize:0];\n    }\n    [self.rawTextCell setFont:self.userFont];\n}\n\n- (IBAction)updateSelectedTask:(id)sender {\n    // cancel if multiple rows are selected\n    if ([[self.arrayController selectedObjects] count] != 1) {\n        return;\n    }\n    \n    [self.tableView editColumn:0 row:[self.tableView selectedRow] withEvent:nil select:YES];\n}\n\n- (void)initializeUpdateSelectedTask {\n    self.originalTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                              copyItems:YES];\n}\n\n- (void)finalizeUpdateSelectedTask:(NSString*)rawText {\n    NSArray *newTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    \n    NSMutableArray *newTaskStrings = [[NSMutableArray alloc] init];\n    BOOL taskWasCompleted = NO;\n    BOOL recurringTasksWereCreated = NO;\n    BOOL prependDate = [[NSUserDefaults standardUserDefaults] boolForKey:@\"prependDateOnNewTasks\"];\n    \n    for (TTMTask *task in newTasks) {\n        // if task is being marked complete...\n        if (task.isCompleted) {\n            taskWasCompleted = YES;\n        }\n        if (task.isCompleted && task.isRecurring) {\n            TTMTask *newTaskBase = [task copy];\n            [newTaskBase markIncomplete];\n            TTMTask *newTask = [newTaskBase newRecurringTask];\n            if (newTask != nil) {\n                recurringTasksWereCreated = YES;\n                if (prependDate) {\n                    [newTask removeCreationDate];\n                }\n                [newTaskStrings addObject:newTask.rawText];\n            }\n        }\n    }\n    \n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks\n                                                            withTasks:self.originalTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Edit Task\", @\"Undo Edit Task\")];\n    self.originalTasks = nil;\n    \n    if (taskWasCompleted && [[NSUserDefaults standardUserDefaults] integerForKey:@\"archiveTasksUponCompletion\"]) {\n        [self archiveCompletedTasks:self];\n    } else {\n        [self refreshTaskListWithSave:YES];\n    }\n    \n    if (recurringTasksWereCreated) {\n        [self addTasksFromArray:newTaskStrings removeAllTasksFirst:NO undoActionName:NSLocalizedString(@\"Add Recurring Task\", @\"\")];\n    }\n}\n\n- (IBAction)toggleTaskCompletion:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    NSMutableArray *newTaskStrings = [[NSMutableArray alloc] init];\n    \n    BOOL recurringTasksWereCreated = NO;\n    BOOL prependDate = [[NSUserDefaults standardUserDefaults] boolForKey:@\"prependDateOnNewTasks\"];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        // if task is being marked complete...\n        if (!task.isCompleted) {\n            if (task.isRecurring) {\n                TTMTask *newTask = [task newRecurringTask];\n                if (newTask != nil) {\n                    if (prependDate) {\n                        [newTask removeCreationDate];\n                    }\n                    [newTaskStrings addObject:newTask.rawText];\n                    recurringTasksWereCreated = YES;\n                }\n            }\n        }\n        \n        [task toggleCompletionStatus];\n        [newTasks addObject:[task copy]];\n    }\n    \n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Toggle Completion\", @\"Undo Toggle Completion\")];\n\n    if ([[NSUserDefaults standardUserDefaults] integerForKey:@\"archiveTasksUponCompletion\"]) {\n        [self archiveCompletedTasks:self];\n    } else {\n        [self refreshTaskListWithSave:YES];\n    }\n\n    if (recurringTasksWereCreated) {\n        [self addTasksFromArray:newTaskStrings removeAllTasksFirst:NO undoActionName:NSLocalizedString(@\"Add Recurring Tasks\", @\"\")];\n        [self reapplyActiveFilterPredicate];\n    }\n}\n\n- (IBAction)deleteSelectedTasks:(id)sender {\n    NSAlert *deletePrompt = [[NSAlert alloc] init];\n    deletePrompt.messageText = @\"Delete\";\n    deletePrompt.informativeText = @\"Are you sure you want to delete all selected tasks?\";\n    [deletePrompt addButtonWithTitle:@\"OK\"];\n    [deletePrompt addButtonWithTitle:@\"Cancel\"];\n    [deletePrompt beginSheetModalForWindow:self.windowForSheet completionHandler:^(NSModalResponse returnCode) {\n        if (returnCode == NSAlertFirstButtonReturn) {\n            NSArray *oldTasks = [[NSArray alloc]\n                                 initWithArray:[self.arrayController selectedObjects]\n                                 copyItems:YES];\n            [[self.undoManager prepareWithInvocationTarget:self] addTasks:oldTasks];\n            [self.undoManager setActionName:NSLocalizedString(@\"Delete Tasks\", @\"Undo Delete Tasks\")];\n            \n            [self.arrayController removeObjectsAtArrangedObjectIndexes:[self.tableView selectedRowIndexes]];\n            [self refreshTaskListWithSave:YES];\n        }\n    }];\n}\n\n- (IBAction)appendText:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Append Text\";\n    alert.informativeText = @\"Text to append to each selected task:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 295, 24)];\n    [input setStringValue:@\"\"];\n    [alert setAccessoryView:input];\n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode != NSAlertFirstButtonReturn || [[input stringValue] length] == 0) {\n            return;\n        }\n\n        NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                 copyItems:YES];\n        NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n        \n        for (TTMTask *task in [self.arrayController selectedObjects]) {\n            [task appendText:[input stringValue]];\n            [newTasks addObject:[task copy]];\n        }\n        \n        [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n        [self.undoManager setActionName:NSLocalizedString(@\"Append Text\", @\"Undo Append Text\")];\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n- (IBAction)prependText:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Prepend Text\";\n    alert.informativeText = @\"Text to prepend to each selected task:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 295, 24)];\n    [input setStringValue:@\"\"];\n    [alert setAccessoryView:input];\n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode != NSAlertFirstButtonReturn || [[input stringValue] length] == 0) {\n            return;\n        }\n        \n        NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                 copyItems:YES];\n        NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n        \n        for (TTMTask *task in [self.arrayController selectedObjects]) {\n            [task prependText:[input stringValue]];\n            [newTasks addObject:[task copy]];\n        }\n        \n        [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n        [self.undoManager setActionName:NSLocalizedString(@\"Prepend Text\", @\"Undo Prepend Text\")];\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n- (IBAction)replaceText:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Replace Text\";\n    alert.informativeText = @\"Text to find and replace in each selected task:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    [NSBundle.mainBundle loadNibNamed:@\"TTMFindReplace\" owner:self topLevelObjects:nil];\n    [alert setAccessoryView:self.findReplaceView];\n    \n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode != NSAlertFirstButtonReturn || [[self.findText stringValue] length] == 0) {\n            return;\n        }\n        \n        NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                 copyItems:YES];\n        NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n        \n        for (TTMTask *task in [self.arrayController selectedObjects]) {\n            [task replaceText:[self.findText stringValue] withText:[self.replaceText stringValue]];\n            [newTasks addObject:[task copy]];\n        }\n        \n        [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n        [self.undoManager setActionName:NSLocalizedString(@\"Replace Text\", @\"Undo Replace Text\")];\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n#pragma mark - Priority Methods\n\n- (IBAction)setPriority:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Set Priority\";\n    alert.informativeText = @\"Priority:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 295, 24)];\n    [input setStringValue:@\"\"];\n    [alert setAccessoryView:input];\n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode != NSAlertFirstButtonReturn || [[input stringValue] length] == 0) {\n            return;\n        }\n        \n        NSString *uppercaseInputString = [[input stringValue] uppercaseString];\n        unichar priority = [uppercaseInputString characterAtIndex:0];\n        NSCharacterSet *validPriorityCharacters = [NSCharacterSet uppercaseLetterCharacterSet];\n        if (![validPriorityCharacters characterIsMember:priority]) {\n            return;\n        }\n        \n        NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                 copyItems:YES];\n        NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n        \n        for (TTMTask *task in [self.arrayController selectedObjects]) {\n            [task setPriority:priority];\n            [newTasks addObject:[task copy]];\n        }\n        \n        [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n        [self.undoManager setActionName:NSLocalizedString(@\"Set Priority\", @\"Undo Set Priority\")];\n\n        [self refreshTaskListWithSave:YES];\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n- (IBAction)increasePriority:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task increasePriority];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Increase Priority\", @\"Undo Increase Priority\")];\n}\n\n- (IBAction)decreasePriority:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task decreasePriority];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Decrease Priority\", @\"Undo Decrease Priority\")];\n}\n\n- (IBAction)removePriority:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task removePriority];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Remove Priority\", @\"Undo Remove Priority\")];\n}\n\n# pragma mark - Postpone/Due Date Methods\n\n- (IBAction)setDueDate:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Due date\";\n    alert.informativeText = @\"Set the due date:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    NSDatePicker *input = [[NSDatePicker alloc] initWithFrame:NSMakeRect(0, 0, 110, 24)];\n    [input setDatePickerElements:NSYearMonthDayDatePickerElementFlag];\n    [input setDateValue:[TTMDateUtility today]];\n    [alert setAccessoryView:input];\n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode == NSAlertFirstButtonReturn) {\n            NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                     copyItems:YES];\n            NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n            \n            for (TTMTask *task in [self.arrayController selectedObjects]) {\n                [task setDueDate:[input dateValue]];\n                [newTasks addObject:[task copy]];\n            }\n\n            [self refreshTaskListWithSave:YES];\n\n            [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n            [self.undoManager setActionName:NSLocalizedString(@\"Set Due Date\", @\"Undo Set Due Date\")];\n        }\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n- (IBAction)increaseDueDateByOneDay:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task incrementDueDate:1];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Increase Due Date\", @\"Undo Increase Due Date\")];\n}\n\n- (IBAction)decreaseDueDateByOneDay:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task decrementDueDate:1];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Decrease Due Date\", @\"Undo Decrease Due Date\")];\n}\n\n- (IBAction)removeDueDate:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task removeDueDate];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Remove Due Date\", @\"Undo Remove Due Date\")];\n}\n\n- (IBAction)postpone:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Postpone\";\n    alert.informativeText = @\"Days to postpone task:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 295, 24)];\n    [input setStringValue:@\"\"];\n    [alert setAccessoryView:input];\n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode == NSAlertFirstButtonReturn &&\n            [[input stringValue] length] != 0 &&\n            [input integerValue] != 0) {\n            NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                     copyItems:YES];\n            NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n            \n            for (TTMTask *task in [self.arrayController selectedObjects]) {\n                [task postponeTask:[input integerValue]];\n                [newTasks addObject:[task copy]];\n            }\n\n            [self refreshTaskListWithSave:YES];\n\n            [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n            [self.undoManager setActionName:NSLocalizedString(@\"Postpone\", @\"Undo Postpone\")];\n        }\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n#pragma mark - Threshold Date Methods\n\n- (IBAction)setThresholdDate:(id)sender {\n    NSAlert *alert = [[NSAlert alloc] init];\n    alert.messageText = @\"Threshold Date\";\n    alert.informativeText = @\"Set the threshold date:\";\n    [alert addButtonWithTitle:@\"OK\"];\n    [alert addButtonWithTitle:@\"Cancel\"];\n    NSDatePicker *input = [[NSDatePicker alloc] initWithFrame:NSMakeRect(0, 0, 110, 24)];\n    [input setDatePickerElements:NSYearMonthDayDatePickerElementFlag];\n    [input setDateValue:[TTMDateUtility today]];\n    [alert setAccessoryView:input];\n    \n    // Define the completion handler for the modal sheet.\n    void (^completionHandler)(NSModalResponse returnCode) = ^(NSModalResponse returnCode) {\n        if (returnCode == NSAlertFirstButtonReturn) {\n            NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                                     copyItems:YES];\n            NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n            \n            for (TTMTask *task in [self.arrayController selectedObjects]) {\n                [task setThresholdDate:[input dateValue]];\n                [newTasks addObject:[task copy]];\n            }\n\n            [self refreshTaskListWithSave:YES];\n\n            [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n            [self.undoManager setActionName:NSLocalizedString(@\"Set Threshold Date\", @\"Undo Set Threshold Date\")];\n        }\n    };\n    \n    [alert beginSheetModalForWindow:self.windowForSheet completionHandler: completionHandler];\n    [[alert.accessoryView window] makeFirstResponder:alert.accessoryView];\n}\n\n\n- (IBAction)increaseThresholdDateByOneDay:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task incrementThresholdDate:1];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Increase Threshold Date\", @\"Undo Increase Threshold Date\")];\n}\n\n- (IBAction)decreaseThresholdDateByOneDay:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task decrementThresholdDate:1];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Decrease Threshold Date\", @\"Undo Decrease Threshold Date\")];\n}\n\n- (IBAction)removeThresholdDate:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    NSMutableArray *newTasks = [[NSMutableArray alloc] init];\n    \n    for (TTMTask *task in [self.arrayController selectedObjects]) {\n        [task removeThresholdDate];\n        [newTasks addObject:[task copy]];\n    }\n\n    [self refreshTaskListWithSave:YES];\n\n    [[self.undoManager prepareWithInvocationTarget:self] replaceTasks:newTasks withTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Remove Threshold Date\", @\"Undo Remove Threshold Date\")];\n}\n\n#pragma mark - Sorting Methods\n\n- (void)sortTaskList:(TTMTaskListSortType)sortType {\n    \n    // set up sort descriptors for the arrayController\n    NSSortDescriptor *isPrioritizedDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"isPrioritized\"\n                                    ascending:NO\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *priorityDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"priority\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *hasProjectsDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"hasProjects\"\n                                    ascending:NO\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *projectDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"projects\"\n                                    ascending:YES\n                                     selector:@selector(localizedCaseInsensitiveCompare:)];\n    NSSortDescriptor *hasContextsDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"hasContexts\"\n                                    ascending:NO\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *contextDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"contexts\"\n                                    ascending:YES\n                                     selector:@selector(localizedCaseInsensitiveCompare:)];\n    NSSortDescriptor *dueStateDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"dueState\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *dueDateDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"dueDate\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *creationDateDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"creationDate\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *completionDateDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"completionDate\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *taskIdDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"taskId\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *completedDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"isCompleted\"\n                                    ascending:YES\n                                     selector:@selector(compare:)];\n    NSSortDescriptor *thresholdDateDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"thresholdDate\"\n                                ascending:YES\n                                 selector:@selector(compare:)];\n    NSSortDescriptor *alphabeticalDescriptor =\n        [[NSSortDescriptor alloc] initWithKey:@\"rawText\"\n                                    ascending:YES\n                                     selector:@selector(localizedCaseInsensitiveCompare:)];\n    \n    // apply sort descriptors, depending on sort type, to the arrayController\n    NSArray *sortDescriptors;\n    switch (sortType) {\n        case TTMSortOrderInFile:\n            sortDescriptors = @[taskIdDescriptor];\n            break;\n        case TTMSortPriority:\n            sortDescriptors = @[isPrioritizedDescriptor, priorityDescriptor, completedDescriptor,\n                                dueStateDescriptor, dueDateDescriptor, thresholdDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortProject:\n            sortDescriptors = @[hasProjectsDescriptor, projectDescriptor, priorityDescriptor,\n                                completedDescriptor, dueDateDescriptor, thresholdDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortContext:\n            sortDescriptors = @[hasContextsDescriptor, contextDescriptor, isPrioritizedDescriptor,\n                                priorityDescriptor, completedDescriptor, dueDateDescriptor, thresholdDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortDueDate:\n            sortDescriptors = @[dueDateDescriptor, isPrioritizedDescriptor, priorityDescriptor,\n                                thresholdDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortCreationDate:\n            sortDescriptors = @[creationDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortCompletionDate:\n            sortDescriptors = @[completionDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortThresholdDate:\n            sortDescriptors = @[thresholdDateDescriptor, isPrioritizedDescriptor, priorityDescriptor, completedDescriptor, dueStateDescriptor, dueDateDescriptor, taskIdDescriptor];\n            break;\n        case TTMSortAlphabetical:\n            sortDescriptors = @[alphabeticalDescriptor];\n            break;\n        default:\n            sortDescriptors = @[taskIdDescriptor];\n            break;\n    }\n    [self.arrayController setSortDescriptors:sortDescriptors];\n    \n    // Update the active sort type.\n    self.activeSortType = sortType;\n    \n    // Change the default sort type.\n    [[NSUserDefaults standardUserDefaults] setInteger:sortType forKey:@\"taskListSortType\"];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n    \n    [self updateTaskListMetadata];\n}\n\n- (IBAction)sortTaskListUsingTagforPreset:(id)sender {\n    [self sortTaskList:[sender tag]];\n}\n\n#pragma mark - Filter Methods\n\n- (NSPredicate*)combineFilterPresetPredicate:(NSPredicate*)filterPresetPredicate\n                   withSearchFilterPredicate:(NSPredicate*)searchFilterPredicate {\n    if (searchFilterPredicate == nil && filterPresetPredicate == nil) {\n        return nil;\n    }\n    \n    if (searchFilterPredicate == nil && filterPresetPredicate != nil) {\n        return filterPresetPredicate;\n    }\n    \n    if (searchFilterPredicate != nil && filterPresetPredicate == nil) {\n        return searchFilterPredicate;\n    }\n    \n    // if (searchFilterPredicate != nil && filterPresetPredicate != nil)\n    NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:\n                                      @[filterPresetPredicate, searchFilterPredicate]];\n    return predicate;\n}\n\n- (IBAction)filterTaskListUsingTagforPreset:(id)sender {\n    [self changeActiveFilterPredicateToPreset:[sender tag]];\n}\n\n- (void)removeTaskListFilter {\n    [self changeActiveFilterPredicateToPreset:0];\n}\n\n- (void)reapplyActiveFilterPredicate {\n    [self changeActiveFilterPredicateToPreset:self.activeFilterPredicateNumber];\n}\n\n- (void)changeActiveFilterPredicateToPreset:(NSUInteger)presetNumber {\n    NSPredicate *filterPresetPredicate = [TTMFilterPredicates\n                                          getFilterPredicateFromPresetNumber:presetNumber];\n    self.activeFilterPredicate = [self combineFilterPresetPredicate:filterPresetPredicate\n                                          withSearchFilterPredicate:self.searchFieldPredicate];\n    [TTMFilterPredicates setActiveFilterPredicate:self.activeFilterPredicate];\n    [TTMFilterPredicates setActiveFilterPredicatePresetNumber:presetNumber];\n    self.activeFilterPredicateNumber = presetNumber;\n    [self updateTaskListMetadata];\n}\n\n#pragma mark - Archiving Methods\n\n- (IBAction)archiveCompletedTasks:(id)sender {\n    NSString *archiveFilePath = [[NSUserDefaults standardUserDefaults]\n                                 objectForKey:@\"archiveFilePath\"];\n    if ([archiveFilePath length] == 0) {\n        NSAlert *noArchiveFilePrompt = [[NSAlert alloc] init];\n        noArchiveFilePrompt.messageText = @\"No archive file set\";\n        noArchiveFilePrompt.informativeText = @\"No archive file is set. Assign an archive file in Preferences and try again.\";\n        [noArchiveFilePrompt addButtonWithTitle:@\"Dismiss\"];\n        [noArchiveFilePrompt beginSheetModalForWindow:self.windowForSheet completionHandler:^(NSModalResponse returnCode) {\n            // do nothing\n        }];\n        return;\n    }\n    \n    // Collect indexes of all completed tasks, and build string containing all completed tasks.\n    NSMutableIndexSet *completedTasksIndexSet = [[NSMutableIndexSet alloc] init];\n    NSMutableString *completedTasksString = [[NSMutableString alloc] init];\n    NSMutableArray *archivedTasks = [[NSMutableArray alloc] init];\n    for (NSUInteger i = 0; i < [[self.arrayController arrangedObjects] count]; i++) {\n        TTMTask *task = [[self.arrayController arrangedObjects] objectAtIndex:i];\n        if (task.isCompleted) {\n            [completedTasksIndexSet addIndex:i];\n            [completedTasksString appendString:self.preferredLineEnding]; // assumption may be wrong\n            [completedTasksString appendString:task.rawText];\n            [archivedTasks addObject:[task copy]];\n        }\n    }\n    \n    // Abort if no completed tasks were found.\n    if ([completedTasksIndexSet count] == 0) {\n        return;\n    }\n\n    if ([[NSUserDefaults standardUserDefaults] boolForKey:@\"allowUndoOfArchiveCommand\"]) {\n        [self.undoManager setActionName:NSLocalizedString(@\"Archive Tasks\", @\"Undo Archive Tasks\")];\n        [[self.undoManager prepareWithInvocationTarget:self] undoArchiveTasks:archivedTasks\n                                                              fromArchiveFile:archiveFilePath];\n    }\n    \n    @try {\n        // Append string containing all completed tasks to archive file.\n        [self appendString:completedTasksString toArchiveFile:archiveFilePath];\n        \n        // Delete all completed tasks.\n        [self.arrayController removeObjectsAtArrangedObjectIndexes:completedTasksIndexSet];\n\n        // Refresh the tableView and save the file.\n        [self refreshTaskListWithSave:YES];\n    }\n    @catch (NSException *exception) {\n        NSLog(@\"Exception: %@\", [exception reason]);\n        [self refreshTaskListWithSave:NO];\n    }\n}\n\n- (void)appendString:(NSString*)content toArchiveFile:(NSString*)archiveFilePath {\n    NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:archiveFilePath];\n    if (fileHandle) {\n        [fileHandle seekToEndOfFile];\n        [fileHandle writeData:[content dataUsingEncoding:NSUTF8StringEncoding]];\n        [fileHandle closeFile];\n    }\n    else {\n        [content writeToFile:archiveFilePath\n                  atomically:YES\n                    encoding:NSUTF8StringEncoding\n                       error:nil];\n    }\n}\n\n- (void)removeTasks:(NSArray*)tasksToRemove fromArchiveFile:(NSString*)archiveFilePath {\n    NSURL *archiveFileURL = [[NSURL alloc] initFileURLWithPath:archiveFilePath];\n    NSError *err = [[NSError alloc] init];\n    NSString *fileContents = [[NSString alloc] initWithContentsOfURL:archiveFileURL\n                                                            encoding:NSUTF8StringEncoding\n                                                               error:&err];\n    \n    BOOL usesWindowsLineEndings = ([fileContents rangeOfString:@\"\\r\\n\"].location != NSNotFound);\n    NSString *preferredLineEnding = (usesWindowsLineEndings) ? @\"\\r\\n\" : @\"\\n\";\n    NSMutableArray *rawTextStrings = [[NSMutableArray alloc] initWithArray:[fileContents componentsSeparatedByString:preferredLineEnding]];\n\n    for (TTMTask *task in tasksToRemove) {\n        for (long j = [rawTextStrings count] - 1; j > 0; j--) {\n            if ([[rawTextStrings objectAtIndex:j] isEqualToString:task.rawText]) {\n                [rawTextStrings removeObjectAtIndex:j];\n                break;\n            }\n        }\n    }\n\n    [self.undoManager setActionName:NSLocalizedString(@\"Remove Tasks From Archive\",\n                                                      @\"Undo Remove Tasks From Archive\")];\n    [[self.undoManager prepareWithInvocationTarget:self] archiveCompletedTasks:self];\n    \n    NSString *content = [rawTextStrings componentsJoinedByString:preferredLineEnding];\n    [content writeToFile:archiveFilePath\n              atomically:YES\n                encoding:NSUTF8StringEncoding\n                   error:nil];\n}\n\n\n#pragma mark - NSDocument Method Overrides\n\n// Override normal copy handler to copy selected tasks from the task list.\n// This does not get called when the field editor is active.\n- (IBAction)copy:(id)sender {\n    NSMutableArray *selectedTasksRawText = [[NSMutableArray alloc] init];\n    NSIndexSet *selectedRowIndexes = [self.arrayController selectionIndexes];\n    \n    for (NSUInteger i = [selectedRowIndexes firstIndex];\n         i != NSNotFound;\n         i = [selectedRowIndexes indexGreaterThanIndex:i]) {\n        NSString *rawText = [(TTMTask*)[[self.arrayController arrangedObjects]\n                                        objectAtIndex:i] rawText];\n        [selectedTasksRawText addObject:rawText];\n    }\n    \n    NSString *clipboardTextString = [selectedTasksRawText componentsJoinedByString:@\"\\n\"];\n    [[NSPasteboard generalPasteboard] clearContents];\n    [[NSPasteboard generalPasteboard] setString:clipboardTextString forType:NSStringPboardType];\n}\n\n// Override normal cut handler to cut selected tasks from the task list.\n// This does not get called when the field editor is active.\n- (IBAction)cut:(id)sender {\n    NSArray *oldTasks = [[NSArray alloc] initWithArray:[self.arrayController selectedObjects]\n                                             copyItems:YES];\n    [[self.undoManager prepareWithInvocationTarget:self] addTasks:oldTasks];\n    [self.undoManager setActionName:NSLocalizedString(@\"Cut\", @\"Undo Cut\")];\n\n    [self copy:sender];\n    [self.arrayController removeObjectsAtArrangedObjectIndexes:[self.tableView selectedRowIndexes]];\n    [self refreshTaskListWithSave:YES];\n}\n\n- (IBAction)paste:(id)sender {\n    [self.undoManager setActionName:NSLocalizedString(@\"Paste\", @\"Undo Paste\")];\n    [self addNewTasksFromClipboard:self];\n}\n\n#pragma mark - Menu Item Validation Methods\n\n- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {\n    // Note: Parent menu item tags rather than titles are queried so we don't need to worry about\n    // internationalization of menu item title strings.\n    \n    // Check active sort menu item.\n    if ([menuItem.parentItem tag] == SORTMENUTAG) {\n        if (menuItem.tag == self.activeSortType) {\n            [menuItem setState:NSOnState];\n        } else {\n            [menuItem setState:NSOffState];\n        }\n    }\n    // Check active filter menu item.\n    if ([menuItem.parentItem tag] == FILTERMENUTAG) {\n        if (menuItem.tag == self.activeFilterPredicateNumber) {\n            [menuItem setState:NSOnState];\n        } else {\n            [menuItem setState:NSOffState];\n        }\n    }\n    // Toggle show/hide status bar menu title\n    if (menuItem.tag == STATUSBARMENUITEMTAG) {\n        if (self.statusBarVisable) {\n            [menuItem setTitle:@\"Hide Status Bar\"];\n        } else {\n            [menuItem setTitle:@\"Show Status Bar\"];\n        }\n    }\n    // Toggle copy task to new task menu item.\n    if (menuItem.tag == COPYTASKTONEWTASKMENUTAG) {\n        NSInteger selectedCount = [[self.arrayController selectedObjects] count];\n        BOOL enabled = (selectedCount == 1);\n        return enabled;\n    }\n    // Toggle task menu items.\n    if ([menuItem.parentItem tag] == TASKMENUTAG) {\n        BOOL enabled = (self.tableView.editedRow == -1);\n        return enabled;\n    }\n\n    return [super validateMenuItem:menuItem];\n}\n\n#pragma mark - Find Methods\n\n- (IBAction)moveFocusToSearchBox:(id)sender {\n    [self.searchField setRefusesFirstResponder:NO];\n    [self.windowForSheet makeFirstResponder:self.searchField];\n    // Starting in OS X 10.10 Yosemite, setting refusesFirstResponder to YES without a delay causes\n    // the search box to not be editable.\n    [self performSelector:@selector(makeSearchBoxRefuseFocus:) withObject:self afterDelay:0.5];\n}\n\n- (IBAction)makeSearchBoxRefuseFocus:(id)sender {\n    [self.searchField setRefusesFirstResponder:YES];\n}\n\n#pragma mark - Tasklist Metadata Methods\n\n- (void)updateTaskListMetadata {\n    // Update tasklist metadata.\n    if (!self.tasklistMetadata) {\n        self.tasklistMetadata = [[TTMTasklistMetadata alloc] init];\n    }\n    [self.tasklistMetadata updateMetadataFromTaskArray:self.taskList];\n    \n    // Update filtered tasklist metadata.\n    if (!self.filteredTasklistMetadata) {\n        self.filteredTasklistMetadata = [[TTMTasklistMetadata alloc] init];\n    }\n    [self.filteredTasklistMetadata\n     updateMetadataFromTaskArray:[self.arrayController arrangedObjects]];\n    \n    // Update status bar text\n    [self updateStatusBarText];\n}\n\n- (IBAction)showTasklistMetadata:(id)sender {\n    [self updateTaskListMetadata];\n    \n    // Display tasklist metadata in a modal sheet.\n    if (!self.tasklistMetadataSheet) {\n        [[NSBundle mainBundle] loadNibNamed:@\"TTMTasklistMetadata\" owner:self topLevelObjects:nil];\n    }\n    [self.windowForSheet beginSheet:self.tasklistMetadataSheet completionHandler:nil];\n}\n\n- (IBAction)hideTasklistMetadata:(id)sender {\n    [self.windowForSheet endSheet:self.tasklistMetadataSheet];\n    [self.tasklistMetadataSheet close];\n    self.tasklistMetadataSheet = nil;\n}\n\n#pragma mark - Status Bar Methods\n\n- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {\n    if ([keyPath isEqualToString:@\"selection\"]) {\n        [self updateStatusBarText];\n        return;\n    }\n    \n    if ([keyPath isEqualToString:@\"searchFieldPredicate\"]) {\n        [self reapplyActiveFilterPredicate];\n        return;\n    }\n    \n    if ([keyPath isEqualToString:@\"levelsOfUndo\"]) {\n        [self.undoManager setLevelsOfUndo:[[NSUserDefaults standardUserDefaults] integerForKey:@\"levelsOfUndo\"]];\n        return;\n    }\n\n    if ([keyPath isEqualToString:@\"filterPredicate1\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:1];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate2\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:2];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate3\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:3];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate4\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:4];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate5\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:5];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate6\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:6];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate7\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:7];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate8\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:8];\n        return;\n    }\n    if ([keyPath isEqualToString:@\"filterPredicate9\"]) {\n        [self visualRefreshIfFilterChangedAtPreset:9];\n        \n    }\n}\n\n- (void)visualRefreshIfFilterChangedAtPreset:(int)presentNumber {\n    if (self.activeFilterPredicateNumber == presentNumber) {\n        [self visualRefreshOnly:self];\n    }\n}\n\n- (void)updateStatusBarText {\n    NSString *format = [[NSUserDefaults standardUserDefaults] stringForKey:@\"statusBarFormat\"];\n    TTMDocumentStatusBarText *txt = [[TTMDocumentStatusBarText alloc]\n                                     initWithTTMDocument:self\n                                     format:format];\n    self.statusBarText = [txt statusBarText];\n}\n\n- (BOOL)statusBarVisable {\n    return ([self.bottomConstraint constant] != 0.0);\n}\n\n- (void)setStatusBarVisable:(BOOL)flag {\n    CGFloat bottomBorderHeight = (flag) ? 22.0 : 0.0;\n    [self.bottomConstraint setConstant:bottomBorderHeight];\n    [self.windowForSheet setContentBorderThickness:bottomBorderHeight forEdge:NSMinYEdge];\n    [self.statusBarTextField setHidden:!flag];\n    [[NSUserDefaults standardUserDefaults] setBool:flag forKey:@\"showStatusBar\"];\n}\n\n- (IBAction)toggleStatusBarVisability:(id)sender {\n    [self setStatusBarVisable:!self.statusBarVisable];\n}\n\n// MARK - Column resizing methods\n\n- (void)setTableWidthToWidthOfContents {\n    CGFloat currentWidth = self.tableView.tableColumns.lastObject.width;\n    CGFloat tableContentWidth = [self tableViewContentWidth];\n    [self.tableView.tableColumns.lastObject setMinWidth:tableContentWidth];\n    if (currentWidth > tableContentWidth) {\n        [self.tableView.tableColumns.lastObject setWidth:tableContentWidth];\n    }\n}\n\n- (CGFloat)tableViewContentWidth {\n    NSTableView * tableView = self.tableView;\n    NSRect rect = NSMakeRect(0,0, INFINITY, tableView.rowHeight);\n    NSInteger columnIndex = 0;\n    CGFloat maxSize = 0;\n    for (NSInteger i = 0; i < tableView.numberOfRows; i++) {\n        NSCell *cell = [tableView preparedCellAtColumn:columnIndex row:i];\n        NSSize size = [cell cellSizeForBounds:rect];\n        maxSize = MAX(maxSize, size.width);\n    }\n    return maxSize;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMDocumentStatusBarText.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n@class TTMDocument;\n\n@interface TTMDocumentStatusBarText : NSObject\n\nextern NSString* const TTMAllStatusBarAllTaskCountTag;\nextern NSString* const TTMAllCompletedTaskCount;\nextern NSString* const TTMAllIncompleteTaskCount;\nextern NSString* const TTMAllDueTodayTaskCount;\nextern NSString* const TTMAllOverdueTaskCount;\nextern NSString* const TTMAllNotDueTaskCount;\nextern NSString* const TTMAllNoDueDateTaskCount;\nextern NSString* const TTMAllProjectsCount;\nextern NSString* const TTMAllContextsCount;\nextern NSString* const TTMAllPrioritiesCount;\nextern NSString* const TTMAllActiveFilterNumber;\nextern NSString* const TTMAllActiveSortNumber;\nextern NSString* const TTMShownStatusBarAllTaskCountTag;\nextern NSString* const TTMShownCompletedTaskCount;\nextern NSString* const TTMShownIncompleteTaskCount;\nextern NSString* const TTMShownDueTodayTaskCount;\nextern NSString* const TTMShownOverdueTaskCount;\nextern NSString* const TTMShownNotDueTaskCount;\nextern NSString* const TTMShownNoDueDateTaskCount;\nextern NSString* const TTMShownProjectsCount;\nextern NSString* const TTMShownContextsCount;\nextern NSString* const TTMShownPrioritiesCount;\nextern NSString* const TTMActiveFilterNumber;\nextern NSString* const TTMActiveSortNumber;\nextern NSString* const TTMActiveSortName;\nextern NSString* const TTMSelectedTaskCount;\nextern NSString* const TTMHideFutureTasks;\nextern NSString* const TTMHideHiddenTasks;\n\n@property (nonatomic, retain) TTMDocument *document;\n@property (nonatomic) NSString *format;\n\n#pragma mark - Init Method\n\n/*!\n * @method initWithTTMDocument:format:\n * @abstract This is the proper init method to call. A source document and format string must \n * be passed to this class for proper functionality.\n * @param sourceDocument A TTMDocument, which contains metadata from which to build a string.\n * @param format A format string, containing plaintext and tags.\n */\n- (id)initWithTTMDocument:(TTMDocument*)sourceDocument format:(NSString*)format;\n\n#pragma mark - Metadata Method\n\n/*!\n * @method documentMetadata:\n * @abstract This is a convenience method that creates a dictionary with tags as keys and\n * document metadata values as objects. This dictionary is used in the statusBarText: method.\n */\n- (NSDictionary*)documentMetadata;\n\n#pragma mark - Output/Property Methods\n\n/*!\n * @method statusBarText:\n * @abstract This method produces text for the task list status bar. It builds the output string\n * by replacing tags within the format property string with document metadata.\n */\n- (NSString*)statusBarText;\n\n/*!\n * @method availableTags:\n * @abstract This method returns a list of tags available for the user to insert into the status\n * bar format string.\n */\n+ (NSArray*)availableTags;\n\n/*!\n * @method defaultFormat:\n * @abstract This method returns the default status bar format string. \n */\n+ (NSString*)defaultFormat;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMDocumentStatusBarText.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMDocumentStatusBarText.h\"\n#import \"TTMDocument.h\"\n#import \"TTMTasklistMetadata.h\"\n#import \"TTMFilterPredicates.h\"\n\n@implementation TTMDocumentStatusBarText\n\nNSString* const TTMAllStatusBarAllTaskCountTag = @\"{All Tasks}\";\nNSString* const TTMAllCompletedTaskCount = @\"{All Completed}\";\nNSString* const TTMAllIncompleteTaskCount = @\"{All Incomplete}\";\nNSString* const TTMAllDueTodayTaskCount = @\"{All Due Today}\";\nNSString* const TTMAllOverdueTaskCount = @\"{All Overdue}\";\nNSString* const TTMAllNotDueTaskCount = @\"{All Not Due}\";\nNSString* const TTMAllNoDueDateTaskCount = @\"{All No Due Date}\";\nNSString* const TTMAllProjectsCount = @\"{All Projects}\";\nNSString* const TTMAllContextsCount = @\"{All Contexts}\";\nNSString* const TTMAllPrioritiesCount = @\"{All Priorities}\";\nNSString* const TTMShownStatusBarAllTaskCountTag = @\"{Shown Tasks}\";\nNSString* const TTMShownCompletedTaskCount = @\"{Shown Completed}\";\nNSString* const TTMShownIncompleteTaskCount = @\"{Shown Incomplete}\";\nNSString* const TTMShownDueTodayTaskCount = @\"{Shown Due Today}\";\nNSString* const TTMShownOverdueTaskCount = @\"{Shown Overdue}\";\nNSString* const TTMShownNotDueTaskCount = @\"{Shown Not Due}\";\nNSString* const TTMShownNoDueDateTaskCount = @\"{Shown No Due Date}\";\nNSString* const TTMShownProjectsCount = @\"{Shown Projects}\";\nNSString* const TTMShownContextsCount = @\"{Shown Contexts}\";\nNSString* const TTMShownPrioritiesCount = @\"{Shown Priorities}\";\nNSString* const TTMActiveFilterNumber = @\"{Filter Preset}\";\nNSString* const TTMActiveSortNumber = @\"{Sort Preset}\";\nNSString* const TTMActiveSortName = @\"{Sort Name}\";\nNSString* const TTMSelectedTaskCount = @\"{Selected}\";\nNSString* const TTMHideFutureTasks = @\"{Hide Future Tasks}\";\nNSString* const TTMHideHiddenTasks = @\"{Hide Hidden Tasks}\";\n\n#pragma mark - Init Method\n\n- (id)initWithTTMDocument:(TTMDocument*)sourceDocument format:(NSString*)format {\n    self = [super init];\n    if (self) {\n        _document = sourceDocument;\n        _format = format;\n    }\n    return self;\n}\n\n#pragma mark - Metadata Method\n\n- (NSDictionary*)documentMetadata {\n    NSDictionary *sortNames = @{@(TTMSortOrderInFile) : @\"File\",\n                                @(TTMSortPriority) : @\"Priority\",\n                                @(TTMSortProject) : @\"Project\",\n                                @(TTMSortContext) : @\"Context\",\n                                @(TTMSortDueDate) : @\"Due Date\",\n                                @(TTMSortCreationDate) : @\"Creation Date\",\n                                @(TTMSortCompletionDate) : @\"Completion Date\",\n                                @(TTMSortThresholdDate) : @\"Threshold Date\",\n                                @(TTMSortAlphabetical) : @\"Alphabetical\"\n                                };\n    \n    return @{TTMAllStatusBarAllTaskCountTag : @(self.document.tasklistMetadata.allTaskCount),\n             TTMAllCompletedTaskCount : @(self.document.tasklistMetadata.completedTaskCount),\n             TTMAllIncompleteTaskCount : @(self.document.tasklistMetadata.incompleteTaskCount),\n             TTMAllDueTodayTaskCount : @(self.document.tasklistMetadata.dueTodayTaskCount),\n             TTMAllOverdueTaskCount : @(self.document.tasklistMetadata.overdueTaskCount),\n             TTMAllNotDueTaskCount : @(self.document.tasklistMetadata.notDueTaskCount),\n             TTMAllNoDueDateTaskCount : @(self.document.tasklistMetadata.noDueDateTaskCount),\n             TTMAllPrioritiesCount : @(self.document.tasklistMetadata.projectsCount),\n             TTMAllProjectsCount : @(self.document.tasklistMetadata.projectsCount),\n             TTMAllContextsCount : @(self.document.tasklistMetadata.contextsCount),\n             TTMShownStatusBarAllTaskCountTag : @(self.document.filteredTasklistMetadata.allTaskCount),\n             TTMShownCompletedTaskCount : @(self.document.filteredTasklistMetadata.completedTaskCount),\n             TTMShownIncompleteTaskCount : @(self.document.filteredTasklistMetadata.incompleteTaskCount),\n             TTMShownDueTodayTaskCount : @(self.document.filteredTasklistMetadata.dueTodayTaskCount),\n             TTMShownOverdueTaskCount : @(self.document.filteredTasklistMetadata.overdueTaskCount),\n             TTMShownNotDueTaskCount : @(self.document.filteredTasklistMetadata.notDueTaskCount),\n             TTMShownNoDueDateTaskCount : @(self.document.filteredTasklistMetadata.noDueDateTaskCount),\n             TTMShownPrioritiesCount : @(self.document.filteredTasklistMetadata.projectsCount),\n             TTMShownProjectsCount : @(self.document.filteredTasklistMetadata.projectsCount),\n             TTMShownContextsCount : @(self.document.filteredTasklistMetadata.contextsCount),\n             TTMActiveFilterNumber : @(self.document.activeFilterPredicateNumber),\n             TTMActiveSortNumber : @(self.document.activeSortType),\n             TTMActiveSortName : [sortNames objectForKey:@(self.document.activeSortType)],\n             TTMSelectedTaskCount : @(self.document.arrayController.selectionIndexes.count),\n             TTMHideFutureTasks : [self hideFutureTasks],\n             TTMHideHiddenTasks : [self hideHiddenTasks]\n             };\n}\n\n- (NSString*)hideFutureTasks {\n    if ([[NSUserDefaults standardUserDefaults] boolForKey:@\"hideFutureTasks\"]) {\n        return NSLocalizedString(@\"Yes\", \"\");\n    } else {\n        return NSLocalizedString(@\"No\", \"\");\n    }\n}\n\n- (NSString*)hideHiddenTasks {\n    if ([[NSUserDefaults standardUserDefaults] boolForKey:@\"hideHiddenTasks\"]) {\n        return NSLocalizedString(@\"Yes\", \"\");\n    } else {\n        return NSLocalizedString(@\"No\", \"\");\n    }\n}\n\n#pragma mark - Output/Property Methods\n\n- (NSString*)statusBarText {\n    NSMutableString *text = [self.format mutableCopy];\n    NSDictionary *dict = [self documentMetadata];\n    for (NSString *key in dict) {\n        [text replaceOccurrencesOfString:key\n                              withString:[NSString stringWithFormat:@\"%@\",\n                                          [dict objectForKey:key]]\n                                 options:NSCaseInsensitiveSearch\n                                   range:NSMakeRange(0, text.length)];\n    }\n    return text;\n}\n\n+ (NSArray*)availableTags {\n    return @[TTMAllStatusBarAllTaskCountTag,\n             TTMAllCompletedTaskCount,\n             TTMAllIncompleteTaskCount,\n             TTMAllDueTodayTaskCount,\n             TTMAllOverdueTaskCount,\n             TTMAllNotDueTaskCount,\n             TTMAllNoDueDateTaskCount,\n             TTMAllPrioritiesCount,\n             TTMAllProjectsCount,\n             TTMAllContextsCount,\n             TTMShownStatusBarAllTaskCountTag,\n             TTMShownCompletedTaskCount,\n             TTMShownIncompleteTaskCount,\n             TTMShownDueTodayTaskCount,\n             TTMShownOverdueTaskCount,\n             TTMShownNotDueTaskCount,\n             TTMShownNoDueDateTaskCount,\n             TTMShownPrioritiesCount,\n             TTMShownProjectsCount,\n             TTMShownContextsCount,\n             TTMActiveFilterNumber,\n             TTMActiveSortNumber,\n             TTMActiveSortName,\n             TTMSelectedTaskCount,\n             TTMHideFutureTasks,\n             TTMHideHiddenTasks\n             ];\n}\n\n+ (NSString*)defaultFormat {\n    return @\"Filter #: {Filter Preset} | Sort: {Sort Name} | Tasks: {Shown Tasks} of {All Tasks} | Incomplete: {Shown Incomplete} | Due Today: {Shown Due Today} | Overdue: {Shown Overdue} | Hide Future Tasks: {Hide Future Tasks}\";\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFieldEditor.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMFieldEditor : NSTextView\n\n#pragma mark - Properties\n\n@property (nonatomic, retain) NSArray *projectsArray;\n@property (nonatomic, retain) NSArray *contextsArray;\n@property (nonatomic, retain) NSTimer *completionTimer;\n@property (nonatomic) NSUInteger nextInsertionIndex;\n@property (nonatomic) NSString *originalValue;\n\n#pragma mark - Autocompletion Timer Methods\n\n/*!\n * @method startCompletionTimer:\n * @abstract This method starts the timer for autocompletion of projects and contexts.\n */\n- (void)startCompletionTimer;\n\n/*!\n * @method stopCompletionTimer:\n * @abstract This method stops the timer for autocompletion of projects and contexts.\n */\n- (void)stopCompletionTimer;\n\n/*!\n * @method doCompletion:\n * @param The time to process the completion event for.\n * @abstract This method is fired when the timer for autocompletion fires its selector, and\n * kicks off autocompletion.\n */\n- (void)doCompletion:(NSTimer*)timer;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFieldEditor.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMFieldEditor.h\"\n\n#define COMPLETION_DELAY (0.25)\n\n@implementation TTMFieldEditor\n\n#pragma mark - Init Methods\n\n- (id)initWithFrame:(NSRect)frame\n{\n    self = [super initWithFrame:frame];\n    if (self) {\n        // Initialization code here.\n    }\n    return self;\n}\n\n- (BOOL)becomeFirstResponder {\n    self.originalValue = [self.string copy]; // retain value for cancelOperation method\n    return ([super becomeFirstResponder]);\n}\n\n- (void)drawRect:(NSRect)dirtyRect\n{\n    [super drawRect:dirtyRect];\n    \n    // Drawing code here.\n}\n\n#pragma mark - Autocompletion Timer Methods\n\n- (void)startCompletionTimer {\n    [self stopCompletionTimer]; // cancel any timers running already\n    self.completionTimer = [NSTimer scheduledTimerWithTimeInterval:COMPLETION_DELAY\n                                                            target:self\n                                                          selector:@selector(doCompletion:)\n                                                          userInfo:nil\n                                                           repeats:NO];\n}\n\n- (void)stopCompletionTimer {\n    [self.completionTimer invalidate];\n    self.completionTimer = nil;\n}\n\n- (void)doCompletion:(NSTimer*)timer {\n    [self complete:nil];\n    [self stopCompletionTimer];\n}\n\n#pragma mark - Autocompletion Event Handler Methods\n\n/*!\n * @method keyUp:\n * @abstract This method fires after the user types a character.\n * @discussion It is necessary to override this method to handle autocompletion of contexts and\n * projects, which start with \"@\" and \"+\" respectively. Autocompletion is handled by a timer,\n * which means that the user has to pause a split second to see the autocompletion list. If the\n * user does not pause, the autocompeltion menu does not display. This implementation was\n * selected so the program does not interrupt the user when typing math (with \"+\") or email\n * addresses (with \"@\").\n */\n- (void)keyUp:(NSEvent*)event {\n    // Start the completion timer if the range for user completion starts with \"@\" or \"+\".\n    NSString *partialRange = [[self string] substringWithRange:self.rangeForUserCompletion];\n    if ([partialRange hasPrefix:@\"@\"] || [partialRange hasPrefix:@\"+\"]) {\n        \n        // Don't trigger autocompletion time if user is pressing a deletion key or pressing Enter\n        unichar keyChar = [self keyCharFromEvent:event];\n        if (![self keyCharIsADeletionKey:keyChar] && ![self keyCharIsEnterKey:keyChar]) {\n            [self startCompletionTimer];\n        }\n    }\n    \n    // Call the super so we don't override any other behaviors.\n    [super keyUp:event];\n}\n\n- (BOOL)keyCharIsADeletionKey:(unichar)keyChar {\n    return (keyChar == NSBackspaceCharacter || keyChar == NSDeleteCharacter);\n}\n\n- (BOOL)keyCharIsEnterKey:(unichar)keyChar {\n    return (keyChar == NSEnterCharacter || keyChar == '\\r');\n}\n\n- (unichar)keyCharFromEvent:(NSEvent*)event {\n    NSString *passedChar = [event charactersIgnoringModifiers];\n    unichar keyChar = [passedChar characterAtIndex:0];\n    return keyChar;\n}\n\n/*!\n * @method completionsForPartialWordRange:indexOfSelectedItem:\n * @abstract This method returns autocompletion suggestions based on the range it receives.\n * @discussion It is necessary to override this method to handle autocompletion of contexts and\n * projects, which start with \"@\" and \"+\" respectively.\n */\n- (NSArray*)completionsForPartialWordRange:(NSRange)charRange\n                       indexOfSelectedItem:(NSInteger*)index {\n    // Check the character range for \"@\" and \"+\".\n    NSString *partialString = [[self string] substringWithRange:charRange];\n    \n    if ([partialString hasPrefix:@\"+\"]) {\n        return [self partialCompletionsFromSourceArray:self.projectsArray partialString:partialString];\n    } else if ([partialString hasPrefix:@\"@\"]) {\n        return [self partialCompletionsFromSourceArray:self.contextsArray partialString:partialString];\n    } else {\n        // Call the super method to get the default behavior.\n        // This allows for the user to type Esc and still trigger autocompletion.\n        return [super completionsForPartialWordRange:charRange indexOfSelectedItem:index];\n    }\n}\n\n- (NSArray*)partialCompletionsFromSourceArray:(NSArray*)sourceArray\n                                partialString:(NSString*)partialString{\n    if (sourceArray == nil) {\n        return nil;\n    }\n    \n    NSMutableArray *returnArray = [[NSMutableArray alloc] init];\n    for (NSString *str in sourceArray) {\n        if ([[str uppercaseString] hasPrefix:[partialString uppercaseString]]) {\n            [returnArray addObject:str];\n        }\n    }\n    return returnArray;\n}\n\n/*!\n * @method rangeForUserCompletion:\n * @abstract This method returns the range to be replaced by autocompletion.\n * @discussion It is necessary to override this method to handle autocompletion of contexts,\n * which begin with the @ (at) sign. The super's rangeForUserCompletion: method does not\n * consider that an @ sign could start a word, so it returns the word and space before the @\n * sign. When the complete: method fires, the prior word and space are deleted, which is not\n * what is desired.\n */\n- (NSRange)rangeForUserCompletion {\n    // Call the super method to get the default behavior.\n    NSRange superRange = [super rangeForUserCompletion];\n\n    // For some reason, when triggering autocompletion of contexts, which begin with \"@\",\n    // the superRange has a length of 0, which prevents autocompletion from working.\n    // This conditional code block, which adjusts the range, fixes that.\n    if (superRange.length == 0 && superRange.location > 0) {\n        superRange.location -= 1;\n        superRange.length = 1;\n    }\n    \n    // Look 1 character back from the superRange.\n    // If it is a \"@\" or \"+\", extend the superRange back to include that character.\n    // This is necessary for autocompletion to work properly for contexts and projects.\n    NSString *leadingCharacter = [self leadingCharacterToLeftOfRange:superRange];\n    if ([leadingCharacter isEqualToString:@\"@\"] || [leadingCharacter isEqualToString:@\"+\"]) {\n        if (superRange.location > 0) {\n            superRange.location -= 1;\n            superRange.length += 1;\n        }\n    }\n    \n    return superRange;\n}\n\n- (NSString*)leadingCharacterToLeftOfRange:(NSRange)range {\n    if (range.location == 0) {\n        return [[self string] substringWithRange:range];\n    }\n    \n    NSRange newRange = NSMakeRange(range.location - 1, 1);\n    return [[self string] substringWithRange:newRange];\n}\n\n- (NSString*)stringForRangeWithAdditionalLeadingCharacter:(NSRange)range {\n    if (range.location == 0) {\n        return [[self string] substringWithRange:range];\n    }\n    \n    NSRange newRange = NSMakeRange(range.location - 1, range.length + 1);\n    return [[self string] substringWithRange:newRange];\n}\n\n/*!\n * @method: cancelOperation:\n * @abstract This method undoes all changes of the text field being edited when the user hits Esc,\n * if the user has opted for that setting.\n * @discussion This method also triggers autocompletion, again dependent on the user setting.\n */\n- (void)cancelOperation:(id)sender {\n    // How the Esc key behaves is dependent on a user setting.\n    if ([[NSUserDefaults standardUserDefaults] boolForKey:@\"escapeKeyCancelsAllTextChanges\"]) {\n        [self.undoManager removeAllActions];\n        self.string = self.originalValue;\n    } else {\n        // Trigger autocompletion (default behavior).\n        [self complete:nil];\n    }\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFilterPredicates.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n@interface TTMFilterPredicates : NSObject\n\n#pragma mark - Default Filter Predicate Methods\n\n/*!\n * @method defaultFilterPredicate:\n * @abstract This method returns a default (blank) filter predicate for use with TTMDocument.\n */\n+ (NSPredicate*)defaultFilterPredicate;\n\n/*!\n * @method defaultFilterPredicateData:\n * @abstract This method returns a default (blank) filter predicate in the form of an NSData\n * object, from defaultFitlerPredicate:, for use in user defaults.\n */\n+ (NSData*)defaultFilterPredicateData;\n\n/*!\n * @method hideFutureTasksFilterSubPredicate:\n * @abstract This method returns a filter predicate for use with the \"hide future tasks\" option.\n */\n+ (NSPredicate*)hideFutureTasksFilterSubPredicate;\n\n/*!\n * @method hideHiddenTasksFilterSubPredicate:\n * @abstract This method returns a filter predicate for use with the \"hide hidden tasks\" option.\n */\n+ (NSPredicate*)hideHiddenTasksFilterSubPredicate;\n\n/*!\n * @method noFilterPredicate:\n * @abstract This method returns a filter predicate for use when the filter is disabled.\n */\n+ (NSPredicate*)noFilterPredicate;\n\n#pragma mark - Set Filter Predicate Methods\n\n/*!\n * @method setFilterPredicate:toUserDefaultsKey:\n * @abstract This method sets a filter predicate value to the user defaults.\n * @param predicate The predicate to set to user defaults.\n * @param key The user defaults key to set the predicate to.\n */\n+ (void)setFilterPredicate:(NSPredicate*)predicate toUserDefaultsKey:(NSString*)key;\n\n/*!\n * @method setFilterPredicate:toPresetNumber:\n * @abstract This method sets a filter predicate value to the user defaults.\n * @param predicate The predicate to set to user defaults.\n * @param presetNumber The (user-facing) preset number to set the predicate to.\n */\n+ (void)setFilterPredicate:(NSPredicate*)predicate toPresetNumber:(NSUInteger)presetNumber;\n\n/*!\n * @method setActiveFilterPredicate:\n * @abstract This method sets the active filter predicate in user defaults.\n * @param predicate The predicate to set as the active filter predicate in user defaults.\n */\n+ (void)setActiveFilterPredicate:(NSPredicate*)predicate;\n\n#pragma mark - Get Filter Predicate Methods\n\n/*!\n * @method getFilterPredicateFromUserDefaultsKey:\n * @abstract This method gets a filter predicate value from the user defaults.\n * @param key The user defaults key to get the predicate from.\n */\n+ (NSPredicate*)getFilterPredicateFromUserDefaultsKey:(NSString*)key;\n\n/*!\n * @method getFilterPredicateFromPresetNumber:\n * @abstract This method gets a filter predicate value from the user defaults.\n * @param presetNumber The (user-facing) preset number to get the predicate for.\n */\n+ (NSPredicate*)getFilterPredicateFromPresetNumber:(NSUInteger)presetNumber;\n\n/*!\n * @method keyFromPresetNumber:\n * @abstract This method returns the user defaults key name for a given preset number.\n * @param presetNumber The (user-facing) preset number to get the key name for.\n */\n+ (NSString*)keyFromPresetNumber:(NSUInteger)presetNumber;\n\n/*!\n * @method activeFilterPredicate:\n * @abstract This method returns the active filter predicate from user defaults.\n * @param presetNumber The (user-facing) preset number to get the key name for.\n */\n+ (NSPredicate*)activeFilterPredicate;\n\n/*!\n * @method setActiveFilterPredicatePresetNumber:\n * @abstract This method sets the active filter predicate to user defaults.\n * @param presetNumber The (user-facing) preset number to set the default to.\n */\n+ (void)setActiveFilterPredicatePresetNumber:(NSUInteger)presetNumber;\n\n/*!\n * @method activeFilterPredicatePresetNumber:\n * @abstract This method gets the active filter preset number from user defaults.\n */\n+ (NSUInteger)activeFilterPredicatePresetNumber;\n\n#pragma mark - Reset Filter Predicate Methods\n\n/*!\n * @method resetAllFilterPredicates:\n * @abstract This method clears/resets a single filter preset to the default filter predicate\n * returned by defaultFilterPredicate:.\n */\n+ (void)resetFilterPredicate:(NSUInteger)presetNumber;\n\n/*!\n * @method resetAllFilterPredicates:\n * @abstract This method clears/resets all filters to the default filter predicate\n * returned by defaultFilterPredicate:.\n */\n+ (void)resetAllFilterPredicates;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFilterPredicates.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMFilterPredicates.h\"\n#import \"TTMTask.h\"\n\n@implementation TTMFilterPredicates\n\n- (id)init\n{\n    self = [super init];\n    if (self) {\n        // do nothing\n    }\n    return self;\n}\n\n#pragma mark - Default Filter Predicate Methods\n\n+ (NSPredicate*)defaultFilterPredicate {\n    static NSPredicate *defaultPredicate = nil;\n    if (defaultPredicate == nil) {\n        NSPredicate *defaultSubPredicate = [NSPredicate predicateWithFormat:@\"rawText contains ''\"];\n        NSArray *subPredicates = @[defaultSubPredicate];\n        defaultPredicate = [NSCompoundPredicate\n                            andPredicateWithSubpredicates:subPredicates];\n    }\n    return defaultPredicate;\n}\n\n+ (NSData*)defaultFilterPredicateData {\n    static NSData *defaultPredicateData = nil;\n    if (defaultPredicateData == nil) {\n        defaultPredicateData = [NSKeyedArchiver\n                                archivedDataWithRootObject:[self defaultFilterPredicate]];\n    }\n    return defaultPredicateData;\n}\n\n+ (NSPredicate*)noFilterPredicate {\n    return [self filterPredicateWithHideOptions];\n}\n\n+ (BOOL)hideFutureTasks {\n    return [[NSUserDefaults standardUserDefaults] boolForKey:@\"hideFutureTasks\"];\n}\n\n+ (BOOL)hideHiddenTasks {\n    return [[NSUserDefaults standardUserDefaults] boolForKey:@\"hideHiddenTasks\"];\n}\n\n\n+ (NSPredicate*)filterPredicateWithHideOptions {\n    NSMutableArray *subPredicates = [[NSMutableArray alloc] init];\n    if ([self hideFutureTasks]) {\n        [subPredicates addObject:[self hideFutureTasksFilterSubPredicate]];\n    }\n    if ([self hideHiddenTasks]) {\n        [subPredicates addObject:[self hideHiddenTasksFilterSubPredicate]];\n    }\n    \n    return [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];\n}\n\n+ (NSPredicate*)hideFutureTasksFilterSubPredicate {\n    return [NSPredicate predicateWithFormat:@\"thresholdState != %d\", (int)ThresholdAfterToday];\n}\n\n+ (NSPredicate*)hideHiddenTasksFilterSubPredicate {\n    return [NSPredicate predicateWithFormat:@\"isHidden == 0\"];\n}\n\n#pragma mark - Set Filter Predicate Methods\n\n+ (void)setFilterPredicate:(NSPredicate*)predicate toUserDefaultsKey:(NSString*)key {\n    NSData *filterPredicateData = [NSKeyedArchiver archivedDataWithRootObject:predicate];\n    [[NSUserDefaults standardUserDefaults] setObject:filterPredicateData forKey:key];\n}\n\n+ (void)setFilterPredicate:(NSPredicate*)predicate toPresetNumber:(NSUInteger)presetNumber {\n    [self setFilterPredicate:predicate toUserDefaultsKey:[self keyFromPresetNumber:presetNumber]];\n}\n\n+ (void)setActiveFilterPredicate:(NSPredicate*)predicate {\n    [self setFilterPredicate:predicate toUserDefaultsKey:@\"activeFilterPredicate\"];\n}\n\n#pragma mark - Get Filter Predicate Methods\n\n+ (NSPredicate*)getFilterPredicateFromUserDefaultsKey:(NSString*)key {\n    NSData *filterPredicateData = [[NSUserDefaults standardUserDefaults] objectForKey:key];\n    return [NSKeyedUnarchiver unarchiveObjectWithData:filterPredicateData];\n}\n\n+ (NSPredicate*)getFilterPredicateFromPresetNumber:(NSUInteger)presetNumber {\n    if (presetNumber < 1 || presetNumber > 9) {\n        return [self noFilterPredicate];\n    }\n    \n    NSPredicate *defaultPredicate = [self filterPredicateWithHideOptions];\n    \n    NSPredicate *filterPresetSubPredicate = [self getFilterPredicateFromUserDefaultsKey:[self keyFromPresetNumber:presetNumber]];\n\n    if ([self hideFutureTasks] || [self hideHiddenTasks]) {\n        NSArray *subPredicates = @[defaultPredicate, filterPresetSubPredicate];\n        return [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];\n    } else {\n        return filterPresetSubPredicate;\n    }\n}\n\n+ (NSString*)keyFromPresetNumber:(NSUInteger)presetNumber {\n    if (presetNumber > 9) {\n        return nil;\n    }\n    return [NSString stringWithFormat:@\"filterPredicate%lu\", (unsigned long)presetNumber];\n}\n\n+ (NSPredicate*)activeFilterPredicate {\n    return [self getFilterPredicateFromPresetNumber:[self activeFilterPredicatePresetNumber]];\n}\n\n+ (void)setActiveFilterPredicatePresetNumber:(NSUInteger)presetNumber {\n    [[NSUserDefaults standardUserDefaults] setObject:@(presetNumber) forKey:@\"activeFilterPreset\"];\n}\n\n+ (NSUInteger)activeFilterPredicatePresetNumber {\n    return [[NSUserDefaults standardUserDefaults] integerForKey:@\"activeFilterPreset\"];\n}\n\n#pragma mark - Reset Filter Predicate Methods\n\n+ (void)resetFilterPredicate:(NSUInteger)presetNumber {\n    [self setFilterPredicate:[self defaultFilterPredicate] toPresetNumber:presetNumber];\n}\n\n+ (void)resetAllFilterPredicates {\n    for (int i = 1; i <= 9; i++) {\n        [self resetFilterPredicate:i];\n    }\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFilters.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"10117\" systemVersion=\"15G31\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"10117\"/>\n        <capability name=\"stacking Non-gravity area distributions on NSStackView\" minToolsVersion=\"7.0\" minSystemVersion=\"10.11\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"TTMFiltersController\">\n            <connections>\n                <outlet property=\"filter1PredicateEditor\" destination=\"kyY-lA-F0K\" id=\"b2T-Mm-XvS\"/>\n                <outlet property=\"filter2PredicateEditor\" destination=\"2Y7-6o-WGp\" id=\"stE-VQ-otX\"/>\n                <outlet property=\"filter3PredicateEditor\" destination=\"ugV-DT-onp\" id=\"STw-kk-y5G\"/>\n                <outlet property=\"filter4PredicateEditor\" destination=\"I1X-wh-ckV\" id=\"qky-2w-wpd\"/>\n                <outlet property=\"filter5PredicateEditor\" destination=\"AY8-4B-1xS\" id=\"MLU-aj-Oio\"/>\n                <outlet property=\"filter6PredicateEditor\" destination=\"WLK-Np-fUg\" id=\"UDX-V5-BQP\"/>\n                <outlet property=\"filter7PredicateEditor\" destination=\"z57-jf-7VI\" id=\"kr5-Ax-lP3\"/>\n                <outlet property=\"filter8PredicateEditor\" destination=\"6aD-Lp-Zdw\" id=\"QyV-m5-Uiu\"/>\n                <outlet property=\"filter9PredicateEditor\" destination=\"NNi-kU-L08\" id=\"1af-zS-plH\"/>\n                <outlet property=\"tabView\" destination=\"qgL-I9-GFI\" id=\"l0a-Rd-nwu\"/>\n                <outlet property=\"window\" destination=\"QvC-M9-y7g\" id=\"2Wz-Uh-Jdi\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Define Filter Presets\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" oneShot=\"NO\" releasedWhenClosed=\"NO\" visibleAtLaunch=\"NO\" frameAutosaveName=\"TTMFilters\" animationBehavior=\"default\" id=\"QvC-M9-y7g\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"573\" height=\"386\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"2560\" height=\"1417\"/>\n            <view key=\"contentView\" id=\"EiT-Mj-1SZ\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"573\" height=\"386\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                <subviews>\n                    <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ClV-y2-fw5\">\n                        <rect key=\"frame\" x=\"20\" y=\"20\" width=\"533\" height=\"346\"/>\n                        <subviews>\n                            <tabView translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qgL-I9-GFI\">\n                                <rect key=\"frame\" x=\"-7\" y=\"28\" width=\"547\" height=\"324\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"308\" id=\"mn9-ed-zoU\"/>\n                                </constraints>\n                                <font key=\"font\" metaFont=\"system\"/>\n                                <tabViewItems>\n                                    <tabViewItem label=\"1\" identifier=\"1\" id=\"wnd-MT-awa\">\n                                        <view key=\"view\" id=\"9F9-RR-nVc\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Kfn-x9-ZHF\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" id=\"4lo-Nv-gzt\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" nestingMode=\"compound\" rowHeight=\"25\" id=\"kyY-lA-F0K\" userLabel=\"Filter 1 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"jH5-WL-wUc\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"438-UD-hxy\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"qcl-A3-AO3\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"TCy-6x-0Bc\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"R8c-B6-dfZ\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"lie-CU-XTB\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"MnQ-R4-38g\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"aKG-US-XPw\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"5w7-MH-2vb\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"975-dq-ulQ\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"o0X-yQ-GUt\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"cLM-gl-cXU\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"raW-tD-wQD\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"r1l-Bt-fHd\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"3Re-vq-LsV\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"oIl-eJ-3bn\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"4hK-kc-fl9\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"l3a-j6-lW1\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"hhF-et-xjg\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"bqp-Eq-N3u\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Bb3-aN-PrP\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"TFe-eJ-L3B\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"vup-4z-N3y\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"dho-C9-Drz\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"1aE-Ss-2jh\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"cYD-6R-177\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"20M-C8-DWf\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"eVw-eE-Y9c\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"P7i-xD-PQh\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"2B6-s1-wW3\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"cfh-sJ-zjp\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"sZI-qD-Qw3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"5RQ-Ln-EPB\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"bly-AG-tgs\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"QYZ-kd-aWT\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"8QG-mD-6d6\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"frR-Hp-l3W\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"ant-lp-4Rf\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"hfi-sM-C2v\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"J3n-mi-9vx\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"Lc9-Y0-xVc\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"in\" id=\"hEq-il-x2p\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"TTV-1M-OD9\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Pry-A2-aey\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"5do-OF-u9N\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"8RW-Tq-Iim\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"djP-gK-h6h\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"q2V-uE-MIW\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"0Pd-YN-24f\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"4z7-lu-Rra\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"iL7-Lw-uFi\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"eQv-S8-1ad\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"jLj-Vi-AQi\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"zgQ-Pz-ZbZ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"ATt-yX-ouS\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"huG-ee-Gmz\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"YCp-TL-Hei\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"JeY-6b-s4v\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"WgQ-5W-jTF\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"Uqc-Fx-8BL\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"8O8-3s-2TV\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"fAL-da-dQX\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"3oR-zK-rRa\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"DiU-ZM-gkF\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"Pii-dw-sXe\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"cnD-yh-FPk\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"byP-Ct-25x\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"kwa-5U-JH8\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"FqY-1h-hmX\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"jeU-Th-3El\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"asr-t3-ojU\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"HbP-3R-vmd\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"mbq-Xk-pmE\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"eaH-Xk-XrB\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"OnN-6G-gV2\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"06T-kJ-HJh\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"ynW-oS-mbg\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Wjf-ja-Vta\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"oUA-eH-K7P\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"9o8-PU-fa1\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"8Yp-s9-GJF\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"GwC-9u-Uo5\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"dKj-5x-DcD\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"sV2-yE-J5j\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"ckU-2I-B9S\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"RYM-tu-6a5\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"kiC-HO-pj1\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"iBe-oS-jbq\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"vaR-MA-Vdu\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"GqJ-Qt-uVZ\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"2Q8-t7-byE\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"U5e-ht-uhz\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"CUW-kE-U2V\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"iof-fp-ldR\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"HoQ-md-7zJ\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"djk-h0-I6T\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"btc-My-5jB\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"tKf-fC-9Wk\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Q50-eO-AjQ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"ylV-ta-M5G\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Hma-i0-xeE\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"LmQ-FL-PWF\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"1Nq-oU-fbH\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"pX4-ia-gw4\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"xYE-ia-7qB\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"xr9-AQ-6NB\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Qc5-R4-GaA\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"5Ra-3Q-wr9\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"3xO-BJ-ktO\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"vtg-bV-lEu\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Bus-eg-kqE\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"YSh-sJ-Q19\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"QQx-CU-VUv\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"jSc-c9-yo9\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate1\" id=\"nNL-eP-zci\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"a5z-nn-aoE\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"tcy-Zc-P6i\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"Kfn-x9-ZHF\" secondAttribute=\"trailing\" constant=\"17\" id=\"AhH-sR-sWd\"/>\n                                                <constraint firstItem=\"Kfn-x9-ZHF\" firstAttribute=\"top\" secondItem=\"9F9-RR-nVc\" secondAttribute=\"top\" constant=\"3\" id=\"K4o-y5-fML\"/>\n                                                <constraint firstItem=\"Kfn-x9-ZHF\" firstAttribute=\"leading\" secondItem=\"9F9-RR-nVc\" secondAttribute=\"leading\" constant=\"17\" id=\"e18-Ia-KCZ\"/>\n                                                <constraint firstAttribute=\"bottom\" secondItem=\"Kfn-x9-ZHF\" secondAttribute=\"bottom\" constant=\"17\" id=\"eBb-1C-s7P\"/>\n                                            </constraints>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"2\" identifier=\"2\" id=\"PCm-V3-9tb\">\n                                        <view key=\"view\" horizontalHuggingPriority=\"252\" id=\"J97-zb-W9K\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"doj-4g-gdR\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" id=\"U4v-fS-kHI\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" nestingMode=\"compound\" rowHeight=\"25\" id=\"2Y7-6o-WGp\" userLabel=\"Filter 2 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"1Fj-l7-gFJ\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"f4Y-5t-HJJ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"bgA-wq-As5\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"6f3-xP-Poj\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"h1D-XT-I5z\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"sek-LT-Rtv\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"y67-LA-ea7\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"AD4-1T-WfV\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"hsK-eG-BdQ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"1nU-Kc-cag\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Rkn-wP-WFL\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"uiW-aM-5pS\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"WQ6-mk-bHk\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"ZLG-48-bnw\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"3ox-sq-P7J\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"Zvk-2Y-ne2\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"7Mk-Dp-t28\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"Kez-Eg-FHk\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"G9G-co-mfN\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"roO-IZ-Fa6\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"2Bz-QY-jaC\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"ICZ-mU-QQQ\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"lOQ-RM-h02\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"dWz-5F-Idg\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"cU7-kL-8Lp\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"6To-SW-GDu\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"joL-SY-V8Q\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"d6i-Ks-HRf\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"epy-Fd-OYr\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"65Q-e4-1Df\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"EdY-rQ-qpm\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"1mz-87-rAY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"cNv-iR-Oqj\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"vWj-Pi-hO6\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"bWk-Kl-t8G\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"FFS-Ka-zes\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"95K-vP-7O2\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"bCW-54-2Xe\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"BMy-yu-ata\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"1qP-6M-3af\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"wFL-BG-Azi\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"kXT-FF-Gea\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"dY4-12-Q9t\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"7am-eR-LXW\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"MhI-P8-bLB\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"AXk-v4-c3I\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"oF7-Id-kCF\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"Srv-FH-mv6\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"beA-ln-9NX\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"Dbd-y7-Z0p\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Dq3-b0-dNa\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"UqC-QM-rfH\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"zve-E8-x3O\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"t18-VS-TTI\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"MAb-ym-wsj\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"X03-OP-B4p\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Kbl-it-8rS\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"55W-4t-EFK\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"CXv-2p-drQ\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"U6A-yr-Ewd\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"dzr-Gc-rFP\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"OAx-aX-kff\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"SNm-hn-3NN\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"jlK-zE-Vst\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"1OA-aT-mow\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"mlQ-jM-hZy\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"skQ-4X-Tbs\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"7WH-n2-xQi\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"4NL-uw-ZWL\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"aPJ-0Q-3Bx\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"YUq-OT-XOC\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"7jQ-GN-po9\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"CMN-ED-mGp\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"6y9-Fp-ZNn\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"2Yc-MO-2UO\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"B8T-HH-7na\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"SLw-DJ-pZ2\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"nU6-K3-kco\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"tpQ-Nb-1j8\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"zAN-Ka-aMl\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"zlT-Vv-c1h\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"vpc-uv-s4d\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"7Yd-2C-4go\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"YHQ-QA-va8\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"8C2-LG-kqZ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"jOX-VH-86C\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"4vx-Uo-TOA\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"ruG-Q9-hlL\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"OWZ-GK-jt8\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"rBf-uo-bLx\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Y9J-B5-U7m\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"ohC-hp-o1P\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Tn6-VQ-PjY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"7gW-N1-77d\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"H2c-Jg-9iq\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"x2y-ER-Icd\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"l6J-Ey-Xw9\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"2HI-ym-sZr\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"Vrk-GJ-VDO\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"A4q-mm-he3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Z0k-4d-6uo\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Jbs-Ef-4fd\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"eUZ-A5-VNK\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"MXr-qy-Jk7\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"N5a-U2-AAd\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"ghJ-hD-VbU\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"brh-cy-2GX\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"keK-mn-dVm\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"7Ih-tA-cbt\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Zef-uP-BEH\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"0bX-gs-lwN\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"S5o-wH-1du\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"hjm-Ie-RUw\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate2\" id=\"7cV-KY-guD\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"Zjj-pe-JqG\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"cBR-nK-fn9\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"doj-4g-gdR\" secondAttribute=\"trailing\" constant=\"17\" id=\"9ie-Mq-SDo\"/>\n                                                <constraint firstItem=\"doj-4g-gdR\" firstAttribute=\"top\" secondItem=\"J97-zb-W9K\" secondAttribute=\"top\" constant=\"3\" id=\"bWl-wj-87v\"/>\n                                                <constraint firstAttribute=\"bottom\" secondItem=\"doj-4g-gdR\" secondAttribute=\"bottom\" constant=\"17\" id=\"tzE-tK-3x0\"/>\n                                                <constraint firstItem=\"doj-4g-gdR\" firstAttribute=\"leading\" secondItem=\"J97-zb-W9K\" secondAttribute=\"leading\" constant=\"17\" id=\"vwx-1W-C0x\"/>\n                                            </constraints>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"3\" identifier=\"3\" id=\"R1s-iN-eeA\">\n                                        <view key=\"view\" id=\"RwD-XB-Zgj\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"0ci-dt-YdL\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" id=\"VbW-fm-rK4\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" nestingMode=\"compound\" rowHeight=\"25\" id=\"ugV-DT-onp\" userLabel=\"Filter 3 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"QiN-2C-CoG\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"ZRn-RX-hZY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"xa2-nf-L18\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"T3v-1Z-GqT\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"YEK-M2-gcu\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"LMr-pE-Tbb\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"Uqq-4m-SdT\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"dhi-rg-2nb\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"a6C-Hy-OJz\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"N3p-fQ-V1M\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"H7I-2A-S3J\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"O75-1f-kdL\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"A7R-F4-itY\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"cYP-zh-NDX\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"qMy-qP-gyp\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"3Wy-7e-eQs\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"5VT-07-9ag\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"sj5-fV-aGi\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"EmY-Oz-3eK\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"nTl-3q-6TZ\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"tO9-dc-NRd\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"cfq-0D-g5R\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"ii3-7g-bem\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"Txn-1D-vFy\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"hSx-YJ-z7T\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"5Gw-qk-3oh\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"ULy-Zv-OmL\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"ZsI-ek-jfq\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"u26-dd-858\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"IDG-yg-QVF\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"BK9-lq-hLh\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"BnL-4S-Blp\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"RtG-hl-OXc\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"bdk-P5-nY8\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"Tk4-s4-FGK\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"7wS-vW-Ifp\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"ME3-Ic-kzg\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"pFw-EV-q9T\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Kuu-fY-PnL\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"V6N-k0-AWv\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"2yL-e4-zvp\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"J3p-IS-Nj4\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"eao-17-nTO\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"s77-hI-9vu\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"JYV-HK-Tig\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"UGc-dM-y4D\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"O74-Sy-KXx\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"w7m-xS-Mpt\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"NXj-Wg-yhH\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"lI5-Fr-hVN\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"hHS-zG-UvS\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"WQj-8y-OBe\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"eLG-AB-uay\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"Mpc-ey-O4G\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"hiU-Op-SfI\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"k6f-Ma-RHj\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"N1w-P6-VcS\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"3zM-GL-J1U\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"oBP-RN-WKT\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"SvG-7q-433\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"akm-yL-O90\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"SnN-PK-bJK\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Kbq-oC-YFb\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"BSU-Db-dvv\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"kfF-UB-CnD\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"1H7-kQ-Jf8\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"YWw-I5-TKt\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"bAM-k0-E2V\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"r67-Ee-4Sh\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"9JP-DP-tHl\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"15e-EL-1Zh\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"kNV-II-C0T\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"OLq-rF-w8c\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"fza-1Y-7Om\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"V69-pm-8Cd\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"HGM-fV-EaO\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"6eb-cH-gqZ\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"hOt-V9-hNu\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"TVr-L2-aF3\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"dVN-vT-VTM\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"hWX-no-4wa\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"lc1-7Q-N8F\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Gfg-gv-ayX\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"fzn-0p-t3w\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"BP8-1F-OiQ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"70m-B6-NXM\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"ZpR-Yc-F7r\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"AuG-HB-GR4\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"AD2-h6-x6L\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"FUC-V7-Qan\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"QNw-Lg-V6O\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Obd-30-Ih5\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"lFm-eQ-pbn\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"uvW-de-2QG\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Lxl-ey-mDM\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Fbb-N3-vVo\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Lnn-FC-IpP\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"YCt-Vd-zSS\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"lcF-1m-8mw\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"aoP-Rd-oCt\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"EKX-jD-269\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"ky1-pG-7Z3\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"OzU-0F-UdR\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"suG-6t-HPz\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"KOZ-mR-zaC\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"zFK-4W-pf3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"vKP-CU-kSV\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"jvP-vc-ums\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"5xg-el-idC\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"vvD-kt-Gic\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"l2v-1S-cpR\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"yp8-ON-zsd\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"T46-hi-8lw\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate3\" id=\"vX8-Om-oYE\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"XLI-Lg-49L\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"3Nt-k0-7U4\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstItem=\"0ci-dt-YdL\" firstAttribute=\"top\" secondItem=\"RwD-XB-Zgj\" secondAttribute=\"top\" constant=\"3\" id=\"K2G-z6-tpx\"/>\n                                                <constraint firstAttribute=\"bottom\" secondItem=\"0ci-dt-YdL\" secondAttribute=\"bottom\" constant=\"17\" id=\"Pgb-Vj-6nz\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"0ci-dt-YdL\" secondAttribute=\"trailing\" constant=\"17\" id=\"fiO-wV-rax\"/>\n                                                <constraint firstItem=\"0ci-dt-YdL\" firstAttribute=\"leading\" secondItem=\"RwD-XB-Zgj\" secondAttribute=\"leading\" constant=\"17\" id=\"qxt-qP-ObB\"/>\n                                            </constraints>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"4\" identifier=\"4\" id=\"zei-mw-Cwn\">\n                                        <view key=\"view\" id=\"oUE-Dl-Rpo\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView fixedFrame=\"YES\" autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mVH-HR-oer\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" ambiguous=\"YES\" id=\"7ML-FL-FLT\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" ambiguous=\"YES\" nestingMode=\"compound\" rowHeight=\"25\" id=\"I1X-wh-ckV\" userLabel=\"Filter 4 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"crW-Un-59i\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"U1M-t0-JYY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"4Aw-hM-gfl\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"d44-64-ePd\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"RJU-oE-KeC\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"8E3-0K-boF\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"xDd-xK-bXj\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Ecp-9S-5ji\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"sB5-ke-O80\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"jlA-dE-QTb\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Flm-5z-XHv\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"EcP-ls-mCB\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"9jQ-AG-fBt\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"SZ9-O9-02B\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"78G-lx-GOc\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"U2R-9M-8xN\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"NuY-8V-GGk\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"6iV-Ka-V21\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"C8e-Xl-pk1\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"yXS-Rf-yCy\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"SyZ-cF-fu7\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"y9A-jS-g0k\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"8Ru-FV-I4A\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"WAX-9C-R2c\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"o3O-na-w2e\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"Vji-zb-GlB\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"pPj-bk-uTV\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"DTI-HS-B69\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"A40-4h-J0w\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"mjW-4u-ecy\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"xyK-08-HCl\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"ICs-QG-anu\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"GCd-sG-cg9\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"ydu-dq-7kK\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"gIG-gd-ivt\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"Fnd-Q7-2hx\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"UoL-In-FZs\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"ibf-XC-lYP\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"EcT-CL-wQp\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"E2S-u6-m6X\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"DXb-Ik-IO7\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"LBq-vL-WCL\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"8BJ-dC-vA1\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"Y7S-2E-eub\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"5cb-C7-Pom\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"n9m-RF-ipP\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"G7B-4s-vbv\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"bUn-AL-35r\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"3Ie-q4-4fb\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"S0a-3O-5od\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"OGO-5c-F77\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"6yt-Jd-Zew\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Wse-DW-cht\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"HNV-ho-JFR\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Kih-AP-5PE\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"0sR-R7-JTE\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"DEV-cM-7qi\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"FAj-DQ-jLp\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"qN0-9R-tz9\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"fwJ-vr-zPz\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"9O9-PN-9zP\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"aeV-rP-ZMA\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"cB7-8j-1bt\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"0bV-cC-q2Z\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"5nb-1b-6cp\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"zPz-ds-XlB\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"yXY-dz-r3V\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"G1e-N7-WiO\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"wfj-qC-aT3\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"6yE-Qv-khT\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"iYX-2V-AbS\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"D41-JU-m66\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"fqJ-0v-6YY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"WGL-kF-cq1\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"z9P-H9-N37\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"ISr-bU-y6F\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"dAC-Hy-3hd\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"Gsr-Bi-VOP\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"edz-vN-SqC\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"X63-mY-l7O\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"LCV-So-nGU\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"lP4-iH-NXp\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"gCR-3l-vDX\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"Jub-vt-s1h\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Ddi-r5-wMn\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"4H6-bg-e4c\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"XSf-Og-ppp\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"XW5-BB-z7T\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"jeU-24-Tnx\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"NKF-pr-Wry\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"7eu-3i-iB6\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"LZD-d5-2kX\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"RvL-mC-y6J\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"EFE-pT-fgo\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"C5o-6a-IK4\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Jur-L5-IIK\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"4CZ-IL-Rw9\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Sla-wC-eE9\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"pny-xL-UmM\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"FDb-YQ-8ut\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"wSG-zZ-B29\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"cpe-pY-0Sq\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"KYg-7d-BnL\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Vpg-pG-cg0\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"v9c-2q-CSU\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"cIw-84-8CC\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"WG8-ku-30j\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"lcx-Zd-wMb\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Pvv-Hq-eqQ\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Acx-CU-3Oh\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"K9h-WQ-Y2H\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"WvN-PR-YIL\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"LZz-3a-a4K\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate4\" id=\"ize-V9-n47\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"0Hy-uI-RW7\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"Nqo-vv-bnt\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"5\" identifier=\"5\" id=\"Xfd-Gi-Kgs\">\n                                        <view key=\"view\" id=\"lUo-BT-eGj\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3Cn-q6-oN3\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" id=\"V2Y-OM-9jg\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" nestingMode=\"compound\" rowHeight=\"25\" id=\"AY8-4B-1xS\" userLabel=\"Filter 5 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"B3J-sJ-NKr\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"MwS-lA-l2e\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"ktv-bC-zMU\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"r3S-Wm-LtO\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"KKu-gL-pmv\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"NKG-Lr-DWA\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"xRO-F8-p8b\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"HWI-wp-5a1\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"q7x-n7-xN8\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"3J9-kQ-UwN\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"ruF-LT-xFL\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"cX1-Yi-8dn\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"HM3-EI-xow\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"yOv-Vo-sd9\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"5C7-2c-79S\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"y29-b6-Dub\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"yV6-ds-hpk\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"aoN-oA-tcn\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"t7S-Uk-py3\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"ts7-2L-FsO\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"SUI-BS-Dxe\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"f1K-p1-fKY\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"9DV-RX-XbY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"thl-nO-pER\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"xEz-uu-hug\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"cwF-FE-kd1\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"Q6h-oY-21d\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"wFr-ZU-u0R\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"txB-6V-rkJ\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"Icp-Sd-6zY\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"fOp-fl-ii6\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"cfF-SL-Rw5\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"11d-w7-A9Y\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Vaa-KU-JO0\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"xqV-pa-DPu\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"jL9-4B-v7d\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"lvY-jt-oAf\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"5UF-U1-4ZK\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"6j9-mS-qHe\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"BAo-uk-HxI\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"xAT-A5-hbd\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"dqr-8I-1MD\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"jvQ-Mt-C9w\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"ZIT-3a-KAV\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"KYD-As-GgL\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"PYn-dd-Kt2\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"fYT-03-1L6\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"q3V-Rf-4Tz\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"oVH-gn-cxb\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"axY-EL-cc3\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"SNd-8X-nY6\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"LAD-2W-z69\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"hYC-L1-VKU\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"tMd-Sq-4xN\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"VKX-2o-0g3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"dDy-t9-knR\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"1Lk-pT-baY\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"K6l-2y-H0V\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"7Lj-4b-qkr\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"96w-1N-XJ6\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Ffl-4P-sAC\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"6MF-Yy-12B\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"ESJ-0C-UV2\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"UGa-bY-nH6\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"bWZ-FV-Eft\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Hpb-t3-eX2\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"UeN-F4-QkP\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"beT-M5-e7c\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"IVG-ji-y4H\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"igW-r5-QkR\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"mCh-gz-pxr\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"wyZ-6o-2I2\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"WyW-fa-KVu\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"5mI-Hh-Xso\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"wTl-q4-xS7\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Dig-5z-lgV\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"cjj-Nu-XPi\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"f5f-tr-CXF\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"BJO-kl-U0S\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"HT8-wV-fka\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Npk-7R-jeV\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"G8o-Bp-dCr\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"47b-3q-ted\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"3QI-kY-vVn\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"lBE-SQ-oZ9\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"tmQ-tV-feb\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Sqs-Ob-utY\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"6PB-o8-331\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"ehd-LH-UUk\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"n1c-cV-ry8\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"TvA-7k-qxF\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"7h0-E7-HYv\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"3nw-Xc-784\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"rv8-4W-829\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"QUe-Tx-x1Z\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"o5g-53-GSn\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"BlY-38-vOf\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"cDv-on-Ry6\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"68B-k4-B8G\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"aNe-u4-Vz3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"50c-ng-KM1\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"G68-iL-heb\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Uqv-Rd-0uM\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Eu9-SO-1Nf\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"NqJ-EB-FAf\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"3w0-Kc-DOi\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"zNK-mV-r3d\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Niq-dZ-Peq\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"c1o-vT-fCu\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"kay-y2-eEh\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"AWf-O2-DWU\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"dsR-u4-fm3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"abf-nl-VJL\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate5\" id=\"NfP-PC-uCf\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"r6p-iG-hZr\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"QGV-Hz-ZBR\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstItem=\"3Cn-q6-oN3\" firstAttribute=\"leading\" secondItem=\"lUo-BT-eGj\" secondAttribute=\"leading\" constant=\"17\" id=\"7Ps-YS-TWe\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"3Cn-q6-oN3\" secondAttribute=\"trailing\" constant=\"17\" id=\"A4L-Z8-Amh\"/>\n                                                <constraint firstAttribute=\"bottom\" secondItem=\"3Cn-q6-oN3\" secondAttribute=\"bottom\" constant=\"17\" id=\"ZXU-gZ-V3c\"/>\n                                                <constraint firstItem=\"3Cn-q6-oN3\" firstAttribute=\"top\" secondItem=\"lUo-BT-eGj\" secondAttribute=\"top\" constant=\"3\" id=\"qpz-d0-srI\"/>\n                                            </constraints>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"6\" identifier=\"6\" id=\"F9E-b6-BOc\">\n                                        <view key=\"view\" id=\"Qsi-I7-eOz\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView fixedFrame=\"YES\" autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cmo-sl-f0Q\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" ambiguous=\"YES\" id=\"dFc-Qd-Ag1\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" ambiguous=\"YES\" nestingMode=\"compound\" rowHeight=\"25\" id=\"WLK-Np-fUg\" userLabel=\"Filter 6 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"k2V-cv-tLQ\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"pTJ-MN-SYY\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"e7D-lp-qWf\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"xUv-Kx-Xsx\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"uZ6-LK-aLD\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"pje-RW-X6L\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"z38-Cg-aIi\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"rme-bM-BUj\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"H96-AZ-v3t\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"yrN-7a-QkP\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"jpq-TP-OwK\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"ZGl-zs-qVS\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"SPz-Sq-Bx9\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"kpC-At-m9Z\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"htE-yR-Kd0\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"7O1-9U-w5R\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"F0K-6H-7yc\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"t7X-Uf-6o4\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"siO-Io-Dag\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"iT8-gd-df2\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Mj5-RL-ciU\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"5Xx-YF-ibl\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"fRo-kC-CWW\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"Jzz-kk-qye\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"1t8-6h-Y7k\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"pfK-uM-WkM\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"tbR-6Y-yUA\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"JFA-nz-5be\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"HWU-Qh-Cga\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"SZI-rS-83r\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"BSM-f9-X0u\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"PCW-zd-nDm\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"4jb-Dv-gKB\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"CiU-Ts-ueR\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"tRQ-lM-QxM\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"EpC-aC-XDV\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"cPN-J6-4eF\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"ddS-qn-Sov\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Tqw-kC-v7D\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"qx3-4a-qez\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"BSi-mo-dq3\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"4vQ-K0-DJd\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"6Mw-xl-JCk\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"ebv-Tk-1L2\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"pKT-PR-ZAo\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Hbe-rS-oh9\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Dl9-Di-Yn3\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"vn5-0g-cPr\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"dJo-RV-Prz\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"XBp-oh-yb1\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"dqF-Pd-aeQ\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"WFo-t1-ILz\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"xdT-V4-APz\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"VjJ-99-gix\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"IJW-6S-hdF\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"ZcU-VV-LZI\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"VeE-1i-ne7\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"EeZ-sr-Emb\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"FRF-sd-CY5\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"3sP-Ae-NAu\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"prs-x7-1JN\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"M0B-K1-Add\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"BWd-kG-HxS\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"PdC-xj-E0E\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"ltX-CU-Wev\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"6Ly-J6-rMk\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"4i9-hG-Gmk\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"XJk-W8-AJa\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"Qno-66-Z53\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"atg-H8-KMf\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"iec-li-0u4\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"nlf-J4-igi\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Hh6-BX-vQZ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"eTu-fM-YvP\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"PG4-rH-gWf\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"NV8-pZ-0oG\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Mva-7W-XiD\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"7IL-r8-9Ig\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"Vad-gd-57b\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"9mY-Km-2vF\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"hp5-bs-RNz\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"ydN-dg-9YE\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"u4v-Ad-Opa\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"UWU-5a-BdY\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"IIV-Tw-fno\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"muW-9V-DlJ\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"X11-aQ-tJA\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"2zL-Na-vLf\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"x6U-Wj-o7y\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"NV5-wz-2d9\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Jcq-xt-6BL\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"04Z-sl-kBE\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"5E3-BP-ksp\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"pIo-wI-iwN\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Syy-yH-jLy\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"MUl-Mb-Jrk\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"b61-PO-vJC\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"S20-hr-RsO\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"XOi-Wt-SrY\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Odn-O4-lIi\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"WKw-EU-ezC\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"KUA-26-4fX\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"nTK-iC-lAK\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Z4R-7O-Ge2\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"qmp-lL-maP\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"aEL-uT-S0d\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"z5B-ua-D7B\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Np0-KR-d0n\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"pAt-Oh-dP3\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"9Xq-zq-C62\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"LWc-R5-fAM\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"eVj-ZH-8ZI\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"WWz-1j-NwK\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate6\" id=\"Gnn-MG-ceY\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"aG8-Zn-sCp\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"a3q-1v-ewQ\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"7\" identifier=\"7\" id=\"JNf-5E-9je\">\n                                        <view key=\"view\" id=\"D1Y-zM-0fz\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView fixedFrame=\"YES\" autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nwq-Tb-7Yn\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" ambiguous=\"YES\" id=\"FKB-1w-yYS\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" ambiguous=\"YES\" nestingMode=\"compound\" rowHeight=\"25\" id=\"z57-jf-7VI\" userLabel=\"Filter 7 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"onL-ei-Bux\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"ybZ-27-9U4\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"9Hw-Lv-NFo\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"DH3-aS-cmF\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"UJ9-1X-k4L\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"v3l-Ge-fXr\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"Iqv-Q0-9Hf\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"hYS-vk-U1R\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"C06-TP-0Pq\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"HCW-D6-5HX\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"dCQ-M9-DI2\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"dRf-7u-RxU\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"SO3-37-XeG\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"f6G-7g-KZX\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"zyu-04-MQ9\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"LGW-jJ-mUH\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"efC-AY-wNl\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"gB5-UQ-muc\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"4Pn-hf-Q8c\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"nSd-2L-ect\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"aae-n5-4D7\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"VS3-v1-ne0\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"i8h-aQ-uTp\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"aKY-7r-IUI\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"J1K-CJ-vCh\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"uef-sM-OQZ\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"4fJ-Mw-sIu\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"MwR-UA-chp\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"QBY-1d-X8K\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"piZ-aN-2rG\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"pM6-b3-ho8\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"zfl-SR-g9b\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"qNF-Sw-Ovb\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"jbg-YD-VNN\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"teB-W7-U2E\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"iGy-Oq-pp3\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"l7t-A5-lfX\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"XLg-RZ-Dcv\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"2ZW-Xz-X1l\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"khy-Eu-SnJ\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"QeQ-5Y-CmG\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"OLd-Zc-uh5\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"39g-Zq-MK6\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"Bmk-Zf-uiG\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"rTl-4o-bSA\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"8eI-3Y-ZR4\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"wyw-y0-d45\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"uLx-3r-aav\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"UE9-Mq-b0x\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"PIg-WW-HbV\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"cMj-lk-iDd\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"yPY-qH-Ush\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"97K-E2-2Gh\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"LA8-sJ-e7g\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"QQH-3T-FEr\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"XJA-dr-lKt\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"IS1-a3-HiJ\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"HGo-k8-YTC\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"t6q-Xa-HNP\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"W1c-Bf-Ed7\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"eHI-1m-nb2\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"mKt-HL-ikQ\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"7Sf-bg-k4n\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"TsD-KZ-s7K\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"LgL-5h-Tx3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Mip-ca-tMs\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"rtf-gX-dMj\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"CcT-JG-Ece\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"egc-Qv-9fR\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"PvT-dN-4dA\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"8dL-ee-BbC\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"QCb-5f-OoA\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"inf-ln-XJ3\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"MhX-pB-FlO\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"pFt-xe-tse\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"1QX-mD-FzT\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Ms4-cG-T2z\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"gvO-gZ-UX3\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"kdg-6H-X2o\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"mRC-aP-5iq\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"4sL-tt-Hjq\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"YVr-eE-q9F\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"6et-CZ-UlF\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"czf-yo-u6r\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"KFf-eS-CEr\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"9Z6-5v-afB\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"tyf-op-Lyk\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"fhb-Pb-upA\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"3SQ-iG-jkR\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"Nv8-GY-Mnt\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Oon-5D-6pN\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"LiM-BX-SwX\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"jsW-LT-EpC\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"7ZW-wZ-jJA\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"UdJ-Ge-Yo6\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"wcz-8q-MJn\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"n9S-77-8Gv\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"zyP-JB-P4k\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"fSG-bN-TiB\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"4ve-Fn-mN9\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"fyy-4m-QCu\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"dH7-l0-2L2\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"YtL-z8-ryZ\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"434-25-kiL\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"0V4-cN-kn0\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"hlB-Xu-KNN\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"W79-NN-Xpc\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"zjf-cy-kFU\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Bhn-WE-LtA\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"mRn-IY-A3H\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"Xsh-gY-s7Z\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"3ai-ZH-Ofe\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"7kG-kD-bBs\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate7\" id=\"avN-Z0-3yN\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"cWu-cG-Cr5\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"Uuc-WY-sIt\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"8\" identifier=\"8\" id=\"Yi5-lU-VDJ\">\n                                        <view key=\"view\" id=\"GUo-xp-z9j\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView fixedFrame=\"YES\" autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"CIX-cv-Obf\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" ambiguous=\"YES\" id=\"J7f-Fw-8AR\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" ambiguous=\"YES\" nestingMode=\"compound\" rowHeight=\"25\" id=\"6aD-Lp-Zdw\" userLabel=\"Filter 8 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"mp3-Lz-5hr\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"hWC-q8-Fci\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"tdY-Fh-fdM\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"QvT-pE-fSV\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"Cyh-5f-EpK\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"TKd-Xq-gl7\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"0bg-vr-h8z\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"jBr-LT-Rvl\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"1YU-4N-gCc\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"n5d-gk-7e5\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"kni-1v-DqB\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"wwC-Zl-4Ws\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"S0f-8w-J4B\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"VNl-K9-mjr\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"pe6-6c-69g\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"7DS-Mb-EJI\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Asy-qk-Fry\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"jAG-po-WAd\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"BXO-eV-tXu\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"8Cr-XE-cu5\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"bqa-tD-w9s\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"TEI-7S-rwr\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"E3z-Z1-wSf\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"Y1I-Ie-g85\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"ZFB-dU-Zaw\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"XnY-YZ-68o\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"u3q-Uf-Ugi\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"zWa-S3-nlY\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"541-GE-xjv\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"OeG-LD-F1K\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"amF-bG-mpK\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Dxj-g5-PhN\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"n6W-Rd-KLE\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"OZY-48-Tc4\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"jb6-qy-iM4\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"GAS-f0-IBr\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"LhX-fm-jNw\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"LLw-00-TgA\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"63a-So-itC\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"FBw-1r-e4c\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"tHs-Ul-3kh\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"I3v-80-2Jp\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"FJp-8A-WZk\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"CTW-eC-3lT\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"EB5-zH-q7d\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"t59-nD-bK3\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"eIN-6q-Mr7\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"DcH-BY-EAY\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"hG9-Fz-r5x\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"OE8-H6-liB\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"DTs-GP-sVr\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"m2J-iD-dV6\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"bct-rB-GgA\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"rik-3c-H73\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"B65-OI-cza\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"9S5-bt-aNc\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"ve8-nS-5ry\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"uVp-Hn-yDN\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"a8K-Fr-Rik\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"vXb-bh-dyK\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"EFg-XC-x3X\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"r4p-Iv-8P1\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"gDc-fK-uve\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"Bok-uF-6fn\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"RcE-wF-bqh\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"ZFB-O6-tOi\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"t0y-gm-bbb\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"z33-SM-Q1C\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"ie5-Xn-z9l\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"DgE-ab-GhY\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"mHu-9w-Mmg\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"e9t-vS-3rF\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"ng6-Ak-mXJ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"RWy-Og-Nri\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"gVm-ge-Cqg\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"RSW-tT-Kzj\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"sZA-ra-GNC\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"rMu-Ow-JBQ\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"Xys-b7-n7P\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"mgj-7X-2Cq\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"17w-cw-g36\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"cW5-7K-12d\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"D7A-NV-zrx\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"8Ki-ce-F21\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"BrB-on-THX\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"AKk-xg-ADD\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"jC7-0H-f8b\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"B4R-WM-PLx\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"mKv-BR-0VJ\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"CfA-4b-Ms3\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Hyb-H4-FIM\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"5Dp-jX-JzG\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"5nh-J6-3q0\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"OjS-ZX-zNK\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"n4p-3Z-clL\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"cc9-gY-ASd\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"7i7-n4-q01\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"0M6-Hk-i6R\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"jL7-Dw-BJq\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"VLg-lX-yit\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Oy6-hU-KOZ\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Tev-jZ-woe\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"MFg-OS-fh5\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"EtR-4I-n8l\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"FYh-7H-g2E\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"SHT-zj-baD\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"246-fr-RJc\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"vbv-cI-ojd\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Gb5-Mr-SJm\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"qmv-cA-dyJ\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"uq6-EP-SGr\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Uw4-OV-4FP\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"g9k-O0-FPH\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate8\" id=\"uxK-k7-Sag\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"euF-ZX-aAu\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"h5A-de-bpk\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"9\" identifier=\"9\" id=\"vBz-pp-fch\">\n                                        <view key=\"view\" id=\"uF4-dA-lpm\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"527\" height=\"278\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <scrollView fixedFrame=\"YES\" autohidesScrollers=\"YES\" horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3kQ-Rh-zeA\">\n                                                    <rect key=\"frame\" x=\"17\" y=\"17\" width=\"493\" height=\"258\"/>\n                                                    <clipView key=\"contentView\" ambiguous=\"YES\" id=\"ize-3o-lW9\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"476\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <predicateEditor verticalHuggingPriority=\"750\" ambiguous=\"YES\" nestingMode=\"compound\" rowHeight=\"25\" id=\"NNi-kU-L08\" userLabel=\"Filter 9 Predicate Editor\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"476\" height=\"325\"/>\n                                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                                                <rowTemplates>\n                                                                    <predicateEditorRowTemplate rowType=\"compound\" id=\"6sb-nW-uj9\">\n                                                                        <popUpMenus>\n                                                                            <menu id=\"kgI-e8-t2H\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Any\" state=\"on\" id=\"S0C-0x-HG7\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"All\" id=\"Whb-OO-qgY\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"None\" id=\"Lz0-rb-i9I\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Qqk-WE-apt\">\n                                                                                <items>\n                                                                                    <menuItem title=\"of the following are true\" state=\"on\" id=\"f2g-Rn-4ZD\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"g0W-5d-U2Z\" customClass=\"TTMPredicateEditorTextRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">rawText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"TWF-gC-Sw5\">\n                                                                                <items>\n                                                                                    <menuItem title=\"task\" state=\"on\" id=\"kf8-bZ-lqf\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">rawText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Yd9-h6-1b2\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"Juw-kR-1Qz\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"does not contain\" id=\"zvR-fg-fmZ\" userLabel=\"does not contain\">\n                                                                                        <integer key=\"representedObject\" value=\"10\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"cs1-EF-N4r\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"JuQ-HX-jXe\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"Ezc-XK-VX2\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"rBZ-L9-pQf\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"UVT-C9-TtM\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"JZr-vm-yBn\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"vGb-6S-2WA\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">projects</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Fqy-rP-UI7\">\n                                                                                <items>\n                                                                                    <menuItem title=\"projects\" state=\"on\" id=\"s8F-yX-7Ff\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">projects</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"erJ-Zi-1vv\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"j4q-OH-IAk\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"PYu-YW-qWH\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"Qdd-EN-tyk\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"fae-JO-IQ3\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"Qh2-oz-AED\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"Z3w-zt-V8W\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"sGW-xC-uNI\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"9Kb-s1-Y0r\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">contexts</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"6rL-Gk-8Dj\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contexts\" state=\"on\" id=\"7Pg-p1-lUz\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">contexts</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Hmt-4O-1uo\">\n                                                                                <items>\n                                                                                    <menuItem title=\"contains\" state=\"on\" id=\"WbF-AD-hqT\">\n                                                                                        <integer key=\"representedObject\" value=\"99\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"begins with\" id=\"k42-RG-bKM\">\n                                                                                        <integer key=\"representedObject\" value=\"8\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"ends with\" id=\"kpP-MX-XQK\">\n                                                                                        <integer key=\"representedObject\" value=\"9\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is\" id=\"gXk-5S-8HC\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"C1E-dE-6wY\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"matches\" id=\"eA0-fd-hnX\">\n                                                                                        <integer key=\"representedObject\" value=\"6\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is like\" id=\"yHn-pL-K1U\">\n                                                                                        <integer key=\"representedObject\" value=\"7\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"HPy-Tw-FXA\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">priorityText</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <comparisonPredicateOptions key=\"options\" caseInsensitive=\"YES\" diacriticInsensitive=\"YES\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"JBA-hS-MKg\">\n                                                                                <items>\n                                                                                    <menuItem title=\"priority\" state=\"on\" id=\"O5G-pR-3Oa\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">priorityText</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Rqb-r7-QrH\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"sts-m2-oOj\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"38D-wn-fHX\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"Y5K-bi-x97\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"Sut-ba-krn\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"xoz-5n-ocp\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"ceN-DN-DCI\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"OyV-vi-mh2\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"ABK-3F-k7b\">\n                                                                                <items>\n                                                                                    <menuItem title=\"due date\" state=\"on\" id=\"JNs-qQ-1dL\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"PwS-yE-Y7w\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"rSc-6N-qro\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"qBE-5r-Wi9\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"JOx-DS-1e9\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"XL3-mi-UaK\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"nP3-JK-W1t\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"Gpm-5r-f3W\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"pCj-fA-9Ej\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completionDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"RLU-8h-d8g\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completion date\" state=\"on\" id=\"QmY-3c-vHh\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completionDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"kyw-dc-bVR\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"Fms-Oh-Yy5\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"ubH-in-894\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"5zy-al-4DL\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"mNF-Ba-YGP\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"znk-It-zQw\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"X2C-6o-MQD\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"kjW-iv-Fkt\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">creationDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"fh5-NK-8L9\">\n                                                                                <items>\n                                                                                    <menuItem title=\"creation date\" state=\"on\" id=\"fiU-xT-CFF\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">creationDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"Zc8-dq-a8M\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"L0H-Hb-kXi\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"SlP-zW-uq6\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"8mt-0M-39n\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"omW-8Y-E7V\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"6wc-Do-dyE\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"1hk-Ec-yj9\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"WN0-jJ-CUI\" customClass=\"TTMPredicateEditorDateRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdDate</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"900\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"RSF-Hm-YRU\">\n                                                                                <items>\n                                                                                    <menuItem title=\"threshold date\" state=\"on\" id=\"1NM-FJ-i85\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdDate</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"cR9-AW-Sia\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"NYX-CP-7Jq\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"VoL-5j-9ol\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than\" id=\"iDW-zR-R98\">\n                                                                                        <integer key=\"representedObject\" value=\"0\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than\" id=\"aLI-ld-Ved\">\n                                                                                        <integer key=\"representedObject\" value=\"2\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is less than or equal to\" id=\"9x4-JT-4dy\">\n                                                                                        <integer key=\"representedObject\" value=\"1\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is greater than or equal to\" id=\"pdM-CZ-pUi\">\n                                                                                        <integer key=\"representedObject\" value=\"3\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"qAL-XZ-eP3\" customClass=\"TTMPredicateEditorCompletedRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">completed</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"Brg-8E-wXq\">\n                                                                                <items>\n                                                                                    <menuItem title=\"completed\" state=\"on\" id=\"P4G-fL-zdS\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">completed</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"zd7-OJ-Min\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"ryk-jC-gk5\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"yUj-7p-KWx\" customClass=\"TTMPredicateEditorDueRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">dueState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"QT6-eA-mmw\">\n                                                                                <items>\n                                                                                    <menuItem title=\"dueState\" state=\"on\" id=\"3Jq-eU-LHe\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">dueState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"ruj-Lv-tRd\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"jjt-BZ-BCO\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"bz3-FL-g5s\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"z8n-ZR-66w\" customClass=\"TTMPredicateEditorThresholdRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">thresholdState</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"300\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"rlW-uc-92B\">\n                                                                                <items>\n                                                                                    <menuItem title=\"thresholdState\" state=\"on\" id=\"JWq-Ty-kD6\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">thresholdState</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"vTJ-EH-Vb6\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"2T7-7f-Div\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                    <menuItem title=\"is not\" id=\"343-HV-gHx\">\n                                                                                        <integer key=\"representedObject\" value=\"5\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                    <predicateEditorRowTemplate rowType=\"simple\" id=\"Kjl-Yz-Ll6\" customClass=\"TTMPredicateEditorHiddenRowTemplate\">\n                                                                        <array key=\"leftExpressionObject\">\n                                                                            <expression type=\"keyPath\">\n                                                                                <string key=\"keyPath\">isHidden</string>\n                                                                            </expression>\n                                                                        </array>\n                                                                        <integer key=\"rightExpressionObject\" value=\"700\"/>\n                                                                        <popUpMenus>\n                                                                            <menu id=\"JUJ-m0-xFv\">\n                                                                                <items>\n                                                                                    <menuItem title=\"isHidden\" state=\"on\" id=\"8r6-UF-DBd\">\n                                                                                        <expression key=\"representedObject\" type=\"keyPath\">\n                                                                                            <string key=\"keyPath\">isHidden</string>\n                                                                                        </expression>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                            <menu id=\"LGF-Hx-UWX\">\n                                                                                <items>\n                                                                                    <menuItem title=\"is\" state=\"on\" id=\"MEp-hL-bH0\">\n                                                                                        <integer key=\"representedObject\" value=\"4\"/>\n                                                                                    </menuItem>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpMenus>\n                                                                    </predicateEditorRowTemplate>\n                                                                </rowTemplates>\n                                                                <connections>\n                                                                    <binding destination=\"VIO-0n-UUv\" name=\"value\" keyPath=\"values.filterPredicate9\" id=\"hmm-Zl-Ca9\">\n                                                                        <dictionary key=\"options\">\n                                                                            <string key=\"NSValueTransformerName\">NSKeyedUnarchiveFromData</string>\n                                                                        </dictionary>\n                                                                    </binding>\n                                                                </connections>\n                                                            </predicateEditor>\n                                                        </subviews>\n                                                        <color key=\"backgroundColor\" white=\"0.91000002619999998\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                    </clipView>\n                                                    <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" horizontal=\"YES\" id=\"ozp-n8-cJz\">\n                                                        <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"360\" height=\"15\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                    <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" horizontal=\"NO\" id=\"N2B-Ta-yKU\">\n                                                        <rect key=\"frame\" x=\"477\" y=\"1\" width=\"15\" height=\"256\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                                    </scroller>\n                                                </scrollView>\n                                            </subviews>\n                                        </view>\n                                    </tabViewItem>\n                                </tabViewItems>\n                                <connections>\n                                    <outlet property=\"delegate\" destination=\"-2\" id=\"8Jp-o7-Z07\"/>\n                                </connections>\n                            </tabView>\n                            <stackView orientation=\"horizontal\" alignment=\"firstBaseline\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vFl-WV-0PG\" userLabel=\"Button Row Stack View\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"533\" height=\"30\"/>\n                                <beginningViews>\n                                    <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"K5U-Nz-fQB\">\n                                        <rect key=\"frame\" x=\"-6\" y=\"-2\" width=\"75\" height=\"32\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"width\" constant=\"63\" id=\"YaC-SX-HfI\"/>\n                                        </constraints>\n                                        <buttonCell key=\"cell\" type=\"push\" title=\"Close\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"fp0-Cf-XSV\">\n                                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                            <font key=\"font\" metaFont=\"system\"/>\n                                        </buttonCell>\n                                        <connections>\n                                            <action selector=\"performClose:\" target=\"QvC-M9-y7g\" id=\"DIT-dx-zcn\"/>\n                                        </connections>\n                                    </button>\n                                </beginningViews>\n                                <middleViews>\n                                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7bV-0W-vaI\">\n                                        <rect key=\"frame\" x=\"105.5\" y=\"8\" width=\"322\" height=\"17\"/>\n                                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Apply filter presets by pressing 1-9 on the keyboard.\" id=\"nDD-DO-vfB\">\n                                            <font key=\"font\" metaFont=\"system\"/>\n                                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                        </textFieldCell>\n                                    </textField>\n                                </middleViews>\n                                <endViews>\n                                    <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"EFZ-M9-oeC\">\n                                        <rect key=\"frame\" x=\"450\" y=\"-2\" width=\"89\" height=\"32\"/>\n                                        <buttonCell key=\"cell\" type=\"push\" title=\"Clear all\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"DJx-pl-BFw\">\n                                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                            <font key=\"font\" metaFont=\"system\"/>\n                                        </buttonCell>\n                                        <connections>\n                                            <action selector=\"resetAllFilters:\" target=\"-2\" id=\"ykM-Zu-HeD\"/>\n                                        </connections>\n                                    </button>\n                                </endViews>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"30\" id=\"wsD-yr-I82\"/>\n                                </constraints>\n                                <visibilityPriorities>\n                                    <integer value=\"1000\"/>\n                                    <integer value=\"1000\"/>\n                                    <integer value=\"1000\"/>\n                                </visibilityPriorities>\n                                <customSpacing>\n                                    <real value=\"3.4028234663852886e+38\"/>\n                                    <real value=\"3.4028234663852886e+38\"/>\n                                    <real value=\"3.4028234663852886e+38\"/>\n                                </customSpacing>\n                            </stackView>\n                        </subviews>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"qgL-I9-GFI\" secondAttribute=\"trailing\" id=\"AhX-PU-xYj\"/>\n                            <constraint firstItem=\"vFl-WV-0PG\" firstAttribute=\"leading\" secondItem=\"ClV-y2-fw5\" secondAttribute=\"leading\" id=\"X0E-iE-suG\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"vFl-WV-0PG\" secondAttribute=\"trailing\" id=\"aZm-Rs-VXM\"/>\n                            <constraint firstItem=\"qgL-I9-GFI\" firstAttribute=\"leading\" secondItem=\"ClV-y2-fw5\" secondAttribute=\"leading\" id=\"wo0-zK-Poy\"/>\n                        </constraints>\n                        <visibilityPriorities>\n                            <integer value=\"1000\"/>\n                            <integer value=\"1000\"/>\n                        </visibilityPriorities>\n                        <customSpacing>\n                            <real value=\"3.4028234663852886e+38\"/>\n                            <real value=\"3.4028234663852886e+38\"/>\n                        </customSpacing>\n                    </stackView>\n                </subviews>\n                <constraints>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"ClV-y2-fw5\" secondAttribute=\"bottom\" constant=\"20\" id=\"HzW-qB-h6X\"/>\n                    <constraint firstItem=\"ClV-y2-fw5\" firstAttribute=\"top\" secondItem=\"EiT-Mj-1SZ\" secondAttribute=\"top\" constant=\"20\" id=\"qSW-7I-w9b\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"ClV-y2-fw5\" secondAttribute=\"trailing\" constant=\"20\" id=\"w5o-ct-9SO\"/>\n                    <constraint firstItem=\"ClV-y2-fw5\" firstAttribute=\"leading\" secondItem=\"EiT-Mj-1SZ\" secondAttribute=\"leading\" constant=\"20\" id=\"wAv-6C-RwW\"/>\n                </constraints>\n            </view>\n            <connections>\n                <outlet property=\"delegate\" destination=\"-2\" id=\"fGU-n7-Clk\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"232.5\" y=\"376\"/>\n        </window>\n        <userDefaultsController representsSharedInstance=\"YES\" id=\"VIO-0n-UUv\"/>\n    </objects>\n</document>\n"
  },
  {
    "path": "TodoTxtMac/TTMFiltersController.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n@class TTMAppController;\n\n@interface TTMFiltersController : NSWindowController <NSWindowDelegate>\n\n@property (nonatomic, retain) IBOutlet NSTabView *tabView;\n\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter1PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter2PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter3PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter4PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter5PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter6PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter7PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter8PredicateEditor;\n@property (nonatomic, retain) IBOutlet NSPredicateEditor *filter9PredicateEditor;\n\n/*!\n * @method resetAllFilters:\n * @abstract This method allows the user to clear/reset all filters.\n */\n- (IBAction)resetAllFilters:(id)sender;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFiltersController.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMFiltersController.h\"\n#import \"TTMFilterPredicates.h\"\n\n@implementation TTMFiltersController\n\n- (id)initWithWindow:(NSWindow *)window {\n    self = [super initWithWindow:window];\n    if (self) {\n        // Initialization code here.\n    }\n    return self;\n}\n\n- (IBAction)resetAllFilters:(id)sender {\n    NSAlert *resetPrompt = [[NSAlert alloc] init];\n    resetPrompt.messageText = @\"Clear all filters\";\n    resetPrompt.informativeText = @\"Are you sure you want to do this? You will lose all filter customizations.\";\n    [resetPrompt addButtonWithTitle:@\"OK\"];\n    [resetPrompt addButtonWithTitle:@\"Cancel\"];\n    [resetPrompt beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) {\n        if (returnCode == NSAlertFirstButtonReturn) {\n            [TTMFilterPredicates resetAllFilterPredicates];\n            // Reload all the filter predicate editors because\n            // the one with focus at the time this method is executed\n            // will not be cleared. This is only really necessary to\n            // call on the predicate editor with focus.\n            [self reloadAllPredicateEditors];\n        }\n    }];\n}\n\n- (void)reloadAllPredicateEditors {\n    [self.filter1PredicateEditor reloadCriteria];\n    [self.filter2PredicateEditor reloadCriteria];\n    [self.filter3PredicateEditor reloadCriteria];\n    [self.filter4PredicateEditor reloadCriteria];\n    [self.filter5PredicateEditor reloadCriteria];\n    [self.filter6PredicateEditor reloadCriteria];\n    [self.filter7PredicateEditor reloadCriteria];\n    [self.filter8PredicateEditor reloadCriteria];\n    [self.filter9PredicateEditor reloadCriteria];\n}\n\n#pragma mark - Window Delegate Methods\n\n- (void)keyDown:(NSEvent *)theEvent {\n    NSUInteger flags = [theEvent modifierFlags];\n    NSString *passedChar = [theEvent charactersIgnoringModifiers];\n\n    if ((flags & NSCommandKeyMask) &&\n        (flags & NSShiftKeyMask) &&\n        ([passedChar isEqualToString:@\"{\"])) {\n        [self.tabView selectPreviousTabViewItem:self];\n        return;\n    }\n\n    if ((flags & NSCommandKeyMask) &&\n        (flags & NSShiftKeyMask) &&\n        ([passedChar isEqualToString:@\"}\"])) {\n        [self.tabView selectNextTabViewItem:self];\n        return;\n    }\n\n    [super keyDown:theEvent];\n}\n\n- (void)windowDidResignKey:(NSNotification *)notification {\n    [self forceFilterPredicateEditsToBeApplied];\n}\n\n- (void)forceFilterPredicateEditsToBeApplied {\n    if ([self.window.firstResponder isKindOfClass:[NSTextView class]]) {\n        [self.window.firstResponder insertNewline:self];\n    }\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMFindReplace.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"6254\" systemVersion=\"14C109\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"6254\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"TTMDocument\">\n            <connections>\n                <outlet property=\"findReplaceView\" destination=\"c22-O7-iKe\" id=\"dHF-Zx-Lco\"/>\n                <outlet property=\"findText\" destination=\"EZk-Ro-2Ws\" id=\"B3h-BK-7O0\"/>\n                <outlet property=\"replaceText\" destination=\"ekG-C0-hc1\" id=\"ELG-Mk-VZV\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <customView id=\"c22-O7-iKe\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"333\" height=\"88\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n            <subviews>\n                <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"5vg-Pd-q7f\">\n                    <rect key=\"frame\" x=\"-2\" y=\"48\" width=\"35\" height=\"17\"/>\n                    <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Find:\" id=\"xaj-Hz-own\">\n                        <font key=\"font\" metaFont=\"system\"/>\n                        <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                    </textFieldCell>\n                </textField>\n                <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"K9j-o1-3gM\">\n                    <rect key=\"frame\" x=\"-2\" y=\"23\" width=\"58\" height=\"17\"/>\n                    <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Replace:\" id=\"sGl-Bp-61i\">\n                        <font key=\"font\" metaFont=\"system\"/>\n                        <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                    </textFieldCell>\n                </textField>\n                <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"EZk-Ro-2Ws\">\n                    <rect key=\"frame\" x=\"62\" y=\"46\" width=\"271\" height=\"22\"/>\n                    <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"798-Tw-nZw\">\n                        <font key=\"font\" metaFont=\"system\"/>\n                        <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                    </textFieldCell>\n                </textField>\n                <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ekG-C0-hc1\">\n                    <rect key=\"frame\" x=\"62\" y=\"21\" width=\"271\" height=\"22\"/>\n                    <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"RQU-of-rRN\">\n                        <font key=\"font\" metaFont=\"system\"/>\n                        <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                        <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                    </textFieldCell>\n                </textField>\n            </subviews>\n            <constraints>\n                <constraint firstItem=\"K9j-o1-3gM\" firstAttribute=\"leading\" secondItem=\"5vg-Pd-q7f\" secondAttribute=\"leading\" id=\"7HM-Cp-Ooq\"/>\n                <constraint firstItem=\"ekG-C0-hc1\" firstAttribute=\"trailing\" secondItem=\"EZk-Ro-2Ws\" secondAttribute=\"trailing\" id=\"Cl5-fI-415\"/>\n                <constraint firstItem=\"ekG-C0-hc1\" firstAttribute=\"leading\" secondItem=\"EZk-Ro-2Ws\" secondAttribute=\"leading\" id=\"NDH-33-GOO\"/>\n                <constraint firstItem=\"EZk-Ro-2Ws\" firstAttribute=\"top\" secondItem=\"c22-O7-iKe\" secondAttribute=\"top\" constant=\"20\" symbolic=\"YES\" id=\"Ohf-6O-1fs\"/>\n                <constraint firstItem=\"5vg-Pd-q7f\" firstAttribute=\"leading\" secondItem=\"c22-O7-iKe\" secondAttribute=\"leading\" id=\"c7s-vo-Yav\"/>\n                <constraint firstItem=\"K9j-o1-3gM\" firstAttribute=\"top\" secondItem=\"5vg-Pd-q7f\" secondAttribute=\"bottom\" constant=\"8\" symbolic=\"YES\" id=\"gFW-sM-ZxT\"/>\n                <constraint firstItem=\"ekG-C0-hc1\" firstAttribute=\"leading\" secondItem=\"K9j-o1-3gM\" secondAttribute=\"trailing\" constant=\"8\" symbolic=\"YES\" id=\"hqU-2V-Gf1\"/>\n                <constraint firstAttribute=\"trailing\" secondItem=\"EZk-Ro-2Ws\" secondAttribute=\"trailing\" id=\"jMa-aJ-GH1\"/>\n                <constraint firstItem=\"EZk-Ro-2Ws\" firstAttribute=\"baseline\" secondItem=\"5vg-Pd-q7f\" secondAttribute=\"baseline\" id=\"jmY-ys-wLm\"/>\n                <constraint firstItem=\"K9j-o1-3gM\" firstAttribute=\"baseline\" secondItem=\"ekG-C0-hc1\" secondAttribute=\"baseline\" id=\"y6O-yc-6jh\"/>\n            </constraints>\n            <point key=\"canvasLocation\" x=\"238.5\" y=\"313\"/>\n        </customView>\n    </objects>\n</document>\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorCompletedRowTemplate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMPredicateEditorCompletedRowTemplate : NSPredicateEditorRowTemplate\n\n@property (nonatomic, retain) NSPopUpButton *keypathPopUp;\n@property (nonatomic, retain) NSPopUpButton *boolPopUp;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorCompletedRowTemplate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPredicateEditorCompletedRowTemplate.h\"\n\n@implementation TTMPredicateEditorCompletedRowTemplate\n\n#pragma mark - Class Property Getters\n\n- (NSPopUpButton*)keypathPopUp {\n\tif(!_keypathPopUp) {\n\t\tNSMenu *keypathMenu = [[NSMenu alloc]\n                               initWithTitle:@\"completed menu\"];\n        \n\t\tNSMenuItem *menuItem = [[NSMenuItem alloc]\n                                initWithTitle:@\"completed\"\n                                action:nil\n                                keyEquivalent:@\"\"];\n\t\t[menuItem setRepresentedObject:[NSExpression expressionForKeyPath:@\"completed\"]];\n\t\t[menuItem setEnabled:YES];\n\n        NSMenuItem *menuItem2 = [[NSMenuItem alloc]\n                                initWithTitle:@\"hidden\"\n                                action:nil\n                                keyEquivalent:@\"\"];\n        [menuItem2 setRepresentedObject:[NSExpression expressionForKeyPath:@\"isHidden\"]];\n        [menuItem2 setEnabled:YES];\n\n\t\t[keypathMenu addItem:menuItem];\n        [keypathMenu addItem:menuItem2];\n        \n\t\t_keypathPopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n\t\t[_keypathPopUp setMenu:keypathMenu];\n\t}\n\treturn _keypathPopUp;\n}\n\n- (NSPopUpButton*)boolPopUp {\n\tif (!_boolPopUp) {\n\t\tNSMenuItem *yesItem = [[NSMenuItem alloc] initWithTitle:@\"Yes\" action:nil keyEquivalent:@\"\"];\n\t\t[yesItem setRepresentedObject:[NSExpression expressionForConstantValue:@YES]];\n\t\t[yesItem setEnabled:YES];\n\t\t[yesItem setTag:1];\n        \n\t\tNSMenuItem *noItem = [[NSMenuItem alloc] initWithTitle:@\"No\" action:nil keyEquivalent:@\"\"];\n\t\t[noItem setRepresentedObject:[NSExpression expressionForConstantValue:@NO]];\n\t\t[noItem setEnabled:YES];\n\t\t[noItem setTag:0];\n        \n        NSMenu *boolMenu = [[NSMenu alloc] initWithTitle:@\"Yes/No\"];\n\t\t[boolMenu addItem:yesItem];\n\t\t[boolMenu addItem:noItem];\n        \n\t\t_boolPopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n\t\t[_boolPopUp setMenu:boolMenu];\n\t}\n\treturn _boolPopUp;\n}\n\n#pragma mark - NSPredicateEditorRowTemplate Method Overrides\n\n- (NSArray*)templateViews {\n    NSMutableArray *newTemplateViews = [[super templateViews] mutableCopy];\n    [newTemplateViews replaceObjectAtIndex:0 withObject:self.keypathPopUp];\n    [newTemplateViews replaceObjectAtIndex:2 withObject:self.boolPopUp];\n    return newTemplateViews;\n}\n\n- (void)setPredicate:(NSPredicate*)predicate {\n    id rightValue = [[(NSComparisonPredicate*)predicate rightExpression] constantValue];\n    if ([rightValue isKindOfClass:[NSNumber class]]) {\n        [self.boolPopUp selectItemWithTag:[rightValue integerValue]];\n    }\n}\n\n- (NSPredicate*)predicateWithSubpredicates:(NSArray*)subpredicates {\n\tNSPredicate *newPredicate =\n        [NSComparisonPredicate\n         predicateWithLeftExpression:[[self.keypathPopUp selectedItem] representedObject]\n         rightExpression:[[self.boolPopUp selectedItem] representedObject]\n         modifier:NSDirectPredicateModifier\n         type:NSEqualToPredicateOperatorType\n         options:0];\n\treturn newPredicate;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorDateRowTemplate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMPredicateEditorDateRowTemplate : NSPredicateEditorRowTemplate\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorDateRowTemplate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPredicateEditorDateRowTemplate.h\"\n#import \"TTMDateUtility.h\"\n\n@implementation TTMPredicateEditorDateRowTemplate\n\n- (NSPredicate*)predicateWithSubpredicates:(NSArray *)subpredicates {\n    NSPredicate *p = [super predicateWithSubpredicates:subpredicates];\n\n    if ([p isKindOfClass:[NSComparisonPredicate class]]) {\n        \n        // Get the date value from the \"right\" comparison property.\n        NSComparisonPredicate *comparison = (NSComparisonPredicate*)p;\n        NSExpression *right = [comparison rightExpression];\n        NSDate *dateValue = [right constantValue];\n        \n        // Set the \"right\" comparison property to its date value stripped of its time part\n        // (that is, as of 00:00:00).\n        NSDate *dateWithoutTime = [TTMDateUtility dateWithoutTime:dateValue];\n        right = [NSExpression expressionForConstantValue:dateWithoutTime];\n        p = [NSComparisonPredicate\n             predicateWithLeftExpression:[comparison leftExpression]\n                         rightExpression:right\n                                modifier:[comparison comparisonPredicateModifier]\n                                    type:[comparison predicateOperatorType]\n                                 options:[comparison options]];\n    }\n    return p;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorDueRowTemplate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMPredicateEditorDueRowTemplate : NSPredicateEditorRowTemplate\n\n@property (nonatomic, retain) NSPopUpButton *keypathPopUp;\n@property (nonatomic, retain) NSPopUpButton *dueStatePopUp;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorDueRowTemplate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPredicateEditorDueRowTemplate.h\"\n#import \"TTMTask.h\"\n\n@implementation TTMPredicateEditorDueRowTemplate\n\n#pragma mark - Class Property Getters\n\n- (NSPopUpButton*)keypathPopUp {\n\tif(!_keypathPopUp) {\n\t\tNSMenu *keypathMenu = [[NSMenu alloc]\n                               initWithTitle:@\"due state menu\"];\n        \n\t\tNSMenuItem *menuItem = [[NSMenuItem alloc]\n                                initWithTitle:@\"due state\"\n                                action:nil\n                                keyEquivalent:@\"\"];\n\t\t[menuItem setRepresentedObject:[NSExpression expressionForKeyPath:@\"dueState\"]];\n\t\t[menuItem setEnabled:YES];\n        \n\t\t[keypathMenu addItem:menuItem];\n        \n\t\t_keypathPopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n\t\t[_keypathPopUp setMenu:keypathMenu];\n\t}\n\treturn _keypathPopUp;\n}\n\n- (NSPopUpButton*)dueStatePopUp {\n\tif (!_dueStatePopUp) {\n\t\tNSMenuItem *dueTodayItem = [[NSMenuItem alloc] initWithTitle:@\"due today\"\n                                                              action:nil\n                                                       keyEquivalent:@\"\"];\n\t\t[dueTodayItem setRepresentedObject:[NSExpression expressionForConstantValue:@(DueToday)]];\n\t\t[dueTodayItem setEnabled:YES];\n\t\t[dueTodayItem setTag:(long)DueToday];\n\n\t\tNSMenuItem *overdueItem = [[NSMenuItem alloc] initWithTitle:@\"overdue\"\n                                                              action:nil\n                                                       keyEquivalent:@\"\"];\n\t\t[overdueItem setRepresentedObject:[NSExpression expressionForConstantValue:@(Overdue)]];\n\t\t[overdueItem setEnabled:YES];\n\t\t[overdueItem setTag:(long)Overdue];\n        \n\t\tNSMenuItem *notDueItem = [[NSMenuItem alloc] initWithTitle:@\"not due\"\n                                                              action:nil\n                                                       keyEquivalent:@\"\"];\n\t\t[notDueItem setRepresentedObject:[NSExpression expressionForConstantValue:@(NotDue)]];\n\t\t[notDueItem setEnabled:YES];\n\t\t[notDueItem setTag:(long)NotDue];\n\n        NSMenuItem *noDueDateItem = [[NSMenuItem alloc] initWithTitle:@\"no due date\"\n                                                            action:nil\n                                                     keyEquivalent:@\"\"];\n        [noDueDateItem setRepresentedObject:[NSExpression expressionForConstantValue:@(NoDueDate)]];\n        [noDueDateItem setEnabled:YES];\n        [noDueDateItem setTag:(long)NoDueDate];\n        \n        NSMenu *dueStateMenu = [[NSMenu alloc] initWithTitle:@\"Due State\"];\n\t\t[dueStateMenu addItem:dueTodayItem];\n\t\t[dueStateMenu addItem:overdueItem];\n        [dueStateMenu addItem:notDueItem];\n        [dueStateMenu addItem:noDueDateItem];\n        \n\t\t_dueStatePopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n\t\t[_dueStatePopUp setMenu:dueStateMenu];\n\t}\n\treturn _dueStatePopUp;\n}\n\n#pragma mark - NSPredicateEditorRowTemplate Method Overrides\n\n- (NSArray*)templateViews {\n    NSMutableArray *newTemplateViews = [[super templateViews] mutableCopy];\n    [newTemplateViews replaceObjectAtIndex:0 withObject:self.keypathPopUp];\n    [newTemplateViews replaceObjectAtIndex:2 withObject:self.dueStatePopUp];\n    return newTemplateViews;\n}\n\n- (void)setPredicate:(NSPredicate *)predicate {\n    id rightValue = [[(NSComparisonPredicate*)predicate rightExpression] constantValue];\n    if ([rightValue isKindOfClass:[NSNumber class]]) {\n        [self.dueStatePopUp selectItemWithTag:[rightValue integerValue]];\n    }\n}\n\n- (NSPredicate*)predicateWithSubpredicates:(NSArray*)subpredicates {\n    NSPredicate *p = [super predicateWithSubpredicates:subpredicates];\n    NSComparisonPredicate *comparison = (NSComparisonPredicate*)p;\n\tNSPredicate *newPredicate =\n        [NSComparisonPredicate\n         predicateWithLeftExpression:[[self.keypathPopUp selectedItem] representedObject]\n         rightExpression:[[self.dueStatePopUp selectedItem] representedObject]\n         modifier:[comparison comparisonPredicateModifier]\n         type:[comparison predicateOperatorType]\n         options:[comparison options]];\n\treturn newPredicate;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorHiddenRowTemplate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMPredicateEditorHiddenRowTemplate : NSPredicateEditorRowTemplate\n\n@property (nonatomic, retain) NSPopUpButton *keypathPopUp;\n@property (nonatomic, retain) NSPopUpButton *boolPopUp;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorHiddenRowTemplate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPredicateEditorHiddenRowTemplate.h\"\n\n@implementation TTMPredicateEditorHiddenRowTemplate\n\n#pragma mark - Class Property Getters\n\n- (NSPopUpButton*)keypathPopUp {\n    if(!_keypathPopUp) {\n        NSMenu *keypathMenu = [[NSMenu alloc]\n                               initWithTitle:@\"hidden menu\"];\n\n        NSMenuItem *menuItem = [[NSMenuItem alloc]\n                                 initWithTitle:@\"hidden\"\n                                 action:nil\n                                 keyEquivalent:@\"\"];\n        [menuItem setRepresentedObject:[NSExpression expressionForKeyPath:@\"isHidden\"]];\n        [menuItem setEnabled:YES];\n        \n        [keypathMenu addItem:menuItem];\n        \n        _keypathPopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n        [_keypathPopUp setMenu:keypathMenu];\n    }\n    return _keypathPopUp;\n}\n\n- (NSPopUpButton*)boolPopUp {\n    if (!_boolPopUp) {\n        NSMenuItem *yesItem = [[NSMenuItem alloc] initWithTitle:@\"Yes\" action:nil keyEquivalent:@\"\"];\n        [yesItem setRepresentedObject:[NSExpression expressionForConstantValue:@YES]];\n        [yesItem setEnabled:YES];\n        [yesItem setTag:1];\n        \n        NSMenuItem *noItem = [[NSMenuItem alloc] initWithTitle:@\"No\" action:nil keyEquivalent:@\"\"];\n        [noItem setRepresentedObject:[NSExpression expressionForConstantValue:@NO]];\n        [noItem setEnabled:YES];\n        [noItem setTag:0];\n        \n        NSMenu *boolMenu = [[NSMenu alloc] initWithTitle:@\"Yes/No\"];\n        [boolMenu addItem:yesItem];\n        [boolMenu addItem:noItem];\n        \n        _boolPopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n        [_boolPopUp setMenu:boolMenu];\n    }\n    return _boolPopUp;\n}\n\n#pragma mark - NSPredicateEditorRowTemplate Method Overrides\n\n- (NSArray*)templateViews {\n    NSMutableArray *newTemplateViews = [[super templateViews] mutableCopy];\n    [newTemplateViews replaceObjectAtIndex:0 withObject:self.keypathPopUp];\n    [newTemplateViews replaceObjectAtIndex:2 withObject:self.boolPopUp];\n    return newTemplateViews;\n}\n\n- (void)setPredicate:(NSPredicate*)predicate {\n    id rightValue = [[(NSComparisonPredicate*)predicate rightExpression] constantValue];\n    if ([rightValue isKindOfClass:[NSNumber class]]) {\n        [self.boolPopUp selectItemWithTag:[rightValue integerValue]];\n    }\n}\n\n- (NSPredicate*)predicateWithSubpredicates:(NSArray*)subpredicates {\n    NSPredicate *newPredicate =\n    [NSComparisonPredicate\n     predicateWithLeftExpression:[[self.keypathPopUp selectedItem] representedObject]\n     rightExpression:[[self.boolPopUp selectedItem] representedObject]\n     modifier:NSDirectPredicateModifier\n     type:NSEqualToPredicateOperatorType\n     options:0];\n    return newPredicate;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorTextRowTemplate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2016 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMPredicateEditorTextRowTemplate : NSPredicateEditorRowTemplate\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorTextRowTemplate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2016 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPredicateEditorTextRowTemplate.h\"\n\n@implementation TTMPredicateEditorTextRowTemplate\n\nNSString *const inFormatPrefix = @\"rawText IN[cd]\";\nNSString *const notContainsFormatPrefix = @\"NOT rawText CONTAINS[cd]\";\n\n#pragma mark - NSPredicateEditorRowTemplate Method Overrides\n\n- (double)matchForPredicate:(NSPredicate *)predicate {\n    if ([predicate.predicateFormat hasPrefix:notContainsFormatPrefix]) {\n        return 0.4;\n    }\n    return [super matchForPredicate:predicate];\n}\n\n- (void)setPredicate:(NSPredicate*)predicate {\n    if ([predicate.predicateFormat hasPrefix:notContainsFormatPrefix]) {\n        NSPredicate *newPredicate = [self swapPredicateFormatPrefix:notContainsFormatPrefix withPrefix:inFormatPrefix forPredicate:predicate];\n        [super setPredicate:newPredicate];\n        return;\n    }\n\n    [super setPredicate:predicate];\n}\n\n- (NSPredicate*)predicateWithSubpredicates:(NSArray*)subpredicates {\n    NSPredicate *predicate = [super predicateWithSubpredicates:subpredicates];\n    return [self swapPredicateFormatPrefix:inFormatPrefix withPrefix:notContainsFormatPrefix forPredicate:predicate];\n}\n\n- (NSPredicate*)swapPredicateFormatPrefix:(NSString*)oldPrefix withPrefix:(NSString*)newPrefix forPredicate:(NSPredicate*)predicate {\n    NSString *predicateFormat = predicate.predicateFormat;\n    if ([predicateFormat hasPrefix:oldPrefix]) {\n        NSRange oldPrefixRange = [predicateFormat rangeOfString:oldPrefix];\n        NSString *newFormat = [predicateFormat stringByReplacingOccurrencesOfString:oldPrefix withString:newPrefix options:0 range:oldPrefixRange];\n        NSPredicate *newPredicate = [NSPredicate predicateWithFormat:newFormat];\n        return newPredicate;\n    }\n\n    return predicate;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorThresholdRowTemplate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface TTMPredicateEditorThresholdRowTemplate : NSPredicateEditorRowTemplate\n\n@property (nonatomic, retain) NSPopUpButton *keypathPopUp;\n@property (nonatomic, retain) NSPopUpButton *thresholdStatePopUp;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPredicateEditorThresholdRowTemplate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPredicateEditorThresholdRowTemplate.h\"\n#import \"TTMTask.h\"\n\n@implementation TTMPredicateEditorThresholdRowTemplate\n\n#pragma mark - Class Property Getters\n\n- (NSPopUpButton*)keypathPopUp {\n    if(!_keypathPopUp) {\n        NSMenu *keypathMenu = [[NSMenu alloc]\n                               initWithTitle:@\"threshold state menu\"];\n        \n        NSMenuItem *menuItem = [[NSMenuItem alloc]\n                                initWithTitle:@\"threshold state\"\n                                action:nil\n                                keyEquivalent:@\"\"];\n        [menuItem setRepresentedObject:[NSExpression expressionForKeyPath:@\"thresholdState\"]];\n        [menuItem setEnabled:YES];\n        \n        [keypathMenu addItem:menuItem];\n        \n        _keypathPopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n        [_keypathPopUp setMenu:keypathMenu];\n    }\n    return _keypathPopUp;\n}\n\n- (NSPopUpButton*)thresholdStatePopUp {\n    if (!_thresholdStatePopUp) {\n        NSMenuItem *noThresholdDateItem = [[NSMenuItem alloc]\n                                         initWithTitle:@\"no threshold date\"\n                                         action:nil\n                                         keyEquivalent:@\"\"];\n        [noThresholdDateItem setRepresentedObject:[NSExpression\n                                                 expressionForConstantValue:@(NoThresholdDate)]];\n        [noThresholdDateItem setEnabled:YES];\n        [noThresholdDateItem setTag:(long)NoThresholdDate];\n\n        NSMenuItem *thresholdBeforeToday = [[NSMenuItem alloc]\n                                           initWithTitle:@\"threshold before today\"\n                                           action:nil\n                                           keyEquivalent:@\"\"];\n        [thresholdBeforeToday setRepresentedObject:[NSExpression\n                                                   expressionForConstantValue:@(ThresholdBeforeToday)]];\n        [thresholdBeforeToday setEnabled:YES];\n        [thresholdBeforeToday setTag:(long)ThresholdBeforeToday];\n        \n        NSMenuItem *thresholdIsTodayItem = [[NSMenuItem alloc]\n                                          initWithTitle:@\"threshold is today\"\n                                                 action:nil\n                                          keyEquivalent:@\"\"];\n        [thresholdIsTodayItem setRepresentedObject:[NSExpression\n                                                  expressionForConstantValue:@(ThresholdIsToday)]];\n        [thresholdIsTodayItem setEnabled:YES];\n        [thresholdIsTodayItem setTag:(long)ThresholdIsToday];\n        \n        NSMenuItem *thresholdAfterTodayItem = [[NSMenuItem alloc]\n                                           initWithTitle:@\"threshold after today\"\n                                                  action:nil\n                                           keyEquivalent:@\"\"];\n        [thresholdAfterTodayItem setRepresentedObject:[NSExpression\n                                                   expressionForConstantValue:@(\n                                                   ThresholdAfterToday)]];\n        [thresholdAfterTodayItem setEnabled:YES];\n        [thresholdAfterTodayItem setTag:(long)ThresholdAfterToday];\n        \n        NSMenu *thresholdStateMenu = [[NSMenu alloc]\n                                      initWithTitle:@\"Threshold State\"];\n        [thresholdStateMenu addItem:noThresholdDateItem];\n        [thresholdStateMenu addItem:thresholdBeforeToday];\n        [thresholdStateMenu addItem:thresholdIsTodayItem];\n        [thresholdStateMenu addItem:thresholdAfterTodayItem];\n        \n        _thresholdStatePopUp = [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO];\n        [_thresholdStatePopUp setMenu:thresholdStateMenu];\n    }\n    return _thresholdStatePopUp;\n}\n\n#pragma mark - NSPredicateEditorRowTemplate Method Overrides\n\n- (NSArray*)templateViews {\n    NSMutableArray *newTemplateViews = [[super templateViews] mutableCopy];\n    [newTemplateViews replaceObjectAtIndex:0 withObject:self.keypathPopUp];\n    [newTemplateViews replaceObjectAtIndex:2 withObject:self.thresholdStatePopUp];\n    return newTemplateViews;\n}\n\n- (void)setPredicate:(NSPredicate *)predicate {\n    id rightValue = [[(NSComparisonPredicate*)predicate rightExpression] constantValue];\n    if ([rightValue isKindOfClass:[NSNumber class]]) {\n        [self.thresholdStatePopUp selectItemWithTag:[rightValue integerValue]];\n    }\n}\n\n- (NSPredicate*)predicateWithSubpredicates:(NSArray*)subpredicates {\n    NSPredicate *p = [super predicateWithSubpredicates:subpredicates];\n    NSComparisonPredicate *comparison = (NSComparisonPredicate*)p;\n    NSPredicate *newPredicate =\n    [NSComparisonPredicate\n     predicateWithLeftExpression:[[self.keypathPopUp selectedItem] representedObject]\n     rightExpression:[[self.thresholdStatePopUp selectedItem] representedObject]\n     modifier:[comparison comparisonPredicateModifier]\n     type:[comparison predicateOperatorType]\n     options:[comparison options]];\n    return newPredicate;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPreferences.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"10117\" systemVersion=\"15G31\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"10117\"/>\n        <capability name=\"box content view\" minToolsVersion=\"7.0\"/>\n        <capability name=\"stacking Non-gravity area distributions on NSStackView\" minToolsVersion=\"7.0\" minSystemVersion=\"10.11\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"TTMPreferencesController\">\n            <connections>\n                <outlet property=\"appController\" destination=\"cda-0y-TXV\" id=\"g2i-w3-ifB\"/>\n                <outlet property=\"statusBarFormat\" destination=\"dps-Ov-KIp\" id=\"9Vn-07-bZb\"/>\n                <outlet property=\"statusBarTags\" destination=\"AAU-j7-nuS\" id=\"Rjg-Yg-D5e\"/>\n                <outlet property=\"window\" destination=\"QvC-M9-y7g\" id=\"NDZ-dg-79d\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Preferences\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" oneShot=\"NO\" releasedWhenClosed=\"NO\" visibleAtLaunch=\"NO\" frameAutosaveName=\"TTMPreferences\" animationBehavior=\"default\" id=\"QvC-M9-y7g\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"630\" height=\"448\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"2560\" height=\"1417\"/>\n            <view key=\"contentView\" id=\"EiT-Mj-1SZ\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"630\" height=\"448\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                <subviews>\n                    <tabView verticalCompressionResistancePriority=\"751\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"y76-Kz-NYB\">\n                        <rect key=\"frame\" x=\"3\" y=\"0.0\" width=\"624\" height=\"444\"/>\n                        <font key=\"font\" metaFont=\"system\"/>\n                        <tabViewItems>\n                            <tabViewItem label=\"Files\" identifier=\"0\" id=\"L8o-bt-LMa\" userLabel=\"Files\">\n                                <view key=\"view\" id=\"kDW-tT-Mxi\">\n                                    <rect key=\"frame\" x=\"10\" y=\"33\" width=\"604\" height=\"420\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <stackView distribution=\"fillProportionally\" orientation=\"vertical\" alignment=\"leading\" spacing=\"12\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6Ky-Vz-equ\">\n                                            <rect key=\"frame\" x=\"10\" y=\"10\" width=\"584\" height=\"400\"/>\n                                            <subviews>\n                                                <box title=\"Default todo.txt file (optional)\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fTt-8Z-Eaa\" userLabel=\"Default todo.txt file Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"202\" width=\"570\" height=\"198\"/>\n                                                    <view key=\"contentView\" id=\"rip-cf-LYb\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"182\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Xxd-gI-kIv\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"131\" width=\"548\" height=\"41\"/>\n                                                                <subviews>\n                                                                    <stackView orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QEV-IA-Nkb\" userLabel=\"Default File Stack View\">\n                                                                        <rect key=\"frame\" x=\"0.0\" y=\"22\" width=\"548\" height=\"19\"/>\n                                                                        <beginningViews>\n                                                                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ibn-uO-HXl\">\n                                                                                <rect key=\"frame\" x=\"-2\" y=\"1\" width=\"74\" height=\"17\"/>\n                                                                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Default file:\" id=\"E9J-yc-K3H\">\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                            </textField>\n                                                                        </beginningViews>\n                                                                        <middleViews>\n                                                                            <textField horizontalHuggingPriority=\"1\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8Tp-oa-L2w\">\n                                                                                <rect key=\"frame\" x=\"92\" y=\"0.0\" width=\"364\" height=\"19\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"height\" constant=\"19\" id=\"tpc-B7-pDs\"/>\n                                                                                </constraints>\n                                                                                <textFieldCell key=\"cell\" controlSize=\"small\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" title=\"Default File\" placeholderString=\"Default file (todo.txt)\" drawsBackground=\"YES\" id=\"mqs-ny-Nb9\">\n                                                                                    <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                                    <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                                <connections>\n                                                                                    <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.defaultTodoFilePath\" id=\"lWL-RG-nUz\"/>\n                                                                                </connections>\n                                                                            </textField>\n                                                                        </middleViews>\n                                                                        <endViews>\n                                                                            <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Tzr-c2-lHB\">\n                                                                                <rect key=\"frame\" x=\"458\" y=\"-7\" width=\"96\" height=\"30\"/>\n                                                                                <buttonCell key=\"cell\" type=\"push\" title=\"Browse...\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"1Od-IU-0xH\">\n                                                                                    <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <connections>\n                                                                                        <action selector=\"chooseDefaultTodoFile:\" target=\"-2\" id=\"Y5y-jY-fFR\"/>\n                                                                                    </connections>\n                                                                                </buttonCell>\n                                                                            </button>\n                                                                        </endViews>\n                                                                        <constraints>\n                                                                            <constraint firstItem=\"8Tp-oa-L2w\" firstAttribute=\"top\" secondItem=\"QEV-IA-Nkb\" secondAttribute=\"top\" id=\"1Ob-RU-3IH\"/>\n                                                                            <constraint firstAttribute=\"bottom\" secondItem=\"8Tp-oa-L2w\" secondAttribute=\"bottom\" id=\"5Ny-KV-p0N\"/>\n                                                                        </constraints>\n                                                                        <visibilityPriorities>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                        </visibilityPriorities>\n                                                                        <customSpacing>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                        </customSpacing>\n                                                                    </stackView>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kiN-tj-bg5\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"-2\" width=\"239\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Open default todo.txt file on startup\" bezelStyle=\"regularSquare\" imagePosition=\"left\" inset=\"2\" id=\"nBZ-8E-wmN\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                            <connections>\n                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.openDefaultTodoFileOnStartup\" id=\"TGA-oe-nb7\"/>\n                                                                            </connections>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.openDefaultTodoFileOnStartup\" id=\"H6i-hS-Ep0\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                </subviews>\n                                                                <constraints>\n                                                                    <constraint firstItem=\"QEV-IA-Nkb\" firstAttribute=\"leading\" secondItem=\"Xxd-gI-kIv\" secondAttribute=\"leading\" id=\"AaI-AI-hoA\"/>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"QEV-IA-Nkb\" secondAttribute=\"trailing\" id=\"WHG-DX-Rh8\"/>\n                                                                </constraints>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstItem=\"Xxd-gI-kIv\" firstAttribute=\"top\" secondItem=\"rip-cf-LYb\" secondAttribute=\"top\" constant=\"10\" id=\"0XT-OO-0DW\"/>\n                                                            <constraint firstItem=\"Xxd-gI-kIv\" firstAttribute=\"leading\" secondItem=\"rip-cf-LYb\" secondAttribute=\"leading\" constant=\"10\" id=\"AnN-i8-zAK\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"Xxd-gI-kIv\" secondAttribute=\"trailing\" constant=\"10\" id=\"dNO-0X-RZG\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                                <box title=\"Archive file (done.txt)\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"BF2-7M-dnr\" userLabel=\"Archive file (done.txt) Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"-4\" width=\"570\" height=\"198\"/>\n                                                    <view key=\"contentView\" id=\"WrR-WC-GsK\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"182\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"sfr-8a-zUH\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"131\" width=\"548\" height=\"41\"/>\n                                                                <subviews>\n                                                                    <stackView orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3oP-vL-K4R\" userLabel=\"Archive File Stack View\">\n                                                                        <rect key=\"frame\" x=\"0.0\" y=\"22\" width=\"548\" height=\"19\"/>\n                                                                        <beginningViews>\n                                                                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"EbF-No-8Sl\">\n                                                                                <rect key=\"frame\" x=\"-2\" y=\"1\" width=\"76\" height=\"17\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"width\" constant=\"72\" id=\"ipS-TD-5uu\"/>\n                                                                                </constraints>\n                                                                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Archive file:\" id=\"dO7-fz-ew6\">\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                            </textField>\n                                                                        </beginningViews>\n                                                                        <middleViews>\n                                                                            <textField horizontalHuggingPriority=\"1\" verticalHuggingPriority=\"750\" horizontalCompressionResistancePriority=\"250\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kLG-5x-TgF\">\n                                                                                <rect key=\"frame\" x=\"92\" y=\"0.0\" width=\"364\" height=\"19\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"height\" constant=\"19\" id=\"hcI-Nb-Xph\"/>\n                                                                                </constraints>\n                                                                                <textFieldCell key=\"cell\" controlSize=\"small\" sendsActionOnEndEditing=\"YES\" borderStyle=\"bezel\" title=\"Archive file\" placeholderString=\"Archive file (done.txt)\" drawsBackground=\"YES\" id=\"ER5-Fw-tUr\">\n                                                                                    <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                                    <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                                <connections>\n                                                                                    <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.archiveFilePath\" id=\"1Nn-Oc-AMn\"/>\n                                                                                </connections>\n                                                                            </textField>\n                                                                        </middleViews>\n                                                                        <endViews>\n                                                                            <button verticalHuggingPriority=\"750\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7Xb-Wn-oSq\">\n                                                                                <rect key=\"frame\" x=\"458\" y=\"-7\" width=\"96\" height=\"30\"/>\n                                                                                <buttonCell key=\"cell\" type=\"push\" title=\"Browse...\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"Hif-CU-wHj\">\n                                                                                    <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                </buttonCell>\n                                                                                <connections>\n                                                                                    <action selector=\"chooseArchiveFile:\" target=\"-2\" id=\"eJS-Fo-tgG\"/>\n                                                                                </connections>\n                                                                            </button>\n                                                                        </endViews>\n                                                                        <constraints>\n                                                                            <constraint firstItem=\"kLG-5x-TgF\" firstAttribute=\"top\" secondItem=\"3oP-vL-K4R\" secondAttribute=\"top\" id=\"9hK-rh-lNF\"/>\n                                                                            <constraint firstAttribute=\"bottom\" secondItem=\"kLG-5x-TgF\" secondAttribute=\"bottom\" id=\"bEg-Vf-BHP\"/>\n                                                                        </constraints>\n                                                                        <visibilityPriorities>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                        </visibilityPriorities>\n                                                                        <customSpacing>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                        </customSpacing>\n                                                                    </stackView>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Gob-0a-fcd\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"-2\" width=\"208\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Archive tasks upon completion\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"yjz-ct-IkY\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.archiveTasksUponCompletion\" id=\"EZh-YG-UnL\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                </subviews>\n                                                                <constraints>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"3oP-vL-K4R\" secondAttribute=\"trailing\" id=\"M0q-i0-YDg\"/>\n                                                                    <constraint firstItem=\"3oP-vL-K4R\" firstAttribute=\"leading\" secondItem=\"sfr-8a-zUH\" secondAttribute=\"leading\" id=\"Nxp-FB-B7c\"/>\n                                                                </constraints>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstItem=\"sfr-8a-zUH\" firstAttribute=\"leading\" secondItem=\"WrR-WC-GsK\" secondAttribute=\"leading\" constant=\"10\" id=\"Fai-CB-tPE\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"sfr-8a-zUH\" secondAttribute=\"trailing\" constant=\"10\" id=\"hGS-re-ukR\"/>\n                                                            <constraint firstItem=\"sfr-8a-zUH\" firstAttribute=\"top\" secondItem=\"WrR-WC-GsK\" secondAttribute=\"top\" constant=\"10\" id=\"j1K-ac-M83\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstAttribute=\"height\" constant=\"400\" id=\"92h-kS-r74\"/>\n                                                <constraint firstItem=\"fTt-8Z-Eaa\" firstAttribute=\"leading\" secondItem=\"6Ky-Vz-equ\" secondAttribute=\"leading\" constant=\"10\" id=\"Lx3-WE-AIY\"/>\n                                                <constraint firstItem=\"BF2-7M-dnr\" firstAttribute=\"leading\" secondItem=\"6Ky-Vz-equ\" secondAttribute=\"leading\" constant=\"10\" id=\"UTF-Ev-hDL\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"BF2-7M-dnr\" secondAttribute=\"trailing\" constant=\"10\" id=\"UZC-iM-fsL\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"fTt-8Z-Eaa\" secondAttribute=\"trailing\" constant=\"10\" id=\"xUl-hd-7wL\"/>\n                                            </constraints>\n                                            <visibilityPriorities>\n                                                <integer value=\"1000\"/>\n                                                <integer value=\"1000\"/>\n                                            </visibilityPriorities>\n                                            <customSpacing>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                            </customSpacing>\n                                        </stackView>\n                                    </subviews>\n                                    <constraints>\n                                        <constraint firstAttribute=\"trailing\" secondItem=\"6Ky-Vz-equ\" secondAttribute=\"trailing\" constant=\"10\" id=\"W8v-TB-Qto\"/>\n                                        <constraint firstItem=\"6Ky-Vz-equ\" firstAttribute=\"top\" secondItem=\"kDW-tT-Mxi\" secondAttribute=\"top\" constant=\"10\" id=\"clo-4e-vtj\"/>\n                                        <constraint firstItem=\"6Ky-Vz-equ\" firstAttribute=\"leading\" secondItem=\"kDW-tT-Mxi\" secondAttribute=\"leading\" constant=\"10\" id=\"uyC-ia-py7\"/>\n                                        <constraint firstAttribute=\"bottom\" secondItem=\"6Ky-Vz-equ\" secondAttribute=\"bottom\" constant=\"10\" id=\"x7V-Sd-At5\"/>\n                                    </constraints>\n                                </view>\n                            </tabViewItem>\n                            <tabViewItem label=\"Behavior\" identifier=\"6\" id=\"QYf-9f-Vd3\" userLabel=\"Behavior\">\n                                <view key=\"view\" id=\"ADq-m3-TeV\">\n                                    <rect key=\"frame\" x=\"10\" y=\"33\" width=\"604\" height=\"420\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <stackView distribution=\"fillProportionally\" orientation=\"vertical\" alignment=\"leading\" spacing=\"12\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uWq-47-nKi\">\n                                            <rect key=\"frame\" x=\"10\" y=\"10\" width=\"584\" height=\"400\"/>\n                                            <subviews>\n                                                <box verticalCompressionResistancePriority=\"756\" title=\"Application behaviors\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"yed-2J-abW\" userLabel=\"Application Behaviors Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"220\" width=\"570\" height=\"180\"/>\n                                                    <view key=\"contentView\" id=\"9wR-vg-DnJ\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"164\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"12\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"shz-AI-b3R\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"10\" width=\"548\" height=\"144\"/>\n                                                                <subviews>\n                                                                    <button verticalHuggingPriority=\"249\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"jj2-Ob-EWZ\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"128\" width=\"246\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Prepend date on newly created tasks\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"Io7-mh-1Cc\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.prependDateOnNewTasks\" id=\"7fz-Ob-fys\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"wFd-n2-OjV\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"102\" width=\"399\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Move to newly added task after creation (if new task is visible)\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"7VI-d0-pcv\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.moveToTaskListAfterTaskCreation\" id=\"Mko-rW-rL9\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Sr6-1i-PgC\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"76\" width=\"220\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Esc key cancels all edits to tasks\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"wmG-4W-WRo\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.escapeKeyCancelsAllTextChanges\" id=\"7tf-jg-uD0\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3Td-66-ijl\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"50\" width=\"227\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Hide future tasks (threshold filter)\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"3NK-EN-ooU\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <action selector=\"hideFutureTasksPreferenceChanged:\" target=\"-2\" id=\"BWm-Mf-eiD\"/>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.hideFutureTasks\" id=\"bNT-CM-Drw\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"RwI-vw-Tld\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"24\" width=\"216\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Hide hidden tasks (h:1 tag filter)\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"VXx-kz-xw5\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <action selector=\"hideHiddenTasksPreferenceChanged:\" target=\"-2\" id=\"Vfg-ZW-ahd\"/>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.hideHiddenTasks\" id=\"hTd-JD-RyE\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fbN-xb-H8S\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"-2\" width=\"255\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Closing last window closes application\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"7OP-hN-eJ8\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.closingLastWindowClosesApplication\" id=\"XFD-qp-FDF\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                </subviews>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstItem=\"shz-AI-b3R\" firstAttribute=\"leading\" secondItem=\"9wR-vg-DnJ\" secondAttribute=\"leading\" constant=\"10\" id=\"PvC-Dc-5H1\"/>\n                                                            <constraint firstItem=\"shz-AI-b3R\" firstAttribute=\"top\" secondItem=\"9wR-vg-DnJ\" secondAttribute=\"top\" constant=\"10\" id=\"SNK-fx-C4k\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"shz-AI-b3R\" secondAttribute=\"trailing\" constant=\"10\" id=\"wtG-Rc-LaL\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <constraints>\n                                                        <constraint firstAttribute=\"height\" constant=\"176\" id=\"PQQ-Nb-bWe\"/>\n                                                    </constraints>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                                <box autoresizesSubviews=\"NO\" title=\"Undo\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eZp-tq-4Jf\" userLabel=\"Undo Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"98\" width=\"570\" height=\"114\"/>\n                                                    <view key=\"contentView\" id=\"5fV-w0-EwJ\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"98\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rLY-gS-htN\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"8\" width=\"548\" height=\"80\"/>\n                                                                <subviews>\n                                                                    <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"xqz-un-BWi\">\n                                                                        <rect key=\"frame\" x=\"0.0\" y=\"58\" width=\"290\" height=\"22\"/>\n                                                                        <subviews>\n                                                                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"TEF-JO-4hj\">\n                                                                                <rect key=\"frame\" x=\"-2\" y=\"3\" width=\"231\" height=\"17\"/>\n                                                                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Levels of undo (set to 0 for unlimited)\" id=\"m8O-p6-FPJ\">\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                            </textField>\n                                                                            <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"S5J-Yg-kVX\">\n                                                                                <rect key=\"frame\" x=\"235\" y=\"0.0\" width=\"55\" height=\"22\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"width\" constant=\"55\" id=\"R4d-ey-oWr\"/>\n                                                                                </constraints>\n                                                                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"Mc7-8S-Hcy\">\n                                                                                    <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"2000000000\" maximumFractionDigits=\"3\" id=\"Q3m-6b-8RL\"/>\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                                <connections>\n                                                                                    <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.levelsOfUndo\" id=\"XDI-Ol-U21\"/>\n                                                                                </connections>\n                                                                            </textField>\n                                                                        </subviews>\n                                                                        <constraints>\n                                                                            <constraint firstItem=\"S5J-Yg-kVX\" firstAttribute=\"baseline\" secondItem=\"TEF-JO-4hj\" secondAttribute=\"baseline\" id=\"Blc-It-WQY\"/>\n                                                                        </constraints>\n                                                                        <visibilityPriorities>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                        </visibilityPriorities>\n                                                                        <customSpacing>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                        </customSpacing>\n                                                                    </stackView>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"wgS-xI-5cd\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"34\" width=\"248\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Allow undo/redo of archive command\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"JuW-76-crX\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.allowUndoOfArchiveCommand\" id=\"3lX-BT-6cp\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <textField verticalHuggingPriority=\"750\" horizontalCompressionResistancePriority=\"250\" setsMaxLayoutWidthAtFirstLayout=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ZVj-7Y-CJo\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"552\" height=\"28\"/>\n                                                                        <textFieldCell key=\"cell\" sendsActionOnEndEditing=\"YES\" title=\"Allows TodoTxtMac to remove previously archived tasks from your archive file and put them back into the task list..\" id=\"IP4-sr-FV9\">\n                                                                            <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                        </textFieldCell>\n                                                                    </textField>\n                                                                </subviews>\n                                                                <constraints>\n                                                                    <constraint firstItem=\"ZVj-7Y-CJo\" firstAttribute=\"leading\" secondItem=\"rLY-gS-htN\" secondAttribute=\"leading\" id=\"Wdd-Qt-vKr\"/>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"ZVj-7Y-CJo\" secondAttribute=\"trailing\" id=\"YKY-Q8-3D1\"/>\n                                                                </constraints>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstItem=\"rLY-gS-htN\" firstAttribute=\"leading\" secondItem=\"5fV-w0-EwJ\" secondAttribute=\"leading\" constant=\"10\" id=\"CYf-Wi-jCx\"/>\n                                                            <constraint firstItem=\"rLY-gS-htN\" firstAttribute=\"top\" secondItem=\"5fV-w0-EwJ\" secondAttribute=\"top\" constant=\"10\" id=\"hDI-BG-YXQ\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"rLY-gS-htN\" secondAttribute=\"trailing\" constant=\"10\" id=\"wQJ-1g-EEt\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <constraints>\n                                                        <constraint firstAttribute=\"height\" constant=\"110\" id=\"U8d-uz-qYo\"/>\n                                                    </constraints>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                                <box autoresizesSubviews=\"NO\" title=\"Updates\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"0l4-KA-rkx\" userLabel=\"Updates Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"-4\" width=\"570\" height=\"94\"/>\n                                                    <view key=\"contentView\" id=\"nS2-eK-lnO\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"78\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"i86-pj-NM3\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"23\" width=\"548\" height=\"45\"/>\n                                                                <subviews>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7BY-xZ-OO3\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"29\" width=\"310\" height=\"18\"/>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Automatically check for updates to TodoTxtMac\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"edr-78-Twz\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"oDD-Zm-tB0\" name=\"value\" keyPath=\"automaticallyChecksForUpdates\" id=\"9HO-U7-p5M\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"firstBaseline\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"1MR-tg-dnF\">\n                                                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"205\" height=\"23\"/>\n                                                                        <subviews>\n                                                                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rvl-oO-icc\">\n                                                                                <rect key=\"frame\" x=\"-2\" y=\"3\" width=\"116\" height=\"17\"/>\n                                                                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Check for updates\" id=\"eDq-3W-cEx\">\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                            </textField>\n                                                                            <popUpButton verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"oCF-3b-RPC\">\n                                                                                <rect key=\"frame\" x=\"118\" y=\"-3\" width=\"90\" height=\"26\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"width\" constant=\"85\" id=\"E7Z-bv-sdK\"/>\n                                                                                </constraints>\n                                                                                <popUpButtonCell key=\"cell\" type=\"push\" title=\"Monthly\" bezelStyle=\"rounded\" alignment=\"left\" lineBreakMode=\"truncatingTail\" state=\"on\" borderStyle=\"borderAndBezel\" tag=\"2629800\" imageScaling=\"proportionallyDown\" inset=\"2\" selectedItem=\"WOZ-MM-TYD\" id=\"jbA-uR-kFs\">\n                                                                                    <behavior key=\"behavior\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                                    <font key=\"font\" metaFont=\"menu\"/>\n                                                                                    <menu key=\"menu\" title=\"OtherViews\" id=\"Jpl-cc-Gbj\">\n                                                                                        <items>\n                                                                                            <menuItem title=\"Hourly\" tag=\"3600\" id=\"CaT-Kq-MR6\"/>\n                                                                                            <menuItem title=\"Daily\" tag=\"86400\" id=\"geq-Mz-k4B\"/>\n                                                                                            <menuItem title=\"Weekly\" tag=\"604800\" id=\"kre-qP-o5l\"/>\n                                                                                            <menuItem title=\"Monthly\" state=\"on\" tag=\"2629800\" id=\"WOZ-MM-TYD\"/>\n                                                                                        </items>\n                                                                                    </menu>\n                                                                                </popUpButtonCell>\n                                                                                <connections>\n                                                                                    <binding destination=\"oDD-Zm-tB0\" name=\"enabled\" keyPath=\"automaticallyChecksForUpdates\" id=\"Tqp-Ok-agH\"/>\n                                                                                    <binding destination=\"oDD-Zm-tB0\" name=\"selectedTag\" keyPath=\"updateCheckInterval\" id=\"Pug-z3-HRw\"/>\n                                                                                </connections>\n                                                                            </popUpButton>\n                                                                        </subviews>\n                                                                        <visibilityPriorities>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                        </visibilityPriorities>\n                                                                        <customSpacing>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                        </customSpacing>\n                                                                    </stackView>\n                                                                </subviews>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"i86-pj-NM3\" secondAttribute=\"trailing\" constant=\"10\" id=\"FJi-c7-mxH\"/>\n                                                            <constraint firstItem=\"i86-pj-NM3\" firstAttribute=\"leading\" secondItem=\"nS2-eK-lnO\" secondAttribute=\"leading\" constant=\"10\" id=\"JDt-pL-cpf\"/>\n                                                            <constraint firstItem=\"i86-pj-NM3\" firstAttribute=\"top\" secondItem=\"nS2-eK-lnO\" secondAttribute=\"top\" constant=\"10\" id=\"bAo-dr-8ei\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <constraints>\n                                                        <constraint firstAttribute=\"height\" constant=\"90\" id=\"9Bn-Cq-egK\"/>\n                                                    </constraints>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstItem=\"yed-2J-abW\" firstAttribute=\"leading\" secondItem=\"uWq-47-nKi\" secondAttribute=\"leading\" constant=\"10\" id=\"0T8-ox-uO3\"/>\n                                                <constraint firstItem=\"0l4-KA-rkx\" firstAttribute=\"leading\" secondItem=\"uWq-47-nKi\" secondAttribute=\"leading\" constant=\"10\" id=\"J6A-u7-1Ns\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"0l4-KA-rkx\" secondAttribute=\"trailing\" constant=\"10\" id=\"THP-mQ-X2j\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"yed-2J-abW\" secondAttribute=\"trailing\" constant=\"10\" id=\"dIk-wL-uae\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"eZp-tq-4Jf\" secondAttribute=\"trailing\" constant=\"10\" id=\"dyy-vM-h1E\"/>\n                                                <constraint firstItem=\"eZp-tq-4Jf\" firstAttribute=\"leading\" secondItem=\"uWq-47-nKi\" secondAttribute=\"leading\" constant=\"10\" id=\"jgW-SY-Opr\"/>\n                                            </constraints>\n                                            <visibilityPriorities>\n                                                <integer value=\"1000\"/>\n                                                <integer value=\"1000\"/>\n                                                <integer value=\"1000\"/>\n                                            </visibilityPriorities>\n                                            <customSpacing>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                            </customSpacing>\n                                        </stackView>\n                                    </subviews>\n                                    <constraints>\n                                        <constraint firstAttribute=\"bottom\" secondItem=\"uWq-47-nKi\" secondAttribute=\"bottom\" constant=\"10\" id=\"Bxp-Ym-N04\"/>\n                                        <constraint firstItem=\"uWq-47-nKi\" firstAttribute=\"top\" secondItem=\"ADq-m3-TeV\" secondAttribute=\"top\" constant=\"10\" id=\"GDi-Wu-agE\"/>\n                                        <constraint firstAttribute=\"trailing\" secondItem=\"uWq-47-nKi\" secondAttribute=\"trailing\" constant=\"10\" id=\"NkT-51-c0E\"/>\n                                        <constraint firstItem=\"uWq-47-nKi\" firstAttribute=\"leading\" secondItem=\"ADq-m3-TeV\" secondAttribute=\"leading\" constant=\"10\" id=\"qaJ-xU-rWR\"/>\n                                    </constraints>\n                                </view>\n                            </tabViewItem>\n                            <tabViewItem label=\"Font &amp; Colors\" identifier=\"2\" id=\"f18-jj-cqZ\" userLabel=\"Appearance\">\n                                <view key=\"view\" id=\"mhP-oh-atP\">\n                                    <rect key=\"frame\" x=\"10\" y=\"33\" width=\"604\" height=\"398\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <stackView distribution=\"fillProportionally\" orientation=\"vertical\" alignment=\"leading\" spacing=\"12\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"DdQ-Fe-noT\">\n                                            <rect key=\"frame\" x=\"10\" y=\"10\" width=\"584\" height=\"378\"/>\n                                            <subviews>\n                                                <box title=\"Font\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QIV-wv-oHZ\" userLabel=\"Task List Font Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"274\" width=\"570\" height=\"104\"/>\n                                                    <view key=\"contentView\" id=\"cBc-7z-E7V\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"88\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rA8-Qp-1hs\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"24\" width=\"548\" height=\"54\"/>\n                                                                <subviews>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9Zh-2L-OK0\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"29\" width=\"552\" height=\"27\"/>\n                                                                        <constraints>\n                                                                            <constraint firstAttribute=\"height\" constant=\"23\" id=\"hsI-yZ-Hh3\"/>\n                                                                        </constraints>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Use custom font for task list\" bezelStyle=\"regularSquare\" imagePosition=\"left\" inset=\"2\" id=\"Hux-p9-XAz\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"WhV-JV-fOE\"/>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useUserFont\" id=\"PkD-as-hcM\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"xPS-3f-auC\" userLabel=\"Task List Font Stack View\">\n                                                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"548\" height=\"23\"/>\n                                                                        <subviews>\n                                                                            <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"d9b-fx-36a\">\n                                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"23\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"height\" constant=\"23\" id=\"M6m-9R-Cuj\"/>\n                                                                                </constraints>\n                                                                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" refusesFirstResponder=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"2lK-GJ-lfT\">\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                </textFieldCell>\n                                                                                <connections>\n                                                                                    <binding destination=\"-2\" name=\"value\" keyPath=\"self.selectedFont\" id=\"8UW-TX-6pc\">\n                                                                                        <dictionary key=\"options\">\n                                                                                            <string key=\"NSValueTransformerName\">FontNameTransformer</string>\n                                                                                        </dictionary>\n                                                                                    </binding>\n                                                                                </connections>\n                                                                            </textField>\n                                                                            <button horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"aUb-St-NdM\">\n                                                                                <rect key=\"frame\" x=\"482\" y=\"-6\" width=\"72\" height=\"32\"/>\n                                                                                <constraints>\n                                                                                    <constraint firstAttribute=\"height\" constant=\"21\" id=\"yLJ-7V-sr0\"/>\n                                                                                </constraints>\n                                                                                <buttonCell key=\"cell\" type=\"push\" title=\"Set...\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"7nh-a8-lLC\">\n                                                                                    <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                                </buttonCell>\n                                                                                <connections>\n                                                                                    <action selector=\"openFontPanel:\" target=\"-2\" id=\"9Od-SU-kdD\"/>\n                                                                                </connections>\n                                                                            </button>\n                                                                        </subviews>\n                                                                        <visibilityPriorities>\n                                                                            <integer value=\"1000\"/>\n                                                                            <integer value=\"1000\"/>\n                                                                        </visibilityPriorities>\n                                                                        <customSpacing>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                                        </customSpacing>\n                                                                    </stackView>\n                                                                </subviews>\n                                                                <constraints>\n                                                                    <constraint firstItem=\"xPS-3f-auC\" firstAttribute=\"leading\" secondItem=\"rA8-Qp-1hs\" secondAttribute=\"leading\" id=\"2jM-Dt-HMe\"/>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"xPS-3f-auC\" secondAttribute=\"trailing\" id=\"4jA-JN-XWE\"/>\n                                                                    <constraint firstItem=\"9Zh-2L-OK0\" firstAttribute=\"leading\" secondItem=\"rA8-Qp-1hs\" secondAttribute=\"leading\" id=\"7AP-3F-djo\"/>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"9Zh-2L-OK0\" secondAttribute=\"trailing\" id=\"PGB-8g-Vem\"/>\n                                                                </constraints>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstItem=\"rA8-Qp-1hs\" firstAttribute=\"leading\" secondItem=\"cBc-7z-E7V\" secondAttribute=\"leading\" constant=\"10\" id=\"DpC-RG-srz\"/>\n                                                            <constraint firstItem=\"rA8-Qp-1hs\" firstAttribute=\"top\" secondItem=\"cBc-7z-E7V\" secondAttribute=\"top\" constant=\"10\" id=\"bqS-Ud-GVG\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"rA8-Qp-1hs\" secondAttribute=\"trailing\" constant=\"10\" id=\"pm2-Uf-SBW\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <constraints>\n                                                        <constraint firstAttribute=\"height\" constant=\"100\" id=\"rmK-1Q-CnL\"/>\n                                                    </constraints>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                                <box title=\"Colors\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"d7n-EI-WOY\" userLabel=\"Colors Box\">\n                                                    <rect key=\"frame\" x=\"7\" y=\"-4\" width=\"570\" height=\"270\"/>\n                                                    <view key=\"contentView\" id=\"Vxy-Pb-uCp\">\n                                                        <rect key=\"frame\" x=\"1\" y=\"1\" width=\"568\" height=\"254\"/>\n                                                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                        <subviews>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"11\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dh0-Pb-H19\">\n                                                                <rect key=\"frame\" x=\"10\" y=\"10\" width=\"548\" height=\"234\"/>\n                                                                <subviews>\n                                                                    <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"LFL-6w-UIX\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"209\" width=\"552\" height=\"27\"/>\n                                                                        <constraints>\n                                                                            <constraint firstAttribute=\"height\" constant=\"23\" id=\"daB-Tw-NLu\"/>\n                                                                        </constraints>\n                                                                        <buttonCell key=\"cell\" type=\"check\" title=\"Highlight due state, projects, contexts, due date, tags, etc.\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"g4E-76-FN1\">\n                                                                            <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"NQo-qy-J4o\"/>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useHighlightColorsInTaskList\" id=\"UUk-mO-tRk\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <box title=\"Box\" boxType=\"secondary\" borderType=\"line\" titlePosition=\"noTitle\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"DS9-Zs-czw\">\n                                                                        <rect key=\"frame\" x=\"-3\" y=\"-4\" width=\"554\" height=\"206\"/>\n                                                                        <view key=\"contentView\" id=\"PNZ-ux-8r5\">\n                                                                            <rect key=\"frame\" x=\"1\" y=\"1\" width=\"552\" height=\"204\"/>\n                                                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                                            <subviews>\n                                                                                <stackView distribution=\"fillEqually\" orientation=\"horizontal\" alignment=\"top\" spacing=\"20\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"v1Z-P6-gKN\" userLabel=\"Color Wells Stack View\">\n                                                                                    <rect key=\"frame\" x=\"10\" y=\"20\" width=\"532\" height=\"174\"/>\n                                                                                    <subviews>\n                                                                                        <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rTG-aW-ucg\" userLabel=\"Left Color Wells Stack View\">\n                                                                                            <rect key=\"frame\" x=\"0.0\" y=\"18\" width=\"256\" height=\"156\"/>\n                                                                                            <subviews>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rzc-g7-BJA\" userLabel=\"Projects Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"123\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button toolTip=\"Projects begin with &quot;+&quot;.\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Qki-7l-2C2\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"5\" width=\"127\" height=\"23\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"height\" constant=\"19\" id=\"ufk-Rt-F2a\"/>\n                                                                                                            </constraints>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Projects\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"JvI-Nx-2UB\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"eD1-Ky-oca\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForProjects\" id=\"you-NU-vbR\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zF2-3U-srK\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"kbT-eO-UTw\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"0rs-RG-Rsd\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.projectColor\" id=\"aif-bN-ASG\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstItem=\"zF2-3U-srK\" firstAttribute=\"top\" secondItem=\"rzc-g7-BJA\" secondAttribute=\"top\" id=\"7F8-fb-7Xc\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"zF2-3U-srK\" secondAttribute=\"bottom\" id=\"cSY-oF-dYA\"/>\n                                                                                                        <constraint firstAttribute=\"height\" constant=\"33\" id=\"h4o-d0-Wot\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"oqW-Kk-hna\" userLabel=\"Contexts Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"82\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button toolTip=\"Contexts begin with &quot;@&quot;.\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"IVK-oE-htE\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"5\" width=\"127\" height=\"23\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"height\" constant=\"19\" id=\"JWz-IM-3NT\"/>\n                                                                                                            </constraints>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Contexts\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"4EM-a2-8Xf\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"HGR-Od-RDI\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForContexts\" id=\"QkC-x2-e3E\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Agi-nP-xDL\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"IKd-ig-i3g\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"rby-dk-hLN\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.contextColor\" id=\"bRT-l7-w6e\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstItem=\"Agi-nP-xDL\" firstAttribute=\"top\" secondItem=\"oqW-Kk-hna\" secondAttribute=\"top\" id=\"ELR-4J-nUm\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"Agi-nP-xDL\" secondAttribute=\"bottom\" id=\"yMB-J2-djH\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"59l-XD-Sag\" userLabel=\"Tags Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"41\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button toolTip=\"Tags are &quot;key:value&quot; pairs.\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"H2T-43-uze\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"7\" width=\"127\" height=\"18\"/>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Tags\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"oCR-Hh-sAn\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"jNK-rb-ou7\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForTags\" id=\"FzB-PL-KNd\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"BS6-EI-GId\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"Hmq-FP-uSW\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"7KG-g8-R1a\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.tagColor\" id=\"YnN-Mo-ilE\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstItem=\"BS6-EI-GId\" firstAttribute=\"top\" secondItem=\"59l-XD-Sag\" secondAttribute=\"top\" id=\"8FY-oa-cO7\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"BS6-EI-GId\" secondAttribute=\"bottom\" id=\"vJ3-Kx-8xS\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9Xe-yY-rfe\" userLabel=\"Tasks Due Today Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"id0-SQ-XPW\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"5\" width=\"127\" height=\"23\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"height\" constant=\"19\" id=\"C5Z-Qb-v59\"/>\n                                                                                                            </constraints>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Tasks due today\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"LWD-r3-4iw\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"ltX-s4-peB\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForDueTodayTasks\" id=\"TZg-WU-88H\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"pJz-fI-VRc\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"9zI-ks-pts\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"OVe-hf-sT4\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.dueTodayColor\" id=\"rd3-79-doD\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstItem=\"pJz-fI-VRc\" firstAttribute=\"top\" secondItem=\"9Xe-yY-rfe\" secondAttribute=\"top\" id=\"4FK-Ix-Srm\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"pJz-fI-VRc\" secondAttribute=\"bottom\" id=\"yvz-4y-GFA\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                            </subviews>\n                                                                                            <constraints>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"oqW-Kk-hna\" secondAttribute=\"trailing\" id=\"8jV-F9-wEE\"/>\n                                                                                                <constraint firstItem=\"oqW-Kk-hna\" firstAttribute=\"height\" secondItem=\"rzc-g7-BJA\" secondAttribute=\"height\" id=\"E9b-gS-LsT\"/>\n                                                                                                <constraint firstItem=\"59l-XD-Sag\" firstAttribute=\"leading\" secondItem=\"rTG-aW-ucg\" secondAttribute=\"leading\" id=\"IKT-dd-UMX\"/>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"9Xe-yY-rfe\" secondAttribute=\"trailing\" id=\"Jfn-YX-Eu9\"/>\n                                                                                                <constraint firstItem=\"rzc-g7-BJA\" firstAttribute=\"leading\" secondItem=\"rTG-aW-ucg\" secondAttribute=\"leading\" id=\"KMX-AX-25U\"/>\n                                                                                                <constraint firstItem=\"9Xe-yY-rfe\" firstAttribute=\"leading\" secondItem=\"rTG-aW-ucg\" secondAttribute=\"leading\" id=\"PfE-cj-KRO\"/>\n                                                                                                <constraint firstItem=\"9Xe-yY-rfe\" firstAttribute=\"height\" secondItem=\"rzc-g7-BJA\" secondAttribute=\"height\" id=\"RcC-7k-Fmv\"/>\n                                                                                                <constraint firstItem=\"59l-XD-Sag\" firstAttribute=\"height\" secondItem=\"oqW-Kk-hna\" secondAttribute=\"height\" id=\"bQE-1X-iWY\"/>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"59l-XD-Sag\" secondAttribute=\"trailing\" id=\"h3c-a0-v18\"/>\n                                                                                                <constraint firstItem=\"oqW-Kk-hna\" firstAttribute=\"leading\" secondItem=\"rTG-aW-ucg\" secondAttribute=\"leading\" id=\"sjT-Zv-NXN\"/>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"rzc-g7-BJA\" secondAttribute=\"trailing\" id=\"whk-xw-XTD\"/>\n                                                                                            </constraints>\n                                                                                            <visibilityPriorities>\n                                                                                                <integer value=\"1000\"/>\n                                                                                                <integer value=\"1000\"/>\n                                                                                                <integer value=\"1000\"/>\n                                                                                                <integer value=\"1000\"/>\n                                                                                            </visibilityPriorities>\n                                                                                            <customSpacing>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                            </customSpacing>\n                                                                                        </stackView>\n                                                                                        <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Ldf-Be-XYl\" userLabel=\"Right Color Wells Stack View\">\n                                                                                            <rect key=\"frame\" x=\"276\" y=\"18\" width=\"256\" height=\"156\"/>\n                                                                                            <subviews>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fva-c4-7MI\" userLabel=\"Due Dates Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"123\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button toolTip=\"Due dates must be in the format &quot;due:YYYY-MM-DD&quot;.\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"q5w-gK-nag\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"5\" width=\"127\" height=\"23\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"height\" constant=\"19\" id=\"H1E-dt-YDs\"/>\n                                                                                                            </constraints>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Due dates\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"yVB-1N-NGG\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"zat-ke-iCF\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForDueDates\" id=\"q7r-xQ-BAA\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6MV-d7-Saz\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"U1A-gp-Zpo\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"p3L-12-rZx\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.dueDateColor\" id=\"m6b-LO-QB0\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstAttribute=\"height\" constant=\"33\" id=\"6ff-Rg-PE4\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"6MV-d7-Saz\" secondAttribute=\"bottom\" id=\"v1R-wo-EQY\"/>\n                                                                                                        <constraint firstItem=\"6MV-d7-Saz\" firstAttribute=\"top\" secondItem=\"fva-c4-7MI\" secondAttribute=\"top\" id=\"w88-xo-FF9\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"gD0-tm-QOK\" userLabel=\"Threshold Dates Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"82\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button toolTip=\"Threshold dates must be in the format &quot;t:YYYY-MM-DD&quot;.\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Dvn-44-EkF\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"7\" width=\"127\" height=\"18\"/>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Threshold dates\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"8Ot-rG-fIl\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"ptq-YZ-Mm8\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForThresholdDates\" id=\"sO9-uS-cCV\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Hfg-JN-STm\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"yxr-04-Zyd\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"9jk-f8-OMt\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.thresholdDateColor\" id=\"3sb-jm-xUB\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstItem=\"Hfg-JN-STm\" firstAttribute=\"top\" secondItem=\"gD0-tm-QOK\" secondAttribute=\"top\" id=\"5NM-eD-uOG\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"Hfg-JN-STm\" secondAttribute=\"bottom\" id=\"8uR-wC-gv3\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9Cz-hs-l4V\" userLabel=\"Creation Dates Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"41\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button toolTip=\"Threshold dates must be in the format &quot;t:YYYY-MM-DD&quot;.\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"DCH-Hu-Ffj\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"7\" width=\"127\" height=\"18\"/>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Creation dates\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"yMp-g6-Vnj\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"Mv8-Th-k7G\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForCreationDates\" id=\"gkC-pN-gYP\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"G9o-nv-UAc\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"AZj-Z7-xkY\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"HTm-OO-flz\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.creationDateColor\" id=\"LfF-qi-u0I\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"G9o-nv-UAc\" secondAttribute=\"bottom\" id=\"W1p-p9-5cC\"/>\n                                                                                                        <constraint firstItem=\"G9o-nv-UAc\" firstAttribute=\"top\" secondItem=\"9Cz-hs-l4V\" secondAttribute=\"top\" id=\"lED-gb-lM1\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"centerY\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"HDF-XV-Kq9\" userLabel=\"Overdue Tasks Color Stack View\">\n                                                                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"256\" height=\"33\"/>\n                                                                                                    <subviews>\n                                                                                                        <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kOY-JE-iji\">\n                                                                                                            <rect key=\"frame\" x=\"-2\" y=\"5\" width=\"127\" height=\"23\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"height\" constant=\"19\" id=\"B6U-eL-OwF\"/>\n                                                                                                            </constraints>\n                                                                                                            <buttonCell key=\"cell\" type=\"check\" title=\"Overdue tasks\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"Xwh-nn-Qfj\">\n                                                                                                                <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                                            </buttonCell>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"visualRefreshAll:\" target=\"cda-0y-TXV\" id=\"IiD-14-edE\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.useCustomColorForOverdueTasks\" id=\"5oV-wB-2Uc\"/>\n                                                                                                            </connections>\n                                                                                                        </button>\n                                                                                                        <colorWell translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kyv-n7-gmA\">\n                                                                                                            <rect key=\"frame\" x=\"131\" y=\"0.0\" width=\"125\" height=\"33\"/>\n                                                                                                            <constraints>\n                                                                                                                <constraint firstAttribute=\"width\" constant=\"125\" id=\"R3C-Ss-f10\"/>\n                                                                                                            </constraints>\n                                                                                                            <color key=\"color\" red=\"0.05813049898\" green=\"0.055541899059999997\" blue=\"1\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                                                                                            <connections>\n                                                                                                                <action selector=\"colorChanged:\" target=\"-1\" id=\"dWA-Ou-2Ft\"/>\n                                                                                                                <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.overdueColor\" id=\"QQo-sj-K0U\">\n                                                                                                                    <dictionary key=\"options\">\n                                                                                                                        <string key=\"NSValueTransformerName\">NSUnarchiveFromData</string>\n                                                                                                                    </dictionary>\n                                                                                                                </binding>\n                                                                                                            </connections>\n                                                                                                        </colorWell>\n                                                                                                    </subviews>\n                                                                                                    <constraints>\n                                                                                                        <constraint firstItem=\"kyv-n7-gmA\" firstAttribute=\"top\" secondItem=\"HDF-XV-Kq9\" secondAttribute=\"top\" id=\"LYQ-8K-AoJ\"/>\n                                                                                                        <constraint firstAttribute=\"bottom\" secondItem=\"kyv-n7-gmA\" secondAttribute=\"bottom\" id=\"VZV-u3-WLh\"/>\n                                                                                                    </constraints>\n                                                                                                    <visibilityPriorities>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                        <integer value=\"1000\"/>\n                                                                                                    </visibilityPriorities>\n                                                                                                    <customSpacing>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                                    </customSpacing>\n                                                                                                </stackView>\n                                                                                            </subviews>\n                                                                                            <constraints>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"fva-c4-7MI\" secondAttribute=\"trailing\" id=\"9u9-E7-CiI\"/>\n                                                                                                <constraint firstItem=\"HDF-XV-Kq9\" firstAttribute=\"leading\" secondItem=\"Ldf-Be-XYl\" secondAttribute=\"leading\" id=\"HCT-u6-RHe\"/>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"HDF-XV-Kq9\" secondAttribute=\"trailing\" id=\"KmF-qT-W8l\"/>\n                                                                                                <constraint firstItem=\"9Cz-hs-l4V\" firstAttribute=\"height\" secondItem=\"fva-c4-7MI\" secondAttribute=\"height\" id=\"NYZ-JT-rVB\"/>\n                                                                                                <constraint firstItem=\"gD0-tm-QOK\" firstAttribute=\"leading\" secondItem=\"Ldf-Be-XYl\" secondAttribute=\"leading\" id=\"XXz-bv-raW\"/>\n                                                                                                <constraint firstItem=\"9Cz-hs-l4V\" firstAttribute=\"leading\" secondItem=\"Ldf-Be-XYl\" secondAttribute=\"leading\" id=\"ZYP-pe-Vgc\"/>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"9Cz-hs-l4V\" secondAttribute=\"trailing\" id=\"d30-5E-Gpp\"/>\n                                                                                                <constraint firstItem=\"gD0-tm-QOK\" firstAttribute=\"height\" secondItem=\"fva-c4-7MI\" secondAttribute=\"height\" id=\"kov-hS-hXC\"/>\n                                                                                                <constraint firstItem=\"fva-c4-7MI\" firstAttribute=\"leading\" secondItem=\"Ldf-Be-XYl\" secondAttribute=\"leading\" id=\"oC9-kC-zKv\"/>\n                                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"gD0-tm-QOK\" secondAttribute=\"trailing\" id=\"qCc-eh-fpK\"/>\n                                                                                                <constraint firstItem=\"HDF-XV-Kq9\" firstAttribute=\"height\" secondItem=\"fva-c4-7MI\" secondAttribute=\"height\" id=\"vLT-7g-zQk\"/>\n                                                                                            </constraints>\n                                                                                            <visibilityPriorities>\n                                                                                                <integer value=\"1000\"/>\n                                                                                                <integer value=\"1000\"/>\n                                                                                                <integer value=\"1000\"/>\n                                                                                                <integer value=\"1000\"/>\n                                                                                            </visibilityPriorities>\n                                                                                            <customSpacing>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                                            </customSpacing>\n                                                                                        </stackView>\n                                                                                    </subviews>\n                                                                                    <visibilityPriorities>\n                                                                                        <integer value=\"1000\"/>\n                                                                                        <integer value=\"1000\"/>\n                                                                                    </visibilityPriorities>\n                                                                                    <customSpacing>\n                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                                    </customSpacing>\n                                                                                </stackView>\n                                                                            </subviews>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"bottom\" secondItem=\"v1Z-P6-gKN\" secondAttribute=\"bottom\" constant=\"20\" id=\"IKe-9c-OL0\"/>\n                                                                                <constraint firstItem=\"v1Z-P6-gKN\" firstAttribute=\"leading\" secondItem=\"PNZ-ux-8r5\" secondAttribute=\"leading\" constant=\"10\" id=\"UbW-hj-O2G\"/>\n                                                                                <constraint firstAttribute=\"trailing\" secondItem=\"v1Z-P6-gKN\" secondAttribute=\"trailing\" constant=\"10\" id=\"eTt-Ob-lKb\"/>\n                                                                                <constraint firstItem=\"v1Z-P6-gKN\" firstAttribute=\"top\" secondItem=\"PNZ-ux-8r5\" secondAttribute=\"top\" constant=\"10\" id=\"gGI-9c-V1z\"/>\n                                                                            </constraints>\n                                                                        </view>\n                                                                        <constraints>\n                                                                            <constraint firstAttribute=\"height\" constant=\"200\" id=\"LXP-HG-bX9\"/>\n                                                                        </constraints>\n                                                                        <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                                        <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                                    </box>\n                                                                </subviews>\n                                                                <constraints>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"DS9-Zs-czw\" secondAttribute=\"trailing\" id=\"Q5U-tH-AYb\"/>\n                                                                    <constraint firstItem=\"LFL-6w-UIX\" firstAttribute=\"leading\" secondItem=\"dh0-Pb-H19\" secondAttribute=\"leading\" id=\"U6P-Fg-Ai2\"/>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"LFL-6w-UIX\" secondAttribute=\"trailing\" id=\"qh6-fd-USj\"/>\n                                                                    <constraint firstItem=\"DS9-Zs-czw\" firstAttribute=\"leading\" secondItem=\"dh0-Pb-H19\" secondAttribute=\"leading\" id=\"yvg-5N-JXk\"/>\n                                                                </constraints>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"dh0-Pb-H19\" secondAttribute=\"trailing\" constant=\"10\" id=\"LuY-W6-fYL\"/>\n                                                            <constraint firstAttribute=\"bottom\" secondItem=\"dh0-Pb-H19\" secondAttribute=\"bottom\" constant=\"10\" id=\"UKo-kW-2Rx\"/>\n                                                            <constraint firstItem=\"dh0-Pb-H19\" firstAttribute=\"leading\" secondItem=\"Vxy-Pb-uCp\" secondAttribute=\"leading\" constant=\"10\" id=\"Xg4-J6-B7J\"/>\n                                                            <constraint firstItem=\"dh0-Pb-H19\" firstAttribute=\"top\" secondItem=\"Vxy-Pb-uCp\" secondAttribute=\"top\" constant=\"10\" id=\"jsp-UU-Igx\"/>\n                                                        </constraints>\n                                                    </view>\n                                                    <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                                    <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                                </box>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstItem=\"QIV-wv-oHZ\" firstAttribute=\"leading\" secondItem=\"DdQ-Fe-noT\" secondAttribute=\"leading\" constant=\"10\" id=\"7J1-q5-xiv\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"d7n-EI-WOY\" secondAttribute=\"trailing\" constant=\"10\" id=\"QpD-B4-dLS\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"QIV-wv-oHZ\" secondAttribute=\"trailing\" constant=\"10\" id=\"YWq-xc-EL7\"/>\n                                                <constraint firstItem=\"d7n-EI-WOY\" firstAttribute=\"leading\" secondItem=\"DdQ-Fe-noT\" secondAttribute=\"leading\" constant=\"10\" id=\"zRP-8V-KPW\"/>\n                                            </constraints>\n                                            <visibilityPriorities>\n                                                <integer value=\"1000\"/>\n                                                <integer value=\"1000\"/>\n                                            </visibilityPriorities>\n                                            <customSpacing>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                                <real value=\"3.4028234663852886e+38\"/>\n                                            </customSpacing>\n                                        </stackView>\n                                    </subviews>\n                                    <constraints>\n                                        <constraint firstAttribute=\"trailing\" secondItem=\"DdQ-Fe-noT\" secondAttribute=\"trailing\" constant=\"10\" id=\"6Ne-cT-OQf\"/>\n                                        <constraint firstItem=\"DdQ-Fe-noT\" firstAttribute=\"leading\" secondItem=\"mhP-oh-atP\" secondAttribute=\"leading\" constant=\"10\" id=\"NI4-3I-n6u\"/>\n                                        <constraint firstItem=\"DdQ-Fe-noT\" firstAttribute=\"top\" secondItem=\"mhP-oh-atP\" secondAttribute=\"top\" constant=\"10\" id=\"OGa-zG-F67\"/>\n                                        <constraint firstAttribute=\"bottom\" secondItem=\"DdQ-Fe-noT\" secondAttribute=\"bottom\" constant=\"10\" id=\"aP7-jU-aBB\"/>\n                                    </constraints>\n                                </view>\n                            </tabViewItem>\n                            <tabViewItem label=\"Status Bar\" identifier=\"3\" id=\"C0X-lJ-CYs\">\n                                <view key=\"view\" id=\"Xxm-Vu-L8l\">\n                                    <rect key=\"frame\" x=\"10\" y=\"33\" width=\"604\" height=\"420\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <box autoresizesSubviews=\"NO\" title=\"Customize status bar\" borderType=\"line\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uP8-O5-g7a\" userLabel=\"Customize status bar Box\">\n                                            <rect key=\"frame\" x=\"7\" y=\"186\" width=\"590\" height=\"224\"/>\n                                            <view key=\"contentView\" id=\"8uo-5X-lZk\">\n                                                <rect key=\"frame\" x=\"1\" y=\"1\" width=\"588\" height=\"208\"/>\n                                                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                                <subviews>\n                                                    <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"go8-tq-Ugi\">\n                                                        <rect key=\"frame\" x=\"10\" y=\"-202\" width=\"568\" height=\"400\"/>\n                                                        <subviews>\n                                                            <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"1w7-1m-yNC\">\n                                                                <rect key=\"frame\" x=\"-2\" y=\"384\" width=\"267\" height=\"18\"/>\n                                                                <buttonCell key=\"cell\" type=\"check\" title=\"Show status bar on next opened window\" bezelStyle=\"regularSquare\" imagePosition=\"left\" state=\"on\" inset=\"2\" id=\"5Dj-4D-p9M\">\n                                                                    <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                                                    <font key=\"font\" metaFont=\"system\"/>\n                                                                </buttonCell>\n                                                                <connections>\n                                                                    <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.showStatusBar\" id=\"Dda-11-Hlo\"/>\n                                                                </connections>\n                                                            </button>\n                                                            <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"0.0\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"VHN-SC-V7M\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"273\" width=\"568\" height=\"105\"/>\n                                                                <subviews>\n                                                                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zXM-Pf-HPd\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"88\" width=\"47\" height=\"17\"/>\n                                                                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"left\" title=\"Format\" id=\"VFN-Xk-1aQ\">\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                        </textFieldCell>\n                                                                    </textField>\n                                                                    <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dps-Ov-KIp\">\n                                                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"568\" height=\"88\"/>\n                                                                        <constraints>\n                                                                            <constraint firstAttribute=\"height\" constant=\"88\" id=\"xpc-qC-aSK\"/>\n                                                                        </constraints>\n                                                                        <textFieldCell key=\"cell\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"gVh-qm-vE8\">\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                            <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                        </textFieldCell>\n                                                                        <connections>\n                                                                            <binding destination=\"p0U-mu-Cyy\" name=\"value\" keyPath=\"values.statusBarFormat\" id=\"HZw-HB-hHy\">\n                                                                                <dictionary key=\"options\">\n                                                                                    <bool key=\"NSContinuouslyUpdatesValue\" value=\"YES\"/>\n                                                                                </dictionary>\n                                                                            </binding>\n                                                                            <outlet property=\"delegate\" destination=\"-2\" id=\"l0t-Ao-bU5\"/>\n                                                                        </connections>\n                                                                    </textField>\n                                                                </subviews>\n                                                                <constraints>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"dps-Ov-KIp\" secondAttribute=\"trailing\" id=\"FlX-dq-J2C\"/>\n                                                                    <constraint firstAttribute=\"trailing\" secondItem=\"zXM-Pf-HPd\" secondAttribute=\"trailing\" constant=\"525\" id=\"ahc-N4-eUX\"/>\n                                                                    <constraint firstItem=\"dps-Ov-KIp\" firstAttribute=\"leading\" secondItem=\"VHN-SC-V7M\" secondAttribute=\"leading\" id=\"zpC-qW-DKg\"/>\n                                                                </constraints>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                            <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"firstBaseline\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"etk-f5-czz\">\n                                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"568\" height=\"265\"/>\n                                                                <subviews>\n                                                                    <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"VHD-8m-S6e\">\n                                                                        <rect key=\"frame\" x=\"-2\" y=\"243\" width=\"33\" height=\"17\"/>\n                                                                        <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"left\" title=\"Tags\" id=\"Bau-Dg-GwY\">\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                            <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                        </textFieldCell>\n                                                                    </textField>\n                                                                    <popUpButton horizontalHuggingPriority=\"249\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"agZ-dD-T4T\">\n                                                                        <rect key=\"frame\" x=\"35\" y=\"237\" width=\"295\" height=\"26\"/>\n                                                                        <popUpButtonCell key=\"cell\" type=\"push\" title=\"Available Tags\" bezelStyle=\"rounded\" alignment=\"left\" lineBreakMode=\"truncatingTail\" state=\"on\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" selectedItem=\"iPq-ql-2e0\" id=\"1lf-Rh-gST\">\n                                                                            <behavior key=\"behavior\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"menu\"/>\n                                                                            <menu key=\"menu\" id=\"1O7-ru-rf0\">\n                                                                                <items>\n                                                                                    <menuItem title=\"Available Tags\" state=\"on\" id=\"iPq-ql-2e0\"/>\n                                                                                    <menuItem title=\"Item 2\" id=\"O8d-tt-HwN\"/>\n                                                                                    <menuItem title=\"Item 3\" id=\"fpc-Ts-O13\"/>\n                                                                                </items>\n                                                                            </menu>\n                                                                        </popUpButtonCell>\n                                                                        <connections>\n                                                                            <binding destination=\"AAU-j7-nuS\" name=\"content\" keyPath=\"arrangedObjects\" id=\"KTJ-FU-Ngg\"/>\n                                                                            <binding destination=\"AAU-j7-nuS\" name=\"selectedIndex\" keyPath=\"selectionIndex\" previousBinding=\"KTJ-FU-Ngg\" id=\"1iC-bK-zmj\"/>\n                                                                        </connections>\n                                                                    </popUpButton>\n                                                                    <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JAg-G4-FBv\">\n                                                                        <rect key=\"frame\" x=\"329\" y=\"233\" width=\"101\" height=\"32\"/>\n                                                                        <buttonCell key=\"cell\" type=\"push\" title=\"Insert Tag\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"TQZ-9N-nTD\">\n                                                                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <action selector=\"insertTagIntoStatusBarFormat:\" target=\"-2\" id=\"vdh-6U-sJf\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                    <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uhO-1z-q0Z\">\n                                                                        <rect key=\"frame\" x=\"426\" y=\"233\" width=\"148\" height=\"32\"/>\n                                                                        <buttonCell key=\"cell\" type=\"push\" title=\"Reset to default...\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"ngM-XH-2Xx\">\n                                                                            <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                                                            <font key=\"font\" metaFont=\"system\"/>\n                                                                        </buttonCell>\n                                                                        <connections>\n                                                                            <action selector=\"resetStatusBarFormatToDefault:\" target=\"-2\" id=\"M3F-Lz-IaS\"/>\n                                                                        </connections>\n                                                                    </button>\n                                                                </subviews>\n                                                                <visibilityPriorities>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                    <integer value=\"1000\"/>\n                                                                </visibilityPriorities>\n                                                                <customSpacing>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                    <real value=\"3.4028234663852886e+38\"/>\n                                                                </customSpacing>\n                                                            </stackView>\n                                                        </subviews>\n                                                        <constraints>\n                                                            <constraint firstItem=\"VHN-SC-V7M\" firstAttribute=\"leading\" secondItem=\"go8-tq-Ugi\" secondAttribute=\"leading\" id=\"BHI-FH-Gma\"/>\n                                                            <constraint firstItem=\"etk-f5-czz\" firstAttribute=\"leading\" secondItem=\"go8-tq-Ugi\" secondAttribute=\"leading\" id=\"BNX-3u-YCx\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"etk-f5-czz\" secondAttribute=\"trailing\" id=\"D4e-v4-8a7\"/>\n                                                            <constraint firstAttribute=\"trailing\" secondItem=\"VHN-SC-V7M\" secondAttribute=\"trailing\" id=\"H2q-pb-4eZ\"/>\n                                                            <constraint firstAttribute=\"height\" constant=\"400\" id=\"zS3-VR-Tz4\"/>\n                                                        </constraints>\n                                                        <visibilityPriorities>\n                                                            <integer value=\"1000\"/>\n                                                            <integer value=\"1000\"/>\n                                                            <integer value=\"1000\"/>\n                                                        </visibilityPriorities>\n                                                        <customSpacing>\n                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                            <real value=\"3.4028234663852886e+38\"/>\n                                                        </customSpacing>\n                                                    </stackView>\n                                                </subviews>\n                                                <constraints>\n                                                    <constraint firstItem=\"go8-tq-Ugi\" firstAttribute=\"top\" secondItem=\"8uo-5X-lZk\" secondAttribute=\"top\" constant=\"10\" id=\"3TN-El-Nke\"/>\n                                                    <constraint firstAttribute=\"trailing\" secondItem=\"go8-tq-Ugi\" secondAttribute=\"trailing\" constant=\"10\" id=\"KSb-wS-5xa\"/>\n                                                    <constraint firstItem=\"go8-tq-Ugi\" firstAttribute=\"leading\" secondItem=\"8uo-5X-lZk\" secondAttribute=\"leading\" constant=\"10\" id=\"hQv-4V-yDl\"/>\n                                                </constraints>\n                                            </view>\n                                            <constraints>\n                                                <constraint firstAttribute=\"height\" constant=\"220\" id=\"0ti-dy-4o5\"/>\n                                            </constraints>\n                                            <color key=\"borderColor\" white=\"0.0\" alpha=\"0.41999999999999998\" colorSpace=\"calibratedWhite\"/>\n                                            <color key=\"fillColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                        </box>\n                                    </subviews>\n                                    <constraints>\n                                        <constraint firstAttribute=\"trailing\" secondItem=\"uP8-O5-g7a\" secondAttribute=\"trailing\" constant=\"10\" id=\"74F-dt-x8F\"/>\n                                        <constraint firstItem=\"uP8-O5-g7a\" firstAttribute=\"top\" secondItem=\"Xxm-Vu-L8l\" secondAttribute=\"top\" constant=\"10\" id=\"G18-FI-j4w\"/>\n                                        <constraint firstItem=\"uP8-O5-g7a\" firstAttribute=\"leading\" secondItem=\"Xxm-Vu-L8l\" secondAttribute=\"leading\" constant=\"10\" id=\"gmr-qT-IUW\"/>\n                                    </constraints>\n                                </view>\n                            </tabViewItem>\n                        </tabViewItems>\n                    </tabView>\n                </subviews>\n                <constraints>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"y76-Kz-NYB\" secondAttribute=\"bottom\" constant=\"10\" id=\"11D-Sx-4RV\"/>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"y76-Kz-NYB\" secondAttribute=\"trailing\" constant=\"10\" id=\"37G-k9-IiQ\"/>\n                    <constraint firstItem=\"y76-Kz-NYB\" firstAttribute=\"leading\" secondItem=\"EiT-Mj-1SZ\" secondAttribute=\"leading\" constant=\"10\" id=\"PVU-lO-s2E\"/>\n                    <constraint firstItem=\"y76-Kz-NYB\" firstAttribute=\"top\" secondItem=\"EiT-Mj-1SZ\" secondAttribute=\"top\" constant=\"10\" id=\"syP-1D-KuQ\"/>\n                </constraints>\n            </view>\n            <point key=\"canvasLocation\" x=\"-12\" y=\"120.5\"/>\n        </window>\n        <userDefaultsController representsSharedInstance=\"YES\" id=\"p0U-mu-Cyy\"/>\n        <customObject id=\"oDD-Zm-tB0\" customClass=\"SUUpdater\"/>\n        <customObject id=\"cda-0y-TXV\" customClass=\"TTMAppController\"/>\n        <arrayController id=\"AAU-j7-nuS\">\n            <connections>\n                <binding destination=\"-2\" name=\"contentArray\" keyPath=\"self.availableStatusBarTags\" id=\"Vg5-qT-n9F\"/>\n            </connections>\n        </arrayController>\n    </objects>\n</document>\n"
  },
  {
    "path": "TodoTxtMac/TTMPreferencesController.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n@class TTMAppController;\n\n@interface TTMPreferencesController : NSWindowController <NSTextFieldDelegate>\n\n@property (nonatomic, retain) IBOutlet TTMAppController *appController;\n@property (nonatomic, retain) NSFont *selectedFont;\n@property (nonatomic, retain) IBOutlet NSTextField *statusBarFormat;\n@property (nonatomic, retain) NSArray *availableStatusBarTags;\n@property (nonatomic, retain) IBOutlet NSArrayController *statusBarTags;\n\n#pragma mark - Choose File Methods\n\n/*!\n * @method chooseArchiveFile:\n * @abstract This method allows the user to choose the archive file (done.txt).\n */\n- (IBAction)chooseArchiveFile:(id)sender;\n\n/*!\n * @method chooseDefaultTodoFile:\n * @abstract This method allows the user to choose a default todo.txt file to open at startup.\n */\n- (IBAction)chooseDefaultTodoFile:(id)sender;\n\n/*!\n * @method chooseFileForUserDefaultsKey:withPrompt:\n * @abstract This method calls the file open method, allows the user to select a file,\n * and stores the file URL to a specified user default key.\n * @discussion This is a helper method called by chooseArchiveFile: and chooseDefaultTodoFile:.\n */\n- (void)chooseFileForUserDefaultsKey:(NSString*)userDefaultsKey withPrompt:(NSString*)prompt;\n\n#pragma mark - Behavior Change Methods\n\n/*!\n * @method hideFutureTasksPreferenceChanged:\n * @abstract This method is called when the \"hide future tasks\" settings is changed.\n */\n- (IBAction)hideFutureTasksPreferenceChanged:(id)sender;\n\n/*!\n * @method hideHiddenTasksPreferenceChanged:\n * @abstract This method is called when the \"hide hidden tasks\" settings is changed.\n */\n- (IBAction)hideHiddenTasksPreferenceChanged:(id)sender;\n\n#pragma mark - Font Change Methods\n\n/*!\n * @method openFontPanel:\n * @abstract This method allows the user to choose a user font from the font panel.\n * @discussion The changeFont: method is called whenever the user changes the font in the font panel.\n */\n- (IBAction)openFontPanel:(id)sender;\n\n#pragma mark - Color Change Methods\n\n/*!\n * @method colorChanged:\n * @abstract This method triggers a visual refresh of all open todo files.\n * @discussion This method is called whenever a user changes the color in an associated colorwell.\n */\n- (IBAction)colorChanged:(id)sender;\n\n#pragma mark - Status Bar Methods\n\n/*!\n * @method insertTagIntoStatusBarFormat:\n * @abstract This method inserts the tag selected from the tags popup into the status bar format.\n */\n- (IBAction)insertTagIntoStatusBarFormat:(id)sender;\n\n/*!\n * @method resetStatusBarFormatToDefault:\n * @abstract This method resets the status bar format to the default value.\n */\n- (IBAction)resetStatusBarFormatToDefault:(id)sender;\n\n/*!\n * @method controlTextDidChange:\n * @abstract This is a delegate method for the status bar text field. On any change to the text,\n * it forces a visual refresh of all open windows, to update the status bars.\n */\n- (void)controlTextDidChange:(NSNotification *)aNotification;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMPreferencesController.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMPreferencesController.h\"\n#import \"TTMAppController.h\"\n#import \"TTMDocumentStatusBarText.h\"\n\n@implementation TTMPreferencesController\n\n- (id)initWithWindow:(NSWindow *)window {\n    self = [super initWithWindow:window];\n    if (self) {\n        // Initialization code here.\n        _availableStatusBarTags = [NSArray arrayWithArray:[TTMDocumentStatusBarText availableTags]];\n    }\n    return self;\n}\n\n- (void)windowDidLoad {\n    [super windowDidLoad];\n    \n    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.\n}\n\n- (void)awakeFromNib {\n    NSFontPanel *fontPanel = [NSFontPanel sharedFontPanel];\n    [fontPanel display];\n}\n\n#pragma mark - *** Window delegation ***\n\n- (BOOL)windowShouldClose:(NSWindow *)window {\n    return [window makeFirstResponder:nil]; // validate editing\n}\n\n#pragma mark - Choose File Methods\n\n- (IBAction)chooseArchiveFile:(id)sender {\n    [self chooseFileForUserDefaultsKey:@\"archiveFilePath\" withPrompt:@\"Choose Archive File\"];\n}\n\n- (IBAction)chooseDefaultTodoFile:(id)sender {\n    [self chooseFileForUserDefaultsKey:@\"defaultTodoFilePath\" withPrompt:@\"Choose todo.txt File\"];\n}\n\n- (void)chooseFileForUserDefaultsKey:(NSString*)userDefaultsKey withPrompt:(NSString*)prompt {\n    NSOpenPanel *panel = [NSOpenPanel openPanel];\n    [panel setCanChooseFiles:YES];\n    [panel setCanChooseDirectories:NO];\n    [panel setAllowsMultipleSelection:NO];\n    [panel setPrompt:prompt];\n    [panel setAllowedFileTypes:@[@\"txt\", @\"TXT\", @\"todo\", @\"TODO\", @\"\"]];\n    \n    if ([panel runModal] == NSFileHandlingPanelOKButton) {\n        for (NSURL *fileURL in [panel URLs]) {\n            [[NSUserDefaults standardUserDefaults] setValue:[fileURL path] forKey:userDefaultsKey];\n        }\n    }\n}\n\n#pragma mark - Behavior Change Methods\n\n- (IBAction)hideFutureTasksPreferenceChanged:(id)sender {\n    [self.appController visualRefreshAll:self];\n}\n\n- (IBAction)hideHiddenTasksPreferenceChanged:(id)sender {\n    [self.appController visualRefreshAll:self];\n}\n\n#pragma mark - Font Change Methods\n\n- (IBAction)openFontPanel:(id)sender {\n    NSFontManager *fontManager = [NSFontManager sharedFontManager];\n    [fontManager setTarget:self];\n    [fontManager setSelectedFont:[NSFont userFontOfSize:0.0] isMultiple:NO];\n    [fontManager orderFrontFontPanel:self];\n    [self.appController visualRefreshAll:self];\n}\n\n- (void)changeFont:(id)fontManager {\n    self.selectedFont = [fontManager convertFont:self.selectedFont];\n    [self.appController visualRefreshAll:self];\n}\n\n- (NSFont*)selectedFont {\n    return [NSFont userFontOfSize:0.0];\n}\n\n- (void)setSelectedFont:(NSFont*)newFont {\n    [NSFont setUserFont:newFont];\n}\n\n#pragma mark - Color Change Methods\n\n- (IBAction)colorChanged:(id)sender {\n    [self.appController visualRefreshAll:self];\n}\n\n#pragma mark - Status Bar Methods\n\n- (IBAction)insertTagIntoStatusBarFormat:(id)sender {\n    [[self.statusBarFormat currentEditor] insertText:self.statusBarTags.selectedObjects[0]];\n}\n\n- (IBAction)resetStatusBarFormatToDefault:(id)sender {\n    NSAlert *resetPrompt = [[NSAlert alloc] init];\n    resetPrompt.messageText = @\"Reset status bar format to default?\";\n    resetPrompt.informativeText = @\"Are you sure you want to do this? You will lose all status bar customizations.\";\n    [resetPrompt addButtonWithTitle:@\"OK\"];\n    [resetPrompt addButtonWithTitle:@\"Cancel\"];\n    [resetPrompt beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) {\n        if (returnCode == NSAlertFirstButtonReturn) {\n            [[NSUserDefaults standardUserDefaults] setValue:[TTMDocumentStatusBarText defaultFormat]\n                                                     forKey:@\"statusBarFormat\"];\n            [self.appController visualRefreshAll:self];\n        }\n    }];\n}\n\n- (void)controlTextDidChange:(NSNotification *)aNotification {\n    [self.appController visualRefreshAll:self];\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTableView.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n@class TTMDocument;\n\n@interface TTMTableView : NSTableView\n\n#pragma mark - Properties\n\n@property (nonatomic, retain) IBOutlet TTMDocument *parentDocument;\n@property (nonatomic, copy) NSString *selectedRawText;\n\n#pragma mark - Handle Keyboard Events Methods\n\n/*!\n * @abstract This method allows us to send a new KeyDown event to this class's super\n * or to another class, namely this object's window. It allows us to translate\n * a keypress of 'j', for example, into a down arrow.\n */\n- (void)translateKeyDownEvent:(NSEvent*)theEvent\n                    toKeyDown:(unichar)keyDown\n                sendToControl:(id)targetControl;\n\n#pragma mark - Row Height Methods\n\n/*!\n * @method defaultLineHeightForFont:\n * @abstract This method returns the default line height for the given font.\n * @param font The font for which the line height is needed.\n * @return Returns the line height to set so the given font is not truncated.\n */\n- (CGFloat)defaultLineHeightForFont:(NSFont*)font;\n\n#pragma mark - isEditing property\n\n/*!\n * @method isEditing\n * @return Returns true if the table is being edited.\n */\n- (bool)isEditing;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTableView.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMTableView.h\"\n#import \"TTMDocument.h\"\n#import \"TTMTask.h\"\n\n@implementation TTMTableView\n\n- (id)initWithFrame:(NSRect)frame\n{\n    self = [super initWithFrame:frame];\n    if (self) {\n        _selectedRawText = nil;\n    }\n    return self;\n}\n\n#pragma mark - Handle Keyboard Events Methods\n\n/*!\n * @method keyDown:\n * @abstract Override the default keyDown event handler to call custom commands,\n * such as those handled by the parent window.\n */\n- (void)keyDown:(NSEvent *)theEvent {\n    NSUInteger flags = [theEvent modifierFlags];\n    NSString *passedChar = [theEvent charactersIgnoringModifiers];\n    unichar keyChar = [passedChar characterAtIndex:0];\n\n    // tab key (we do not want the tab key to trigger edit mode)\n    if (keyChar == 9) {\n        [self translateKeyDownEvent:theEvent toKeyDown:keyChar sendToControl:[self window]];\n        return;\n    }\n\n    // command+c to copy selected tasks\n    if ((flags & NSCommandKeyMask) &&\n        (keyChar == 'c')) {\n        [self translateKeyDownEvent:theEvent toKeyDown:keyChar sendToControl:[self window]];\n        return;\n    }\n\n    // handle command+option+arrow key combinations\n    if ((flags & NSCommandKeyMask) &&\n        (flags & NSNumericPadKeyMask) &&\n        (flags & NSAlternateKeyMask)) {\n        [self translateKeyDownEvent:theEvent toKeyDown:keyChar sendToControl:[self window]];\n        return;\n    }\n    \n    // handle command+arrow key combinations\n    if ((flags & NSCommandKeyMask) &&\n        (flags & NSNumericPadKeyMask)) {\n        [self translateKeyDownEvent:theEvent toKeyDown:keyChar sendToControl:[self window]];\n        return;\n    }\n    \n    // handle option + key shortcuts\n    // This fixes a bug in which Option+s jumps to the first task starting with the letter 's'.\n    if (flags & NSAlternateKeyMask) {\n        [self translateKeyDownEvent:theEvent toKeyDown:keyChar sendToControl:[self window]];\n        return;\n    }\n    \n    // do not override the super for other special key combinations\n    if ((flags & NSCommandKeyMask) ||\n        (flags & NSControlKeyMask)) {\n        [super keyDown:theEvent];\n        return;\n    }\n\n    // delete/backspace\n    if (keyChar == NSBackspaceCharacter) {\n        [self translateKeyDownEvent:theEvent\n                          toKeyDown:NSBackspaceCharacter\n                      sendToControl:[self window]];\n        return;\n    }\n\n    // move down\n    if (keyChar == 'j') {\n        [self translateKeyDownEvent:theEvent toKeyDown:NSDownArrowFunctionKey sendToControl:self];\n        return;\n    }\n    \n    // move up\n    if (keyChar == 'k') {\n        [self translateKeyDownEvent:theEvent toKeyDown:NSUpArrowFunctionKey sendToControl:self];\n        return;\n    }\n    \n    // update task (send Enter/Return to super)\n    if (keyChar == NSEnterCharacter || keyChar == '\\r' || keyChar == 'u') {\n        [self translateKeyDownEvent:theEvent toKeyDown:'u' sendToControl:[self window]];\n        return;\n    }\n    \n    // Handle all other single-character commands (those that do not require translating\n    // to different key presses) by passing them to the parent window.\n    // The key equivalents are defined for the menu items in MainMenu.xib\n    NSMutableCharacterSet *singleKeyCommands = [[NSMutableCharacterSet alloc] init];\n    [singleKeyCommands addCharactersInString:@\"nxdfprcsait.0123456789\"];\n    if ([singleKeyCommands characterIsMember:keyChar]) {\n        [self translateKeyDownEvent:theEvent toKeyDown:keyChar sendToControl:[self window]];\n        return;\n    }\n\n    // default behavior: pass the event to the super if we didn't make a match above\n    [super keyDown:theEvent];\n}\n\n- (void)translateKeyDownEvent:(NSEvent*)theEvent\n                    toKeyDown:(unichar)keyDown\n                sendToControl:(id)targetControl {\n    NSString *keyDownString = [NSString stringWithCharacters:&keyDown length:1];\n    NSEvent *newEvent =[NSEvent keyEventWithType:NSKeyDown\n                                        location:theEvent.locationInWindow\n                                   modifierFlags:theEvent.modifierFlags\n                                       timestamp:theEvent.timestamp\n                                    windowNumber:theEvent.windowNumber\n                                         context:nil\n                                      characters:keyDownString\n                     charactersIgnoringModifiers:keyDownString\n                                       isARepeat:theEvent.isARepeat\n                                         keyCode:keyDown];\n    if (targetControl == self || nil == targetControl)\n    {\n        [super keyDown:newEvent];\n    }  else {\n        [targetControl keyDown:newEvent];\n    }\n}\n\n#pragma mark - Respond to Changes Methods\n\n- (void)editColumn:(NSInteger)column row:(NSInteger)row withEvent:(NSEvent *)theEvent select:(BOOL)select {\n    [self.tableColumns.lastObject setMinWidth:0];\n    [self.tableColumns.lastObject setMaxWidth:self.parentDocument.windowForSheet.frame.size.width];\n    [self.tableColumns.lastObject setWidth:self.parentDocument.windowForSheet.frame.size.width];\n\n    [super editColumn:column row:row withEvent:theEvent select:select];\n}\n\n- (void)textDidBeginEditing:(NSNotification*)notification {\n    [self.parentDocument initializeUpdateSelectedTask];\n    [super textDidBeginEditing:notification];\n    self.selectedRawText = [[notification object] string];\n}\n\n- (void)textDidEndEditing:(NSNotification*)notification {\n    [super textDidEndEditing:notification];\n    NSString *newValue = [[notification object] string];\n    \n    // Handle no change.\n    if (self.selectedRawText == nil ||\n        [self.selectedRawText isEqualToString:newValue]) {\n        [self.parentDocument setTableWidthToWidthOfContents];\n        return;\n    }\n    \n    [self.parentDocument finalizeUpdateSelectedTask:newValue];\n    self.selectedRawText = nil;\n}\n\n#pragma mark - Drag and Drop Methods\n\n- (NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender {\n    return NSDragOperationCopy;\n}\n\n- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender {\n    return NSDragOperationCopy;\n}\n\n- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {\n    return YES;\n}\n\n- (void)concludeDragOperation:(id<NSDraggingInfo>)sender {\n    [self.parentDocument addNewTasksFromDragAndDrop:sender];\n}\n\n#pragma mark - Row Height Methods\n\n- (CGFloat)rowHeight {\n    return ([self.parentDocument usingUserFont]) ?\n        [self defaultLineHeightForFont:[self.parentDocument userFont]] :\n        [super rowHeight];\n}\n\n- (CGFloat)defaultLineHeightForFont:(NSFont*)font {\n    // Use default user font if font is nil.\n    if (font == nil) {\n        font = [NSFont userFontOfSize:0];\n    }\n    \n    NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];\n    [layoutManager setTypesetterBehavior:NSTypesetterBehavior_10_2_WithCompatibility];\n    return [layoutManager defaultLineHeightForFont:font];\n}\n\n#pragma mark - isEditing property\n\n- (bool)isEditing {\n    return (self.editedRow != -1);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTableViewDelegate.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n@class TTMTask;\n\n@interface TTMTableViewDelegate : NSObject <NSTableViewDelegate>\n\n#pragma mark - Properties\n\n@property (nonatomic, retain) IBOutlet NSArrayController *arrayController;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTableViewDelegate.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMTableViewDelegate.h\"\n#import \"RegExCategories.h\"\n#import \"TTMTask.h\"\n#import \"NSUserDefaults+myColorSupport.h\"\n\n@implementation TTMTableViewDelegate\n\n#pragma mark - TableView Delegate Methods\n\n- (void)tableView:(NSTableView *)tableView\n  willDisplayCell:(id)cell\n   forTableColumn:(NSTableColumn *)tableColumn\n              row:(NSInteger)row {\n    // Apply the task's display format to the rawText cell.\n    if ([[tableColumn identifier] isEqualToString:@\"rawText\"]) {\n        TTMTask *task = [[self.arrayController arrangedObjects] objectAtIndex:row];\n        if (nil == task || task.isBlank) {\n            return;\n        }\n\n        // Get the user's preferred highlight colors or the defaults.\n        BOOL selected = ([tableView.selectedRowIndexes containsIndex:row]);\n        BOOL useHighlightColorsInTaskList = [[NSUserDefaults standardUserDefaults]\n                                             boolForKey:@\"useHighlightColorsInTaskList\"];\n        NSColor *completedColor = [NSColor lightGrayColor];\n        NSColor *dueTodayColor = ([[NSUserDefaults standardUserDefaults]\n                                   boolForKey:@\"useCustomColorForDueTodayTasks\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"dueTodayColor\"] :\n            [NSColor redColor];\n        NSColor *overdueColor = ([[NSUserDefaults standardUserDefaults]\n                                  boolForKey:@\"useCustomColorForOverdueTasks\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"overdueColor\"] :\n            [NSColor purpleColor];\n        NSColor *projectColor = ([[NSUserDefaults standardUserDefaults]\n                                  boolForKey:@\"useCustomColorForProjects\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"projectColor\"] :\n            [NSColor darkGrayColor];\n        NSColor *contextColor = ([[NSUserDefaults standardUserDefaults]\n                                  boolForKey:@\"useCustomColorForContexts\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"contextColor\"] :\n            [NSColor darkGrayColor];\n        NSColor *tagColor = ([[NSUserDefaults standardUserDefaults]\n                              boolForKey:@\"useCustomColorForTags\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"tagColor\"] :\n            [NSColor darkGrayColor];\n        NSColor *dueDateColor = ([[NSUserDefaults standardUserDefaults]\n                                  boolForKey:@\"useCustomColorForDueDates\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"dueDateColor\"] :\n            [NSColor darkGrayColor];\n        NSColor *thresholdDateColor = ([[NSUserDefaults standardUserDefaults]\n                                        boolForKey:@\"useCustomColorForThresholdDates\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"thresholdDateColor\"] :\n            [NSColor darkGrayColor];\n        NSColor *creationDateColor = ([[NSUserDefaults standardUserDefaults]\n                                        boolForKey:@\"useCustomColorForCreationDates\"]) ?\n            [[NSUserDefaults standardUserDefaults] colorForKey:@\"creationDateColor\"] :\n            [NSColor darkGrayColor];\n\n        NSAttributedString *as = [task displayText:selected\n                                              font:[cell font]\n                      useHighlightColorsInTaskList:useHighlightColorsInTaskList\n                                    completedColor:completedColor\n                                     dueTodayColor:dueTodayColor\n                                      overdueColor:overdueColor\n                                      projectColor:projectColor\n                                      contextColor:contextColor\n                                          tagColor:tagColor\n                                      dueDateColor:dueDateColor\n                                thresholdDateColor:thresholdDateColor\n                                 creationDateColor:creationDateColor];\n        \n        [cell setAttributedStringValue:as];\n    }\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTask.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n\n/*!\n * @class TTMTask\n * @abstract TTMTask represents a single todo.txt task.\n * @discussion A single task is a single line in the todo.txt file, which is in a specific format.\n * @seealso Todo.txt format specification: \n * https://github.com/ginatrapani/todo.txt-cli/wiki/The-Todo.txt-Format\n */\n@interface TTMTask : NSObject <NSCopying>\n\n/*! Defines the three due states of a task: Overdue, Due Today, and Not Due */\ntypedef enum : NSUInteger {\n    Overdue,\n    DueToday,\n    NotDue,\n    NoDueDate\n} TTMDueState;\n\n/*! Defines the threshold date-related state of a task */\ntypedef enum : NSUInteger {\n    NoThresholdDate,\n    ThresholdBeforeToday,\n    ThresholdIsToday,\n    ThresholdAfterToday\n} TTMThresholdState;\n\n#pragma mark - Properties\n\n/*! Raw text of the task (a single line in the todo.txt file) */\n@property (nonatomic, readwrite, setter = setRawText:, getter = rawText) NSString *rawText;\n\n/*! The line number in todo.txt file, starting at zero */\n@property (nonatomic, readonly) NSUInteger taskId;\n\n@property (nonatomic, readonly) NSString *fullPriorityText;\n@property (nonatomic, readonly) NSString *priorityText;\n@property (nonatomic, readonly) unichar priority;\n@property (nonatomic, readonly) NSString *dueDateText;\n@property (nonatomic, readonly) NSDate *dueDate;\n@property (nonatomic, readonly) NSString *creationDateText;\n@property (nonatomic, readonly) NSDate *creationDate;\n@property (nonatomic, readonly) NSString *completionDateText;\n@property (nonatomic, readonly) NSDate *completionDate;\n@property (nonatomic, readonly) NSString *thresholdDateText;\n@property (nonatomic, readonly) NSDate *thresholdDate;\n@property (nonatomic, readonly, copy) NSArray *contextsArray;\n@property (nonatomic, readonly, copy) NSString *contexts;\n@property (nonatomic, readonly) BOOL hasContexts;\n@property (nonatomic, readonly, copy) NSArray *projectsArray;\n@property (nonatomic, readonly, copy) NSString *projects;\n@property (nonatomic, readonly) BOOL hasProjects;\n@property (nonatomic, readonly) TTMDueState dueState;\n@property (nonatomic, readonly) TTMThresholdState thresholdState;\n@property (nonatomic, readonly) BOOL isCompleted;\n@property (nonatomic, readonly) BOOL isPrioritized;\n@property (nonatomic, readonly) BOOL isBlank;\n@property (nonatomic, readonly) BOOL isRecurring;\n@property (nonatomic, readonly) NSString *recurrencePattern;\n@property (nonatomic, readonly) BOOL isHidden;\n\n#pragma mark - Init Methods\n\n/*!\n * @method initWithRawText:withTaskId:withPrependedDate:\n * @abstract Initializes task object with a task ID number, raw text, and a prepended date \n * (or no date if nil is submitted).\n * @discussion This function initializes the task and sets up all its properties.\n * @param taskId An integer that represents the task's line number (ID) in the todo.txt file.\n * @param rawText The raw text that represents a task in the Todo.txt format.\n * @param prependedDate The creation date of the task to prepend to the task.\n * @result Returns the newly initiatized object or an error.\n * @seealso Todo.txt format specification:\n * https://github.com/ginatrapani/todo.txt-cli/wiki/The-Todo.txt-Format\n */\n- (id)initWithRawText:(NSString*)rawText withTaskId:(NSInteger)taskId\n   withPrependedDate:(NSDate*)prependedDate;\n\n/*!\n * @method initWithRawText:withTaskId:\n * @abstract Initializes task object with a task ID number and raw text.\n * @discussion This function initializes the task and sets up all its properties.\n * @param taskId An integer that represents the task's line number (ID) in the todo.txt file.\n * @param rawText The raw text that represents a task in the Todo.txt format.\n * @result Returns the newly initiatized object or an error.\n * @seealso Todo.txt format specification:\n * https://github.com/ginatrapani/todo.txt-cli/wiki/The-Todo.txt-Format\n */\n- (id)initWithRawText:(NSString*)rawText withTaskId:(NSInteger)taskId;\n\n#pragma mark - rawText Methods\n\n/*!\n * @method setRawText:\n * @abstract Changes raw text of the task.\n * @discussion This function initializes the task and sets up all its properties other than \n * the taskId number.\n * @param rawText The raw text that represents a task in the Todo.txt format.\n * @seealso Todo.txt format specification. \n * https://github.com/ginatrapani/todo.txt-cli/wiki/The-Todo.txt-Format\n */\n- (void)setRawText:(NSString*)rawText;\n\n/*!\n * @method setRawText:withPrependedDate:\n * @abstract Changes raw text of the task and prepends a date if a creation date if one \n * does not already exist in the first parameter.\n * @discussion This function initializes the task and sets up all its properties other than \n * the taskId number.\n * @param rawText The raw text that represents a task in the Todo.txt format.\n * @param taskId An integer that represents the task's line number (ID) in the todo.txt file.\n * @param prependedDate A date, which represents the task creation date, to prepend to \n * the task's raw text.\n * @seealso Todo.txt format specification.\n * https://github.com/ginatrapani/todo.txt-cli/wiki/The-Todo.txt-Format\n */\n- (void)setRawText:(NSString*)rawText withPrependedDate:(NSDate*)prependedDate;\n\n/*!\n * @method displayText:\n * @abstact Returns the task's raw text as a formatted string for display.\n * @return Returns an attributed string to be used for display in the user interface.\n * @discussion For good MVC compartmentalization, this method does not access the application's\n * user defaults. Therefore, all color options are passed to this method.\n */\n- (NSAttributedString*)displayText:(BOOL)selected\n                              font:(NSFont*)font\n      useHighlightColorsInTaskList:(BOOL)useHighlightColorsInTaskList\n                    completedColor:(NSColor*)completedColor\n                     dueTodayColor:(NSColor*)dueTodayColor\n                      overdueColor:(NSColor*)overdueColor\n                      projectColor:(NSColor*)projectColor\n                      contextColor:(NSColor*)contextColor\n                          tagColor:(NSColor*)tagColor\n                      dueDateColor:(NSColor*)dueDateColor\n                thresholdDateColor:(NSColor*)thresholdDateColor\n                 creationDateColor:(NSColor*)creationDateColor;\n\n#pragma mark - Append and Prepend Methods\n\n/*!\n * @method appendText:\n * @abstract Appends text to the end of the task.\n */\n- (void)appendText:(NSString*)textToAppend;\n\n/*!\n * @method prependText:\n * @abstract Prepends text to the beginning of the task. \n @ @discussion Prepending text to a task with a priority or a creation date will \n * insert text after the priority or creation date. Otherwise, it will insert text \n * at the start of the task.\n */\n- (void)prependText:(NSString*)textToPrepend;\n\n#pragma Find/replace Method\n\n/*!\n * @method prependText:\n * @abstract Prepends text to the beginning of the task.\n * @param textToReplace\n * @param replacementText\n */\n- (void)replaceText:(NSString*)textToReplace withText:(NSString*)replacementText;\n\n#pragma mark - Due/Not Due Method\n\n/*!\n * @method getDueState:\n * @abstract Compares the task's DueDate property to today's date and determines\n * the due status of the task (overdue, due today, or not due).\n * @return Returns a TTMDueState enum type value that indicates a task is \"Overdue\", \"Not Due\", \n * or \"Due Today\".\n * @discussion This method sets the property dueState.\n */\n- (TTMDueState)getDueState;\n\n#pragma mark - Threshold Date Methods\n\n/*!\n * @method setThresholdDate:\n * @abstract Sets the threshold date.\n * @param dueDate The threshold date to set.\n * @discussion The thresholdDate parameter is not a string, it is an NSDate value.\n * Handling of \"natural language\" due dates would have be handled prior to invoking this method.\n */\n- (void)setThresholdDate:(NSDate *)thresholdDate;\n\n/*!\n * @method removeThresholdDate;\n * @abstract Removes the threshold date from the task's raw text.\n */\n- (void)removeThresholdDate;\n\n/*!\n * @method incrementThresholdDate:\n * @abstract Increases threshold day by a specified number of days.\n * Sets threshold date to tomorrow if there is no threshold date.\n * @param Number of days to add to the task threshold date.\n */\n- (void)incrementThresholdDate:(NSInteger)days;\n\n/*!\n * @method decrementThresholdDate:\n * @abstract Decreases threshold day by a specified number of days.\n * Sets threshold date to yesterday if there is no threshold date.\n * @param Number of days to subtract to the task threshold date.\n */\n- (void)decrementThresholdDate:(NSInteger)days;\n\n/*!\n * @method getThresholdState:\n * @abstract Compares the task's thresholdDate property to today's date and determines\n * the status of the task (today's date is before, on, or after the threshold date).\n * @return Returns a TTMThresholdState enum type value that indicates whether today is before,\n   on, or after a task's threshold date.\n * or \"Due Today\".\n * @discussion This method sets the property thresholdState.\n */\n- (TTMThresholdState)getThresholdState;\n\n#pragma mark - Priority Methods\n\n/*!\n * @method setPriority:\n * @abstract Sets the priority of a task, whether or not it already has\n * a priority assigned.\n * @param priority This is the priority to set the task to. It must be a capital letter [A-Z],\n * as in @\"A\".\n * @discussion The priority parameter is not passed with parentheses, as in \"(A)\", \n * as it is written in the todo.txt file.\n */\n- (void)setPriority:(unichar)priority;\n\n/*!\n * @method increasePriority:\n * @abstract Increases the priority of a task by one step.\n * @discussion If the task has no priority, set priority to 'A'.\n */\n- (void)increasePriority;\n\n/*!\n * @method decreasePriority:\n * @abstract Decreases the priority of a task by one step.\n * @discussion If the task has no priority, set priority to 'A'.\n */\n- (void)decreasePriority;\n\n/*!\n * @method removePriority:\n * @abstract Removes the priority of a task.\n */\n- (void)removePriority;\n\n#pragma mark - Completion Methods\n\n/*!\n * @method markComplete:\n * @abstract Marks an incomplete task as complete by prepending \"x YYYY-mm-dd \" to the raw text.\n * @discussion This method is usually called via the toggleCompletionStatus: method.\n */\n- (void)markComplete;\n\n/*!\n * @method markIncomplete:\n * @abstract Marks a completed task as incomplete by removing the prepended\n * \"x YYYY-mm-dd \" from the raw text.\n * @discussion This method is usually called via the toggleCompletionStatus method.\n */\n- (void)markIncomplete;\n\n/*!\n * @method toggleCompletionStatus:\n * @abstract Toggles completion status of a task.\n * @discussion This method calls the method markIncomplete or the method markIncomplete.\n */\n- (void)toggleCompletionStatus;\n\n# pragma mark - Postpone and Set Due Date Methods\n\n/*!\n * @method postponeTask;\n * @abstract Postpones a task by the number of days provided.\n * @discussion This method will set a due date if none already exists. If a negative number\n * is passed to it, the due date will move up rather than back.\n */\n- (void)postponeTask:(NSInteger)days;\n\n/*!\n * @method incrementDueDate:\n * @abstract Increases due date by a specified number of days.\n * Sets due date to tomorrow if there is no threshold date.\n * @param Number of days to add to the task due date.\n */\n- (void)incrementDueDate:(NSInteger)days;\n\n/*!\n * @method decrementDueDate:\n * @abstract Decreases due date by a specified number of days.\n * Sets due date to yesterday if there is no threshold date.\n * @param Number of days to subtract to the task due date.\n */\n- (void)decrementDueDate:(NSInteger)days;\n\n/*!\n * @method setDueDate:\n * @abstract Sets the due date.\n * @param dueDate The due date to set.\n * @discussion The dueDate parameter is not a string, it is an NSDate value.\n * Handling of \"natural language\" due dates would have be handled prior to invoking this method.\n */\n- (void)setDueDate:(NSDate *)dueDate;\n\n/*!\n * @method removeDueDate;\n * @abstract Removes the due date from the task's raw text.\n */\n- (void)removeDueDate;\n\n- (TTMTask*)newRecurringTask;\n\n- (void)removeCreationDate;\n\n@end"
  },
  {
    "path": "TodoTxtMac/TTMTask.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMTask.h\"\n#import \"RegExCategories.h\"\n#import \"TTMDateUtility.h\"\n#import \"NSMutableAttributableString+ColorRegExMatches.h\"\n#import \"NSDate+RelativeDates.h\"\n\n@implementation TTMTask\n\n@synthesize rawText=_rawText;\n\n// define constants for regular expressions\nstatic NSString * const LineBreakPattern = @\"(\\\\r|\\\\n)\";\nstatic NSString * const CompletedPattern = @\"^x[ ]((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))[ ]\";\nstatic NSString * const CompletionDatePattern = @\"(?<=^x[ ])((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const PriorityTextPattern = @\"^(\\\\([A-Z]\\\\)[ ])\";\nstatic NSString * const CreationDatePatternIncomplete = @\"(?<=^|\\\\([A-Z]\\\\)[ ])((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const CreationDatePatternIncompletePlusTrailingSpace = @\"(?<=^|\\\\([A-Z]\\\\)[ ])((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))([ ]|$)\";\nstatic NSString * const CreationDatePatternCompleted = @\"(?<=^x[ ]((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))[ ])((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const CreationDatePatternCompletedPlusTrailingSpace = @\"(?<=^x[ ]((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))[ ])((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const DueDatePattern = @\"(?<=(^|[ ])due:)((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const FullDueDatePatternMiddleOrEnd = @\"(([ ])due:)((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const FullDueDatePatternBeginning = @\"^due:((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))[ ]?|$\";\nstatic NSString * const ThresholdDatePattern = @\"(?<=(^|[ ])t:)((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const FullThresholdDatePatternMiddleOrEnd = @\"(([ ])t:)((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))(?=[ ]|$)\";\nstatic NSString * const FullThresholdDatePatternBeginning = @\"^t:((\\\\d{4})-(\\\\d{2})-(\\\\d{2}))[ ]?|$\";\nstatic NSString * const ProjectPattern = @\"(?<=^|[ ])(\\\\+[^[ ]]+)\";\nstatic NSString * const ContextPattern = @\"(?<=^|[ ])(\\\\@[^[ ]]+)\";\nstatic NSString * const TagPattern = @\"(?<=^|[ ])([:graph:]+:[:graph:]+)\";\nstatic NSString * const RecurrencePattern = @\"(?<=(^|[ ])rec:)((\\\\+?)\\\\d+[dDwWmMyYbB])\";\nstatic NSString * const HiddenPattern = @\"(?<=^|[ ])(h:1)(?=[ ]|$)\";\n\n\n#pragma mark - Init Methods\n\n- (id)initWithRawText:(NSString*)rawText withTaskId:(NSInteger)taskId\n   withPrependedDate:(NSDate*)prependedDate {\n    self = [super init];\n    if (self) {\n        \n        _taskId = taskId;\n        [self setRawText:rawText withPrependedDate:prependedDate];\n        \n    }\n    return self;\n}\n\n- (id)initWithRawText:(NSString*)rawText withTaskId:(NSInteger)taskId {\n    \n    return [self initWithRawText:rawText withTaskId:taskId withPrependedDate:nil];\n}\n\n#pragma mark - rawText Methods\n\n- (void)setRawText:(NSString*)rawText withPrependedDate:(NSDate*)prependedDate {\n    NSString *newRawText;\n    \n    if (!prependedDate ||\n        [rawText isMatch:RX(CreationDatePatternIncomplete)] ||\n        [rawText isMatch:RX(CreationDatePatternCompleted)] ||\n        [rawText isMatch:RX(CompletedPattern)]\n        ) {\n\n        // if no prepended date is passed, or if there is already a creation date, or the task is already completed, prepend nothing\n        newRawText = rawText;\n    \n    } else if ([rawText isMatch:RX(PriorityTextPattern)]) {\n        \n        // if the rawText has a priority, prepend the date after the priority\n        newRawText = [NSString stringWithFormat:@\"%@%@%c%@\",\n                      [rawText substringToIndex:4],\n                      [TTMDateUtility convertDateToString:prependedDate],\n                      ' ',\n                      [rawText substringFromIndex:4]];\n        \n    } else {\n        \n        // if the rawText has no priority, prepend the date at the beginning of the string\n        newRawText = [NSString stringWithFormat:@\"%@%c%@\",\n                      [TTMDateUtility convertDateToString:prependedDate],\n                      ' ',\n                      rawText];\n    }\n    \n    [self setRawText:newRawText];\n}\n\n- (void)setRawText:(NSString*)rawText {\n    // only update rawText and other properties if the new raw text differs from the old raw text\n    if ([rawText isEqualToString:_rawText]) {\n        return;\n    }\n    \n    // make sure the task doesn't contain line breaks\n    _rawText = [rawText replace:RX(LineBreakPattern) with:@\"\"];\n\n    // handle blank strings gracefully\n    if (rawText == nil || [rawText isEqualToString:@\"\"]) {\n        _isBlank = YES;\n        _isCompleted = NO;\n        _isPrioritized = NO;\n        _priorityText = @\"\";\n        _priority = '~';\n        _contexts = @\"\";\n        _contextsArray = nil;\n        _projects = @\"\";\n        _projectsArray = nil;\n        _completionDateText = @\"\";\n        _completionDate = nil;\n        _dueDateText = @\"\";\n        _dueDate = nil;\n        _creationDateText = @\"\";\n        _creationDate = nil;\n        _thresholdDateText = @\"\";\n        _thresholdDate = nil;\n        _dueState = NotDue;\n        _hasContexts = NO;\n        _hasProjects = NO;\n        _isRecurring = NO;\n        _recurrencePattern = nil;\n        _isHidden = NO;\n        return;\n    }\n    \n    // set properties for non-blank strings\n    _isBlank = NO;\n    \n    // completion date\n    _completionDateText = [_rawText firstMatch:RX(CompletionDatePattern)];\n    // Set completion date to the high date (9999-12-31) to ensure that tasks with no\n    // completion date are sorted after tasks with a due date.\n    NSDate *newCompletionDate = (_completionDateText == nil) ?\n        [TTMDateUtility convertStringToDate:@\"9999-12-31\"] :\n        [TTMDateUtility convertStringToDate:_completionDateText];\n    _completionDate = (newCompletionDate == nil) ?\n        [TTMDateUtility convertStringToDate:@\"9999-12-31\"] :\n        newCompletionDate;\n    _isCompleted = [_rawText isMatch:RX(CompletedPattern)] && (newCompletionDate != nil);\n    \n    // priority\n    _isPrioritized = [_rawText isMatch:RX(PriorityTextPattern)];\n    _fullPriorityText = [_rawText firstMatch:RX(PriorityTextPattern)];\n    NSRange range = {.location = 1, .length = 1};\n    _priorityText = [_fullPriorityText substringWithRange:range];\n    // Set priority to tilde (~) to ensure that tasks with no priority are sorted after\n    // tasks with any other priority (A-Z).\n    _priority = (_priorityText != nil) ? [_priorityText characterAtIndex:0] : '~';\n    \n    // sorted array of projects\n    _projectsArray = [[_rawText matches:RX(ProjectPattern)]\n                      sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];\n    _projects = [_projectsArray componentsJoinedByString:@\", \"];\n    _hasProjects = (_projectsArray.count > 0);\n\n    // sorted array of contexts\n    _contextsArray = [[_rawText matches:RX(ContextPattern)]\n                      sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];\n    _contexts = [_contextsArray componentsJoinedByString:@\", \"];\n    _hasContexts = (_contextsArray.count > 0);\n    \n    // due date\n    _dueDateText = [_rawText firstMatch:RX(DueDatePattern)];\n    // Set due date to the high date (9999-12-31) to ensure that tasks with no due date\n    // are sorted after tasks with a due date.\n    NSDate *newDueDate = (_dueDateText == nil) ?\n        [TTMDateUtility convertStringToDate:@\"9999-12-31\"] :\n        [TTMDateUtility convertStringToDate:_dueDateText];\n    if (newDueDate == nil) {\n        _dueDate = [TTMDateUtility convertStringToDate:@\"9999-12-31\"];\n        _dueDateText = @\"\";\n    } else {\n        _dueDate = newDueDate;\n    }\n\n    // creation date\n    _creationDateText = _isCompleted ?\n        [_rawText firstMatch:RX(CreationDatePatternCompleted)] :\n        [_rawText firstMatch:RX(CreationDatePatternIncomplete)];\n    // Set creation date to the high date (9999-12-31) to ensure that tasks with no\n    // creation date are sorted after tasks with a creation date.\n    NSDate *newCreationDate = (_creationDateText == nil) ?\n        [TTMDateUtility convertStringToDate:@\"9999-12-31\"] :\n        [TTMDateUtility convertStringToDate:_creationDateText];\n    if (newCreationDate == nil) {\n        _creationDate = [TTMDateUtility convertStringToDate:@\"9999-12-31\"];\n        _creationDateText = @\"\";\n    } else {\n        _creationDate = newCreationDate;\n    }\n\n    // threshold date\n    _thresholdDateText = [_rawText firstMatch:RX(ThresholdDatePattern)];\n    // Set threshold date to the low date (1900-01-01) to ensure that tasks with no\n    // threshold date are properly sorted/displated when filtered.\n    NSDate *newThresholdDate = (_thresholdDateText == nil) ?\n        [TTMDateUtility convertStringToDate:@\"1900-01-01\"] :\n        [TTMDateUtility convertStringToDate:_thresholdDateText];\n    if (newThresholdDate == nil) {\n        _thresholdDate = [TTMDateUtility convertStringToDate:@\"1900-01-01\"];\n        _thresholdDateText = @\"\";\n    } else {\n        _thresholdDate = newThresholdDate;\n    }\n    \n    // due state (past due, due today, not due)\n    _dueState = [self getDueState];\n    \n    // threshold state (no threshold date, before, on, after threshold date)\n    _thresholdState = [self getThresholdState];\n    \n    // recurrence\n    _isRecurring = [_rawText isMatch:RX(RecurrencePattern)];\n    if (_isRecurring) {\n        _recurrencePattern = [rawText firstMatch:RX(RecurrencePattern)];\n    }\n    \n    // is hidden\n    _isHidden = [_rawText isMatch:RX(HiddenPattern)];\n}\n\n- (NSString*)rawText {\n    return _rawText;\n}\n\n- (NSAttributedString*)displayText:(BOOL)selected\n                              font:(NSFont*)font\n      useHighlightColorsInTaskList:(BOOL)useHighlightColorsInTaskList\n                    completedColor:(NSColor*)completedColor\n                     dueTodayColor:(NSColor*)dueTodayColor\n                      overdueColor:(NSColor*)overdueColor\n                      projectColor:(NSColor*)projectColor\n                      contextColor:(NSColor*)contextColor\n                          tagColor:(NSColor*)tagColor\n                      dueDateColor:(NSColor*)dueDateColor\n                thresholdDateColor:(NSColor*)thresholdDateColor\n                 creationDateColor:(NSColor*)creationDateColor {\n    NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:self.rawText];\n    NSRange fullStringRange = NSMakeRange(0, [as length]);\n    \n    [as beginEditing];\n\n    // Apply font to the entire string.\n    // This was added because applying boldface to the task priority was resetting the font\n    // of the priority substring to the default font.\n    [as addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, as.length)];\n    \n    // Apply strikethrough and light gray color to completed tasks when they are displayed\n    // in the tableView.\n    if (self.isCompleted) {\n        [as addAttribute:NSStrikethroughStyleAttributeName\n                   value:(NSNumber*)kCFBooleanTrue\n                   range:fullStringRange];\n        [as addAttribute:NSForegroundColorAttributeName\n                   value:[NSColor lightGrayColor]\n                   range:fullStringRange];\n        return as;\n    }\n    \n    // Apply boldface to the task priority.\n    if (self.isPrioritized) {\n        [as applyFontTraits:NSBoldFontMask range:NSMakeRange(0, 3)];\n    }\n    \n    // Only change colors if row is not selected and user wants to see highlight colors.\n    if (selected || !useHighlightColorsInTaskList) {\n        return as;\n    }\n    \n    // Color due texts.\n    if (self.dueState == DueToday) {\n        [as applyColorToFullStringRange:dueTodayColor];\n    }\n    \n    // Color overdue texts.\n    if (self.dueState == Overdue) {\n        [as applyColorToFullStringRange:overdueColor];\n    }\n    \n    // Color projects.\n    [as applyColor:projectColor toRegexPatternMatches:ProjectPattern];\n    \n    // Color contexts.\n    [as applyColor:contextColor toRegexPatternMatches:ContextPattern];\n    \n    // Color tags.\n    [as applyColor:tagColor toRegexPatternMatches:TagPattern];\n    \n    // Color due dates.\n    [as applyColor:dueDateColor toRegexPatternMatches:FullDueDatePatternBeginning];\n    [as applyColor:dueDateColor toRegexPatternMatches:FullDueDatePatternMiddleOrEnd];\n    \n    // Color threshold dates.\n    [as applyColor:thresholdDateColor toRegexPatternMatches:FullThresholdDatePatternBeginning];\n    [as applyColor:thresholdDateColor toRegexPatternMatches:FullThresholdDatePatternMiddleOrEnd];\n\n    // Color creation dates (incomplete tasks only).\n    [as applyColor:creationDateColor toRegexPatternMatches:CreationDatePatternIncomplete];\n    \n    [as endEditing];\n    return [as copy];\n}\n\n#pragma mark - Append and Prepend Methods\n\n- (void)appendText:(NSString*)textToAppend {\n    if (self.isBlank) {\n        self.rawText = textToAppend;\n        return;\n    }\n    \n    self.rawText = [self.rawText stringByAppendingFormat:@\"%c%@\", ' ', textToAppend];\n}\n\n- (void)prependText:(NSString*)textToPrepend {\n    if (self.isBlank) {\n        self.rawText = textToPrepend;\n        return;\n    }\n\n    NSUInteger insertionIndex;\n    \n    if (self.isCompleted && [self.creationDateText length] > 0) {\n        // For completed tasks with creation date, prepend text after the completion date and creation date\n        insertionIndex = 24;\n    } else if (self.isCompleted && [self.creationDateText length] == 0) {\n        // For completed tasks with no creation date, prepend text after the completion date\n        insertionIndex = 13;\n    } else if (self.isPrioritized && [self.creationDateText length] > 0) {\n        // For incomplete tasks with a creation date, prepend text after priority and creation date.\n        insertionIndex = 15;\n    } else if (self.isPrioritized && [self.creationDateText length] == 0) {\n        // For incomplete tasks with a priority and no creation date, prepend text after priority.\n        insertionIndex = 4;\n    } else if ([self.creationDateText length] > 0) {\n        // For incomplete tasks with a creation date, prepend text after creation date.\n        insertionIndex = 11;\n    } else {\n        // For all other types of tasks, prepend text to the beginning of the task.\n        insertionIndex = 0;\n    }\n    \n    if (insertionIndex == 0)\n    {\n        self.rawText = [NSString stringWithFormat:@\"%@%@%@\", textToPrepend, @\" \", self.rawText];\n        return;\n    }\n\n    NSString *rawTextPrefix = [self.rawText substringWithRange:NSMakeRange(0, insertionIndex - 1)];\n    NSString *rawTextRemainder = [self.rawText substringFromIndex:insertionIndex];\n    NSArray *rawTextComponents = @[rawTextPrefix, textToPrepend, rawTextRemainder];\n    self.RawText = [rawTextComponents componentsJoinedByString:@\" \"];\n\n//    NSString *separator = @\" \";\n//    NSString *rawTextRemainder = self.rawText;\n//    NSArray *stringComponents = nil;\n//    NSString *trimmedPriorityText = [self.fullPriorityText substringToIndex:3];\n//\n//    if (self.isPrioritized && self.creationDateText != nil) {\n//        rawTextRemainder = [self.rawText substringFromIndex:15];\n//        stringComponents = @[trimmedPriorityText, self.creationDateText,\n//                             textToPrepend, rawTextRemainder  ];\n//    } else if (self.isPrioritized && self.creationDateText == nil) {\n//        rawTextRemainder = [self.rawText substringFromIndex:4];\n//        stringComponents = @[trimmedPriorityText, textToPrepend, rawTextRemainder];\n//    } else if (self.creationDateText != nil) {\n//        rawTextRemainder = [self.rawText substringFromIndex:11];\n//        stringComponents = @[self.creationDateText, textToPrepend, rawTextRemainder];\n//    } else {\n//        rawTextRemainder = self.rawText;\n//        stringComponents = @[textToPrepend, rawTextRemainder];\n//    }\n//    self.rawText = [stringComponents componentsJoinedByString:separator];\n}\n\n#pragma Find/replace Method\n\n- (void)replaceText:(NSString*)textToReplace withText:(NSString*)replacementText {\n    self.rawText = [self.rawText stringByReplacingOccurrencesOfString:textToReplace\n                                                           withString:replacementText];\n}\n\n#pragma mark - Due/Not Due Method\n\n- (TTMDueState)getDueState {\n    // tasks with no due dates\n    if (nil == _dueDateText ||\n        ([_dueDate isEqualToDate:[TTMDateUtility convertStringToDate:@\"9999-12-31\"]] &&\n        [_dueDateText isEqualToString:@\"\"])) {\n        return NoDueDate;        \n    }\n    \n    // If there is a due date, compare it to today's date to determine\n    // if the task is overdue, not due, or due today.\n    NSDate *todaysDate = [TTMDateUtility today];\n    NSInteger interval = [[[NSCalendar currentCalendar] components:NSCalendarUnitDay\n                                                          fromDate:todaysDate\n                                                            toDate:self.dueDate\n                                                           options:0] day];\n    if (interval < 0) {\n        return Overdue;\n    } else if (interval > 0) {\n        return NotDue;\n    } else {\n        return DueToday;\n    }\n}\n\n#pragma mark - Threshold Date Methods\n\n- (void)setThresholdDate:(NSDate *)thresholdDate {\n    NSString *newThresholdDateText = [TTMDateUtility convertDateToString:thresholdDate];\n    // If the item has a threshold date, exchange the current threshold date with the new.\n    // Else if the item does not have a threshold date, append the new threshold date to the task.\n    self.rawText = (self.thresholdDateText != nil) ?\n        [self.rawText replace:RX(ThresholdDatePattern) with:newThresholdDateText] :\n        [self.rawText stringByAppendingFormat:@\" t:%@\", newThresholdDateText];\n}\n\n- (void)removeThresholdDate {\n    // Blank and tasks without a threshold date do not get updated.\n    if (self.isBlank || !self.thresholdDate) {\n        return;\n    }\n    \n    NSString *newRawText = [self.rawText replace:RX(FullThresholdDatePatternBeginning) with:@\"\"];\n    self.rawText = [newRawText replace:RX(FullThresholdDatePatternMiddleOrEnd) with:@\"\"];\n}\n\n- (void)incrementThresholdDate:(NSInteger)days {\n    // Blank tasks don't get updated threshold dates.\n    if (self.isBlank) {\n        return;\n    }\n    \n    if (days == 0) {\n        return;\n    }\n    \n    // Get threshold date of the selected task.\n    // If the selected task doesn't have a threshold date, use today as the due date.\n    NSDate *oldThresholdDate = (self.thresholdDateText != nil) ?\n        self.thresholdDate :\n        [TTMDateUtility today];\n    \n    // Add days to that date to create the new due date.\n    NSDate *newThresholdDate = [TTMDateUtility addDays:days toDate:oldThresholdDate];\n    \n    self.thresholdDate = newThresholdDate;\n}\n\n- (void)decrementThresholdDate:(NSInteger)days {\n    [self incrementThresholdDate:(-1 * days)];\n}\n\n- (TTMThresholdState)getThresholdState {\n    if (_thresholdDateText == nil) {\n        return NoThresholdDate;\n    }\n    \n    // If there is a threshold date, compare it to today's date to determine\n    // if the task is overdue, not due, or due today.\n    NSDate *todaysDate = [TTMDateUtility today];\n    NSInteger interval = [[[NSCalendar currentCalendar] components:NSCalendarUnitDay\n                                                          fromDate:todaysDate\n                                                            toDate:self.thresholdDate\n                                                           options:0] day];\n    if (interval < 0) {\n        return ThresholdBeforeToday;\n    } else if (interval > 0) {\n        return ThresholdAfterToday;\n    } else {\n        return ThresholdIsToday;\n    }\n}\n\n#pragma mark - Priority Methods\n\n- (void)setPriority:(unichar)priority {\n    // Blanks and completed tasks don't get priorities.\n    if (self.isBlank || self.isCompleted) {\n        return;\n    }\n    \n    // Test whether priority parameter is a valid character [A-Z].\n    NSCharacterSet *letters = [NSCharacterSet uppercaseLetterCharacterSet];\n    if (![letters characterIsMember:priority]) {\n        return;\n    }\n    \n    // If there is a priority, find it and replace it with the new priority.\n    // If there is no priority, prepend it to the beginning of rawText\n    // and update all class properties.\n    if (self.isPrioritized) {\n        NSRange oldPriority = [self.rawText rangeOfString:self.fullPriorityText];\n        if (NSNotFound != oldPriority.location) {\n            self.rawText = [self.rawText stringByReplacingCharactersInRange:oldPriority\n                            withString:[NSString stringWithFormat:\n                                        @\"%c%c%c%c\", '(', priority, ')', ' ']];\n        }\n    } else {\n        self.rawText = [NSString stringWithFormat:@\"%c%c%c %@\", '(', priority, ')', self.rawText];\n    }\n}\n\n- (void)increasePriority {\n    // Blank and completed tasks don't get priorities\n    if (self.isBlank || self.isCompleted) {\n        return;\n    }\n    \n    // Non-prioritized tasks automatically get the top priority\n    if (!self.isPrioritized) {\n        return [self setPriority:'A'];\n    }\n    \n    // There is no priority greater than 'A'.\n    if (self.priority == 'A') {\n        return;\n    }\n    \n    // increase priority of task (e.g. 'B' - 1 = 'A')\n    self.priority = self.priority - 1;\n}\n\n- (void)decreasePriority {\n    // Blank and completed tasks don't get priorities\n    if (self.isBlank || self.isCompleted) {\n        return;\n    }\n    \n    // There is no priority less than 'Z'.\n    if (self.priority == 'Z') {\n        return;\n    }\n    \n    // non-prioritized tasks automatically get the top priority\n    if (!self.isPrioritized) {\n        [self setPriority:'A'];\n        return;\n    }\n    \n    // decrease priority of task (e.g. 'A' + 1 = 'B')\n    self.priority = self.priority + 1;\n}\n\n- (void)removePriority {\n    // Blank, completed, and non-prioritized tasks don't have priorities.\n    if (self.isBlank || self.isCompleted || !self.isPrioritized) {\n        return;\n    }\n    \n    // Remove the priority substring and update all class properties.\n    self.rawText = [RX(PriorityTextPattern) replace:self.rawText with:@\"\"];\n}\n\n#pragma mark - Completion Methods\n\n- (void)markComplete {\n    // Completed tasks don't need to be completed again. Blank tasks can't be completed.\n    if (self.isBlank || self.isCompleted) {\n        return;\n    }\n    \n    // Build new task rawText by removing priority and prepending \"x\" and today's date.\n\n    // Remove priority if it exists.\n    NSString *rawTextWithoutPriority = (self.isPrioritized) ?\n        [self.rawText replace:RX(PriorityTextPattern) with:@\"\"] :\n        self.rawText;\n    \n    // Prepend the new raw task string with \"x yyyy-MM-dd \" (note the trailing space),\n    // with today's date as \"yyyy-MM-dd\".\n    NSString *newRawText = [NSString stringWithFormat:@\"%@%c%@%c%@\", @\"x\", ' ',\n        [TTMDateUtility todayAsString], ' ', rawTextWithoutPriority];\n    \n    // Update the task's raw text.\n    self.rawText = newRawText;\n}\n\n- (void)markIncomplete {\n    // Incomplete tasks don't need to be marked incomplete again.\n    // Blank tasks can't be marked incompleted.\n    if (self.isBlank || !self.isCompleted) {\n        return;\n    }\n    \n    // Remove the completed task prepended substring and update all class properties.\n    self.rawText = [RX(CompletedPattern) replace:self.rawText with:@\"\"];\n}\n\n- (void)toggleCompletionStatus {\n    if (self.isCompleted) {\n        [self markIncomplete];\n    } else {\n        [self markComplete];\n    }\n}\n\n# pragma mark - Postpone and Set Due Date Methods\n\n- (void)postponeTask:(NSInteger)daysToPostpone {\n    // Blank and completed tasks don't get postponed.\n    if (self.isBlank || self.isCompleted) {\n        return;\n    }\n\n    if (daysToPostpone == 0) {\n        return;\n    }\n\n    // Get due date of the selected task.\n    // If the selected task doesn't have a due date, use today as the due date.\n    NSDate *oldDueDate = (self.dueDateText != nil) ? self.dueDate : [TTMDateUtility today];\n\n    // Add days to that date to create the new due date.\n    NSDate *newDueDate = [TTMDateUtility addDays:daysToPostpone toDate:oldDueDate];\n    \n    self.dueDate = newDueDate;\n}\n\n- (void)incrementDueDate:(NSInteger)days {\n    [self postponeTask:days];\n}\n\n- (void)decrementDueDate:(NSInteger)days {\n    [self postponeTask:(-1 * days)];\n\n}\n\n- (void)setDueDate:(NSDate *)dueDate {\n    // Blank tasks don't get due dates.\n    if (self.isBlank) {\n        return;\n    }\n    \n    NSString *newDueDateText = [TTMDateUtility convertDateToString:dueDate];\n    // If the item has a due date, exchange the current due date with the new.\n    // Else if the item does not have a due date, append the new due date to the task.\n    self.rawText = (self.dueDateText != nil) ?\n        [self.rawText replace:RX(DueDatePattern) with:newDueDateText] :\n        [self.rawText stringByAppendingFormat:@\" due:%@\", newDueDateText];\n}\n\n- (void)removeDueDate {\n    // Blank and tasks without a due date do not get updated.\n    if (self.isBlank || !self.dueDate) {\n        return;\n    }\n    \n    NSString *newRawText = [self.rawText replace:RX(FullDueDatePatternBeginning) with:@\"\"];\n    self.rawText = [newRawText replace:RX(FullDueDatePatternMiddleOrEnd) with:@\"\"];\n}\n\n#pragma mark - NSCopying Methods\n\n- (TTMTask*)copyWithZone:(NSZone *)zone {\n    TTMTask *copy = [[self class] allocWithZone:zone];\n    \n    if (copy) {\n        return [copy initWithRawText:self.rawText withTaskId:self.taskId];\n    }\n    \n    return copy;\n}\n\n#pragma mark - IsEqual Methods\n\n-(BOOL)isEqual:(id)object {\n    if (object == self) {\n        return YES;\n    }\n    if (!object || ![object isKindOfClass:[self class]]) {\n        return NO;\n    }\n    return [self isEqualToTTMTask:object];\n}\n\n- (BOOL)isEqualToTTMTask:(TTMTask*)otherTask {\n    if (!otherTask) {\n        return NO;\n    }\n    \n    BOOL haveEqualRawText = [self.rawText isEqualToString:otherTask.rawText];\n    BOOL haveEqualTaskId = (self.taskId == otherTask.taskId);\n    return haveEqualRawText && haveEqualTaskId;\n}\n\n- (NSUInteger)hash {\n    return [self.rawText hash] ^ [@(self.taskId) hash];\n}\n\n#pragma mark - Recurrence Methods\n\n- (TTMTask*)newRecurringTask {\n    if (!self.isRecurring) {\n        return nil;\n    }\n    \n    TTMTask *newTask = [self copy];\n    \n    [newTask advanceDueDateBasedOnReccurencePattern:[TTMDateUtility today]];\n    \n    if (_thresholdDateText != nil) {\n        NSInteger numberOfDaysThresholdDateIsBeforeDueDate = 0;\n        if (_dueDateText == nil) {\n            numberOfDaysThresholdDateIsBeforeDueDate = [TTMDateUtility daysBetweenDate:self.thresholdDate andEndDate:[TTMDateUtility today]];\n        } else if (_dueDateText != nil && _thresholdDateText != nil) {\n            numberOfDaysThresholdDateIsBeforeDueDate = [TTMDateUtility daysBetweenDate:self.thresholdDate andEndDate:self.dueDate];\n        }\n        if (numberOfDaysThresholdDateIsBeforeDueDate < 0) {\n            numberOfDaysThresholdDateIsBeforeDueDate = 0;\n        }\n        [newTask setThresholdDateBasedDaysBetweenThresholdDateAndDueDate:numberOfDaysThresholdDateIsBeforeDueDate];\n    }\n\n    return newTask;\n}\n\n- (void)advanceDueDateBasedOnReccurencePattern:(NSDate*)completionDate {\n    NSDate *oldDueDate;\n    if (_dueDateText == nil || ![self recurrencePatternIsStrict]) {\n        oldDueDate = completionDate;\n    } else {\n        oldDueDate = self.dueDate;\n    }\n    NSDate *newDueDate = [self relativeDateBasedOnRecurrencePattern:oldDueDate];\n    [self setDueDate:newDueDate];\n}\n\n- (void)setThresholdDateBasedDaysBetweenThresholdDateAndDueDate:(NSInteger)daysBetweenThresholdAndDueDates {\n    NSInteger dateAdjustment = (daysBetweenThresholdAndDueDates > 0) ? -1 * daysBetweenThresholdAndDueDates : 0;\n    NSDate* newThresholdDate = [self.dueDate advanceDateByNumberOfCalendarUnits:dateAdjustment calendarUnit:NSCalendarUnitDay];\n    [self setThresholdDate:newThresholdDate];\n}\n\n- (BOOL)recurrencePatternIsStrict {\n    return [self.recurrencePattern hasPrefix:@\"+\"];\n}\n\n- (NSCalendarUnit)calendarUnitFromRecurrencePattern {\n    if (!self.recurrencePattern) {\n        return NSCalendarUnitEra; // not a real return value\n    }\n    \n    NSString *lastChar = [[self.recurrencePattern uppercaseString] substringFromIndex:self.recurrencePattern.length - 1];\n    if ([lastChar isEqualToString:@\"D\"]) {\n        return NSCalendarUnitDay;\n    }\n    if ([lastChar isEqualToString:@\"W\"]) {\n        return NSCalendarUnitWeekOfYear;\n    }\n    if ([lastChar isEqualToString:@\"M\"]) {\n        return NSCalendarUnitMonth;\n    }\n    if ([lastChar isEqualToString:@\"Y\"]) {\n        return NSCalendarUnitYear;\n    }\n    if ([lastChar isEqualToString:@\"B\"]) {\n        return NSCalendarUnitWeekday;\n    }\n    \n    return NSCalendarUnitEra; // not a real return value\n}\n\n- (NSUInteger)numberOfCalendarUnitsFromRecurrencePattern {\n    NSUInteger rangeStart = [self recurrencePatternIsStrict] ? 1 : 0;\n    NSUInteger rangeEnd = self.recurrencePattern.length - 1;\n    NSRange rng = NSMakeRange(rangeStart, rangeEnd);\n    return [[self.recurrencePattern substringWithRange:rng] integerValue];\n}\n\n- (NSDate*)relativeDateBasedOnRecurrencePattern:(NSDate*)date {\n    NSCalendarUnit calendarUnit = [self calendarUnitFromRecurrencePattern];\n    if (calendarUnit == NSCalendarUnitEra) {\n        return nil;\n    }\n    \n    NSInteger numberOfCalendarUnits = [self numberOfCalendarUnitsFromRecurrencePattern];\n    if (calendarUnit == NSCalendarUnitWeekday) {\n        return [date advanceDateByWeekdays:numberOfCalendarUnits];\n    } else {\n        return [date advanceDateByNumberOfCalendarUnits:numberOfCalendarUnits calendarUnit:calendarUnit];\n    }\n}\n\n- (void)removeCreationDate {\n    // Blank and tasks without a threshold date do not get updated.\n    if (self.isBlank || !self.creationDate) {\n        return;\n    }\n    \n    NSString *newRawText;\n    if (!self.isCompleted) {\n        newRawText = [self.rawText replace:RX(CreationDatePatternIncompletePlusTrailingSpace) with:@\"\"];\n    } else {\n        newRawText = [self.rawText replace:RX(CreationDatePatternCompletedPlusTrailingSpace) with:@\"\"];\n    }\n    self.rawText = newRawText;\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTasklistMetadata.h",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Foundation/Foundation.h>\n@class TTMTask;\n\n@interface TTMTasklistMetadata : NSObject\n\n#pragma mark - Properties\n\n@property (nonatomic) NSMutableSet *projectsSet;\n@property (nonatomic) NSMutableSet *contextsSet;\n@property (nonatomic) NSMutableSet *prioritiesSet;\n@property (nonatomic) NSArray *contextsArray;\n@property (nonatomic) NSArray *projectsArray;\n@property (nonatomic) NSArray *prioritiesArray;\n@property (nonatomic) NSMutableDictionary *projectTaskCounts;\n@property (nonatomic) NSMutableDictionary *contextTaskCounts;\n@property (nonatomic) NSMutableDictionary *priorityTaskCounts;\n@property (readonly) NSString *projects;\n@property (readonly) NSString *contexts;\n@property (nonatomic) NSInteger allTaskCount;\n@property (nonatomic) NSInteger completedTaskCount;\n@property (nonatomic) NSInteger incompleteTaskCount;\n@property (nonatomic) NSInteger dueTodayTaskCount;\n@property (nonatomic) NSInteger overdueTaskCount;\n@property (nonatomic) NSInteger notDueTaskCount;\n@property (nonatomic) NSInteger noDueDateTaskCount;\n@property (nonatomic) NSInteger projectsCount;\n@property (nonatomic) NSInteger contextsCount;\n@property (nonatomic) NSInteger prioritiesCount;\n@property (nonatomic) NSInteger hiddenCount;\n\n\n/*!\n * @method updateMetadataFromTaskArray:\n * @abstract Generates metadata from a list of tasks.\n * @param taskArray An array of TTMTask objects.\n */\n- (void)updateMetadataFromTaskArray:(NSArray*)taskArray;\n\n/*!\n * @method initialize:\n * @abstract Initializes the class. Called in method updateMetadataFromTaskArray:.\n */\n- (void)initialize;\n\n/*!\n * @method initialize:\n * @abstract Helper function to populate task counts in the properties projectTaskCounts,\n * contextTaskCounts, and priorityTaskCounts. Called in method updateMetadataFromTaskArray:.\n */\n- (void)incrementCountsInDictionary:(NSMutableDictionary*)dictionary FromArray:(NSArray*)array;\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTasklistMetadata.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import \"TTMTasklistMetadata.h\"\n#import \"TTMTask.h\"\n\n@implementation TTMTasklistMetadata\n\n- (void)updateMetadataFromTaskArray:(NSArray*)taskArray {\n    [self initialize];\n    \n    for (TTMTask *task in taskArray) {\n     \n        // update task counts\n        self.allTaskCount++;\n        self.completedTaskCount += (task.isCompleted ? 1 : 0);\n        self.incompleteTaskCount += (task.isCompleted ? 0 : 1);\n        self.dueTodayTaskCount += (task.dueState == DueToday ? 1 : 0);\n        self.overdueTaskCount += (task.dueState == Overdue ? 1 : 0);\n        self.notDueTaskCount += (task.dueState == NotDue ? 1 : 0);\n        self.noDueDateTaskCount += (task.dueState == NoDueDate ? 1 : 0);\n        self.hiddenCount += (task.isHidden ? 1 : 0);\n\n        // update task counts by project and context\n        [self incrementCountsInDictionary:self.projectTaskCounts FromArray:task.projectsArray];\n        [self incrementCountsInDictionary:self.contextTaskCounts FromArray:task.contextsArray];\n        \n        // add all projects and contexts to sets\n        [self.projectsSet addObjectsFromArray:task.projectsArray];\n        [self.contextsSet addObjectsFromArray:task.contextsArray];\n        \n        // update task count by priority, and add priority to set\n        if (task.priorityText != nil) {\n            [self incrementCountsInDictionary:self.priorityTaskCounts\n                                    FromArray:@[task.priorityText]];\n            [self.prioritiesSet addObject:task.priorityText];\n        }\n    }\n\n    // Convert the sets to case-insensitive-sorted arrays.\n    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]\n                                        initWithKey:@\"\"\n                                        ascending:YES\n                                        selector:@selector(caseInsensitiveCompare:)];\n    NSArray *sortDescriptorArray = @[sortDescriptor];\n    self.projectsArray = [self.projectsSet sortedArrayUsingDescriptors:sortDescriptorArray];\n    self.contextsArray = [self.contextsSet sortedArrayUsingDescriptors:sortDescriptorArray];\n    self.prioritiesArray = [self.prioritiesSet sortedArrayUsingDescriptors:sortDescriptorArray];\n\n    // update counts of projects, contexts, and priorities\n    self.projectsCount = [self.projectsSet count];\n    self.contextsCount = [self.contextsSet count];\n    self.prioritiesCount = [self.prioritiesSet count];\n}\n\n- (void)initialize {\n    self.allTaskCount = 0;\n    self.completedTaskCount = 0;\n    self.incompleteTaskCount = 0;\n    self.dueTodayTaskCount = 0;\n    self.overdueTaskCount = 0;\n    self.notDueTaskCount = 0;\n    self.noDueDateTaskCount = 0;\n    self.hiddenCount = 0;\n    \n    self.projectTaskCounts = [NSMutableDictionary dictionary];\n    self.contextTaskCounts = [NSMutableDictionary dictionary];\n    self.priorityTaskCounts = [NSMutableDictionary dictionary];\n    \n    self.projectsSet = [NSMutableSet set];\n    self.contextsSet = [NSMutableSet set];\n    self.prioritiesSet = [NSMutableSet set];\n    \n    self.projectsArray = [NSArray array];\n    self.contextsArray = [NSArray array];\n    self.prioritiesArray = [NSArray array];\n    \n    self.projectsCount = 0;\n    self.contextsCount = 0;\n    self.prioritiesCount = 0;\n}\n\n- (void)incrementCountsInDictionary:(NSMutableDictionary*)dictionary FromArray:(NSArray*)array {\n    for (NSString *key in array) {\n        if (dictionary[key] == nil) {\n            dictionary[key] = @1;\n        } else {\n            dictionary[key] = @([dictionary[key] integerValue] + 1);\n        }\n    }\n}\n\n- (NSString*)projects {\n    return [self.projectsArray componentsJoinedByString:@\"\\n\"];\n}\n\n- (NSString*)contexts {\n    return [self.contextsArray componentsJoinedByString:@\"\\n\"];\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMac/TTMTasklistMetadata.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"10116\" systemVersion=\"15E65\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\">\n    <dependencies>\n        <deployment identifier=\"macosx\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"10116\"/>\n        <capability name=\"stacking Non-gravity area distributions on NSStackView\" minToolsVersion=\"7.0\" minSystemVersion=\"10.11\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"TTMDocument\">\n            <connections>\n                <outlet property=\"tasklistMetadataSheet\" destination=\"QvC-M9-y7g\" id=\"YcE-8v-Pa4\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <window title=\"Window\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" oneShot=\"NO\" releasedWhenClosed=\"NO\" visibleAtLaunch=\"NO\" animationBehavior=\"default\" id=\"QvC-M9-y7g\">\n            <windowStyleMask key=\"styleMask\" titled=\"YES\"/>\n            <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n            <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"443\" height=\"441\"/>\n            <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1440\" height=\"877\"/>\n            <view key=\"contentView\" id=\"EiT-Mj-1SZ\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"443\" height=\"441\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                <subviews>\n                    <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"centerX\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ods-Bg-YkA\">\n                        <rect key=\"frame\" x=\"10\" y=\"10\" width=\"423\" height=\"421\"/>\n                        <subviews>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"N1K-GG-Qne\">\n                                <rect key=\"frame\" x=\"-2\" y=\"404\" width=\"427\" height=\"17\"/>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"center\" title=\"Task List Metadata\" id=\"fBb-6X-LYs\">\n                                    <font key=\"font\" metaFont=\"systemBold\"/>\n                                    <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <tabView translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zye-e8-X6m\">\n                                <rect key=\"frame\" x=\"-7\" y=\"19\" width=\"437\" height=\"383\"/>\n                                <font key=\"font\" metaFont=\"system\"/>\n                                <tabViewItems>\n                                    <tabViewItem label=\"As Displayed\" identifier=\"1\" id=\"YSg-sJ-lHP\">\n                                        <view key=\"view\" id=\"9AC-hs-Fz8\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"417\" height=\"337\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <stackView distribution=\"fillEqually\" orientation=\"horizontal\" alignment=\"top\" spacing=\"20\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"13r-QI-PJl\">\n                                                    <rect key=\"frame\" x=\"10\" y=\"33\" width=\"397\" height=\"294\"/>\n                                                    <subviews>\n                                                        <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"10\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qjH-vh-0cQ\" userLabel=\"Filtered Left Stack View\">\n                                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"294\"/>\n                                                            <subviews>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Bh9-cY-3uU\" userLabel=\"Filtered Total Tasks Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"277\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"c5U-IF-T8w\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Total Tasks:\" id=\"JF5-90-32g\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"n2r-Pw-Wz5\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" enabled=\"NO\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"97A-by-cRu\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"Yyd-RB-8Qc\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.allTaskCount\" id=\"ZhB-fT-ZoK\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <bool key=\"NSAllowsEditingMultipleValuesSelection\" value=\"NO\"/>\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                        <bool key=\"NSRaisesForNotApplicableKeys\" value=\"NO\"/>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2Xr-JK-9gL\" userLabel=\"Filtered Projects Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"250\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"SFV-3a-PCn\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Projects:\" id=\"gS7-Ut-mgr\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"woL-jw-tTG\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"a4o-Hb-dc6\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"ak4-sr-U2f\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.projectsCount\" id=\"OFS-xe-lnj\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"SuQ-fT-aY7\" userLabel=\"Filtered Contexts Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"223\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"MBb-7y-mFa\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Contexts:\" id=\"TMP-PV-MLQ\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Bjx-u6-j3z\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"5B6-bO-er5\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"14w-fV-jeA\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.contextsCount\" id=\"37A-yp-jtP\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bPM-LO-HtQ\" userLabel=\"Filtered Priorities Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"196\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nJ9-Kg-1OU\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Priorities:\" id=\"Tup-Qj-Ii5\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"BFV-pb-Fwj\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"WCb-kg-xiW\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"0p5-8n-PO0\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.prioritiesCount\" id=\"qcu-xl-kxI\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"lwB-Nk-Kvo\" userLabel=\"Filtered Incomplete Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"169\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ktz-d9-Hjw\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Incomplete:\" id=\"O9G-zA-bil\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cZc-Rd-P1x\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"BF7-tm-Noq\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"v9E-tI-Y52\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.incompleteTaskCount\" id=\"1Eu-AK-cnt\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"2\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"429-QG-cCx\" userLabel=\"Filtered Projects List Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"159\"/>\n                                                                    <subviews>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Oa1-2Z-lWh\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"142\" width=\"192.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Projects:\" id=\"ZVm-Cp-3a3\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Uxf-zC-vTd\" userLabel=\"Filtered Projects Text Field\">\n                                                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"140\"/>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"height\" constant=\"140\" id=\"DhZ-vD-7ZO\"/>\n                                                                            </constraints>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"JN2-rG-aA8\">\n                                                                                <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                                <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.projects\" id=\"gFH-Ui-GqA\"/>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <constraints>\n                                                                        <constraint firstItem=\"Uxf-zC-vTd\" firstAttribute=\"leading\" secondItem=\"429-QG-cCx\" secondAttribute=\"leading\" id=\"ONk-Pe-g8w\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"Uxf-zC-vTd\" secondAttribute=\"trailing\" id=\"p7l-rJ-369\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"Oa1-2Z-lWh\" secondAttribute=\"trailing\" id=\"qpt-Es-Ty5\"/>\n                                                                        <constraint firstItem=\"Oa1-2Z-lWh\" firstAttribute=\"leading\" secondItem=\"429-QG-cCx\" secondAttribute=\"leading\" id=\"xDL-jQ-nnC\"/>\n                                                                    </constraints>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                            </subviews>\n                                                            <constraints>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"bPM-LO-HtQ\" secondAttribute=\"trailing\" id=\"2TI-J0-tbr\"/>\n                                                                <constraint firstItem=\"bPM-LO-HtQ\" firstAttribute=\"leading\" secondItem=\"qjH-vh-0cQ\" secondAttribute=\"leading\" id=\"98l-Lp-94e\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"2Xr-JK-9gL\" secondAttribute=\"trailing\" id=\"FTH-rS-T29\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"Bh9-cY-3uU\" secondAttribute=\"trailing\" id=\"FqL-XT-hnz\"/>\n                                                                <constraint firstItem=\"SuQ-fT-aY7\" firstAttribute=\"leading\" secondItem=\"qjH-vh-0cQ\" secondAttribute=\"leading\" id=\"KqC-jB-Jhh\"/>\n                                                                <constraint firstItem=\"429-QG-cCx\" firstAttribute=\"leading\" secondItem=\"qjH-vh-0cQ\" secondAttribute=\"leading\" id=\"MIB-3G-Kqu\"/>\n                                                                <constraint firstItem=\"2Xr-JK-9gL\" firstAttribute=\"leading\" secondItem=\"qjH-vh-0cQ\" secondAttribute=\"leading\" id=\"W8w-7Z-YOG\"/>\n                                                                <constraint firstItem=\"lwB-Nk-Kvo\" firstAttribute=\"leading\" secondItem=\"qjH-vh-0cQ\" secondAttribute=\"leading\" id=\"c63-wo-W4b\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"lwB-Nk-Kvo\" secondAttribute=\"trailing\" id=\"hPZ-Sg-Im3\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"429-QG-cCx\" secondAttribute=\"trailing\" id=\"mqo-cf-uHz\"/>\n                                                                <constraint firstItem=\"Bh9-cY-3uU\" firstAttribute=\"leading\" secondItem=\"qjH-vh-0cQ\" secondAttribute=\"leading\" id=\"nA5-NH-1Ci\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"SuQ-fT-aY7\" secondAttribute=\"trailing\" id=\"w5V-jd-b6Y\"/>\n                                                            </constraints>\n                                                            <visibilityPriorities>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                            </visibilityPriorities>\n                                                            <customSpacing>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                            </customSpacing>\n                                                        </stackView>\n                                                        <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"10\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"16U-vD-9jY\" userLabel=\"Filtered Right Stack View\">\n                                                            <rect key=\"frame\" x=\"208\" y=\"0.0\" width=\"188.5\" height=\"294\"/>\n                                                            <subviews>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"LiH-Kt-nLI\" userLabel=\"Filtered Due Today Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"277\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"As6-Vo-wrg\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Due Today:\" id=\"45h-cj-qiK\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uKp-um-mob\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"wD4-Is-g8S\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"7Fd-MU-q8d\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.dueTodayTaskCount\" id=\"18J-7h-ss5\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nTi-Fr-O2T\" userLabel=\"Filtered Overdue Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"250\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ZEm-Fm-ddj\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Overdue:\" id=\"pDn-bH-gJZ\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fdT-Hm-zp9\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"2uu-0T-Axc\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"aKi-LB-sHu\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.overdueTaskCount\" id=\"5yK-4t-jFm\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"C4K-MM-kic\" userLabel=\"Filtered Not Due Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"223\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2o8-84-Pfl\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"60\" height=\"17\"/>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"width\" constant=\"56\" id=\"qRe-OE-U48\"/>\n                                                                            </constraints>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Not Due:\" id=\"YZd-F5-nEt\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"1qX-o8-HFn\">\n                                                                            <rect key=\"frame\" x=\"62\" y=\"0.0\" width=\"128.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"w5W-RB-Z3K\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"CVB-fV-jLe\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.notDueTaskCount\" id=\"wtg-Es-sb5\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"DDH-ZX-txY\" userLabel=\"Filtered No Due Date Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"196\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"oo7-CT-4Xv\" userLabel=\"No Due Date:\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"No Due Date:\" id=\"Dol-qJ-Xeh\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8Vu-QC-nRe\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"xmh-g6-XOK\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"Bid-4c-Z6j\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.noDueDateTaskCount\" id=\"LXj-Kl-kkY\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"lvr-d5-pcz\" userLabel=\"Filtered Completed Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"169\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"a0p-Sb-9ah\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Completed:\" id=\"cqB-et-Id4\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"WT9-sQ-M2c\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"DqV-ml-AU7\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"UMq-j7-Qi7\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.completedTaskCount\" id=\"zLK-p9-p7S\"/>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"2\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qwo-Hs-lGF\" userLabel=\"Filtered Contexts List Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"159\"/>\n                                                                    <subviews>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Oln-jO-yPX\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"142\" width=\"192.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Contexts:\" id=\"TwD-go-e7I\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mqo-gp-gYV\">\n                                                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"140\"/>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"height\" constant=\"140\" id=\"oXV-ly-kWI\"/>\n                                                                            </constraints>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"gck-b7-mCa\">\n                                                                                <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                                <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.filteredTasklistMetadata.contexts\" id=\"cs8-g7-M0c\"/>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <constraints>\n                                                                        <constraint firstItem=\"mqo-gp-gYV\" firstAttribute=\"leading\" secondItem=\"qwo-Hs-lGF\" secondAttribute=\"leading\" id=\"23G-n6-fi2\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"mqo-gp-gYV\" secondAttribute=\"trailing\" id=\"Ef2-to-ehI\"/>\n                                                                        <constraint firstItem=\"Oln-jO-yPX\" firstAttribute=\"leading\" secondItem=\"qwo-Hs-lGF\" secondAttribute=\"leading\" id=\"McR-QF-2k7\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"Oln-jO-yPX\" secondAttribute=\"trailing\" id=\"exV-OB-L0Q\"/>\n                                                                    </constraints>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                            </subviews>\n                                                            <constraints>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"DDH-ZX-txY\" secondAttribute=\"trailing\" id=\"1C0-3E-vrS\"/>\n                                                                <constraint firstItem=\"qwo-Hs-lGF\" firstAttribute=\"leading\" secondItem=\"16U-vD-9jY\" secondAttribute=\"leading\" id=\"610-Fd-EU2\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"LiH-Kt-nLI\" secondAttribute=\"trailing\" id=\"DjL-0f-E6J\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"qwo-Hs-lGF\" secondAttribute=\"trailing\" id=\"Gta-vY-oAZ\"/>\n                                                                <constraint firstItem=\"lvr-d5-pcz\" firstAttribute=\"leading\" secondItem=\"16U-vD-9jY\" secondAttribute=\"leading\" id=\"MUT-cA-cFE\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"C4K-MM-kic\" secondAttribute=\"trailing\" id=\"TLZ-GY-OKK\"/>\n                                                                <constraint firstItem=\"DDH-ZX-txY\" firstAttribute=\"leading\" secondItem=\"16U-vD-9jY\" secondAttribute=\"leading\" id=\"Uqs-xG-0FA\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"nTi-Fr-O2T\" secondAttribute=\"trailing\" id=\"a8x-bk-v7k\"/>\n                                                                <constraint firstItem=\"nTi-Fr-O2T\" firstAttribute=\"leading\" secondItem=\"16U-vD-9jY\" secondAttribute=\"leading\" id=\"b8w-nL-FY6\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"lvr-d5-pcz\" secondAttribute=\"trailing\" id=\"c9J-7U-Yxv\"/>\n                                                                <constraint firstItem=\"C4K-MM-kic\" firstAttribute=\"leading\" secondItem=\"16U-vD-9jY\" secondAttribute=\"leading\" id=\"d0w-0m-Kmv\"/>\n                                                                <constraint firstItem=\"LiH-Kt-nLI\" firstAttribute=\"leading\" secondItem=\"16U-vD-9jY\" secondAttribute=\"leading\" id=\"gcD-6H-HiS\"/>\n                                                            </constraints>\n                                                            <visibilityPriorities>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                            </visibilityPriorities>\n                                                            <customSpacing>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                            </customSpacing>\n                                                        </stackView>\n                                                    </subviews>\n                                                    <visibilityPriorities>\n                                                        <integer value=\"1000\"/>\n                                                        <integer value=\"1000\"/>\n                                                    </visibilityPriorities>\n                                                    <customSpacing>\n                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                    </customSpacing>\n                                                </stackView>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstItem=\"13r-QI-PJl\" firstAttribute=\"leading\" secondItem=\"9AC-hs-Fz8\" secondAttribute=\"leading\" constant=\"10\" id=\"QcK-Bf-ZcH\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"13r-QI-PJl\" secondAttribute=\"trailing\" constant=\"10\" id=\"bed-Zs-4fc\"/>\n                                                <constraint firstItem=\"13r-QI-PJl\" firstAttribute=\"top\" secondItem=\"9AC-hs-Fz8\" secondAttribute=\"top\" constant=\"10\" id=\"dM6-BC-KcF\"/>\n                                            </constraints>\n                                        </view>\n                                    </tabViewItem>\n                                    <tabViewItem label=\"Unfiltered\" identifier=\"2\" id=\"JOb-c0-TEr\">\n                                        <view key=\"view\" id=\"SKX-Rt-xno\">\n                                            <rect key=\"frame\" x=\"10\" y=\"33\" width=\"417\" height=\"337\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <subviews>\n                                                <stackView distribution=\"fillEqually\" orientation=\"horizontal\" alignment=\"top\" spacing=\"20\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"UyE-VD-GXR\">\n                                                    <rect key=\"frame\" x=\"10\" y=\"33\" width=\"397\" height=\"294\"/>\n                                                    <subviews>\n                                                        <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"10\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"5nw-4a-EZy\" userLabel=\"Unfiltered Left Stack View\">\n                                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"294\"/>\n                                                            <subviews>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bHu-um-fhi\" userLabel=\"Unfiltered Total Tasks Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"277\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"tNx-gX-B2g\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Total Tasks:\" id=\"6bO-t4-yix\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bF2-1u-FKg\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" enabled=\"NO\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"ug9-MU-fvQ\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"6x8-1c-pSp\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.allTaskCount\" id=\"qzM-ch-7le\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <bool key=\"NSAllowsEditingMultipleValuesSelection\" value=\"NO\"/>\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                        <bool key=\"NSRaisesForNotApplicableKeys\" value=\"NO\"/>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"aXs-rs-ZCl\" userLabel=\"Unfiltered Projects Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"250\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"wme-v0-1Ts\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Projects:\" id=\"BnK-mJ-QWA\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"N0d-dV-A8z\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"4gB-xZ-Qpt\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"84p-A8-gWw\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.projectsCount\" id=\"fLc-R4-oEa\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eQV-qH-GoY\" userLabel=\"Unfiltered Contexts Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"223\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"MQw-UR-5T9\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Contexts:\" id=\"mPK-ZP-NlT\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qav-rX-V31\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"l8E-ku-8CR\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"Ybf-mh-fb6\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.contextsCount\" id=\"VUQ-3j-ntk\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"OJe-2Z-ud6\" userLabel=\"Unfiltered Priorities Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"196\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"l8Y-rZ-rdt\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Priorities:\" id=\"oOs-IX-3YF\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mpn-0B-D9D\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"3tU-ti-nff\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"Pzn-aJ-GAG\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.prioritiesCount\" id=\"v2e-WB-u8W\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9rU-v7-fS9\" userLabel=\"Unfiltered Incomplete Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"169\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vCF-QY-Mha\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Incomplete:\" id=\"F3Q-Xq-IH9\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hrs-jf-bYs\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"F9C-OW-d2t\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"cHz-X4-gw0\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.incompleteTaskCount\" id=\"XKQ-kD-sCW\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"2\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"sR7-Ka-aB1\" userLabel=\"Unfiltered Projects List Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"159\"/>\n                                                                    <subviews>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"LDN-D7-ZVy\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"142\" width=\"192.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Projects:\" id=\"AqE-eO-fKk\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uh6-8O-JpE\" userLabel=\"Filtered Projects Text Field\">\n                                                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"140\"/>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"height\" constant=\"140\" id=\"Q1t-rg-vkW\"/>\n                                                                            </constraints>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"tLg-PW-i84\">\n                                                                                <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                                <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.projects\" id=\"G59-eu-nPe\"/>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <constraints>\n                                                                        <constraint firstItem=\"uh6-8O-JpE\" firstAttribute=\"leading\" secondItem=\"sR7-Ka-aB1\" secondAttribute=\"leading\" id=\"BBI-tB-lQz\"/>\n                                                                        <constraint firstItem=\"LDN-D7-ZVy\" firstAttribute=\"leading\" secondItem=\"sR7-Ka-aB1\" secondAttribute=\"leading\" id=\"WPw-co-w00\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"LDN-D7-ZVy\" secondAttribute=\"trailing\" id=\"qgl-54-2RL\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"uh6-8O-JpE\" secondAttribute=\"trailing\" id=\"uQM-dt-fvM\"/>\n                                                                    </constraints>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                            </subviews>\n                                                            <constraints>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"9rU-v7-fS9\" secondAttribute=\"trailing\" id=\"2k8-2s-rMa\"/>\n                                                                <constraint firstItem=\"aXs-rs-ZCl\" firstAttribute=\"leading\" secondItem=\"5nw-4a-EZy\" secondAttribute=\"leading\" id=\"6Qh-1j-pCF\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"bHu-um-fhi\" secondAttribute=\"trailing\" id=\"Aw0-cj-lno\"/>\n                                                                <constraint firstItem=\"sR7-Ka-aB1\" firstAttribute=\"leading\" secondItem=\"5nw-4a-EZy\" secondAttribute=\"leading\" id=\"P1x-ol-TKV\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"aXs-rs-ZCl\" secondAttribute=\"trailing\" id=\"SV7-Li-JnS\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"eQV-qH-GoY\" secondAttribute=\"trailing\" id=\"VYd-aQ-OaF\"/>\n                                                                <constraint firstItem=\"OJe-2Z-ud6\" firstAttribute=\"leading\" secondItem=\"5nw-4a-EZy\" secondAttribute=\"leading\" id=\"bCV-oi-BOX\"/>\n                                                                <constraint firstItem=\"9rU-v7-fS9\" firstAttribute=\"leading\" secondItem=\"5nw-4a-EZy\" secondAttribute=\"leading\" id=\"exI-Od-9wN\"/>\n                                                                <constraint firstItem=\"bHu-um-fhi\" firstAttribute=\"leading\" secondItem=\"5nw-4a-EZy\" secondAttribute=\"leading\" id=\"iZ8-KN-cib\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"sR7-Ka-aB1\" secondAttribute=\"trailing\" id=\"l5b-P0-PtM\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"OJe-2Z-ud6\" secondAttribute=\"trailing\" id=\"vfo-FJ-1Af\"/>\n                                                                <constraint firstItem=\"eQV-qH-GoY\" firstAttribute=\"leading\" secondItem=\"5nw-4a-EZy\" secondAttribute=\"leading\" id=\"xwI-13-Tcm\"/>\n                                                            </constraints>\n                                                            <visibilityPriorities>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                            </visibilityPriorities>\n                                                            <customSpacing>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                            </customSpacing>\n                                                        </stackView>\n                                                        <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"10\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"PzO-6o-qlT\" userLabel=\"Filtered Right Stack View\">\n                                                            <rect key=\"frame\" x=\"208\" y=\"0.0\" width=\"188.5\" height=\"294\"/>\n                                                            <subviews>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7Lb-cY-aFy\" userLabel=\"Unfiltered Due Today Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"277\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"0In-8R-Tab\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Due Today:\" id=\"AIX-UK-Aua\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"sKB-VN-hxF\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"xXL-sM-mhQ\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"o5E-Hu-Cat\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.dueTodayTaskCount\" id=\"LGp-jc-li1\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2Vx-qK-2dW\" userLabel=\"Unfiltered Overdue Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"250\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Dip-9B-fwi\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Overdue:\" id=\"RTS-xI-ODg\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fNk-PL-MDD\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"hsM-nh-NWt\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"JJV-bM-8cH\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.overdueTaskCount\" id=\"5HD-ZC-baY\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"C1z-DT-Xdh\" userLabel=\"Unfiltered Not Due Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"223\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"n6b-YY-oSb\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"60\" height=\"17\"/>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"width\" constant=\"56\" id=\"whh-d8-vqY\"/>\n                                                                            </constraints>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Not Due:\" id=\"C0Y-LB-qGA\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dE2-xq-tyD\">\n                                                                            <rect key=\"frame\" x=\"62\" y=\"0.0\" width=\"128.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"ZuT-gU-FEa\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"Zy8-Ga-bsC\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.notDueTaskCount\" id=\"hga-mv-bJL\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9ht-zB-bJ9\" userLabel=\"Unfiltered No Due Date Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"196\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"tGy-fH-Mbg\" userLabel=\"No Due Date:\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"No Due Date:\" id=\"DLK-DB-Iyx\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eVe-h8-Pjd\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"qR1-oB-ao6\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"cRn-iB-xq3\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.noDueDateTaskCount\" id=\"QNe-2V-nlG\">\n                                                                                    <dictionary key=\"options\">\n                                                                                        <string key=\"NSNullPlaceholder\">0</string>\n                                                                                    </dictionary>\n                                                                                </binding>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"horizontal\" alignment=\"top\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YlZ-Zd-CHP\" userLabel=\"Unfiltered Completed Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"169\" width=\"188.5\" height=\"17\"/>\n                                                                    <subviews>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Xia-rO-9o5\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"0.0\" width=\"151.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Completed:\" id=\"TQR-Cs-PPh\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"BRw-Kl-0SS\">\n                                                                            <rect key=\"frame\" x=\"153\" y=\"0.0\" width=\"37\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"right\" title=\"Label\" id=\"6aP-Qq-mlg\">\n                                                                                <numberFormatter key=\"formatter\" formatterBehavior=\"default10_4\" numberStyle=\"decimal\" minimumIntegerDigits=\"1\" maximumIntegerDigits=\"309\" maximumFractionDigits=\"3\" id=\"6Op-tD-Bfb\"/>\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.completedTaskCount\" id=\"IVG-MR-3jY\"/>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                                <stackView distribution=\"fill\" orientation=\"vertical\" alignment=\"leading\" spacing=\"2\" horizontalStackHuggingPriority=\"249.99998474121094\" verticalStackHuggingPriority=\"249.99998474121094\" detachesHiddenViews=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"SJv-ez-ORV\" userLabel=\"Unfiltered Contexts List Stack View\">\n                                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"159\"/>\n                                                                    <subviews>\n                                                                        <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"x7p-c5-b9g\">\n                                                                            <rect key=\"frame\" x=\"-2\" y=\"142\" width=\"192.5\" height=\"17\"/>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Contexts:\" id=\"XQT-g1-nht\">\n                                                                                <font key=\"font\" metaFont=\"system\"/>\n                                                                                <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                        </textField>\n                                                                        <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7yQ-LO-3FA\">\n                                                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"188.5\" height=\"140\"/>\n                                                                            <constraints>\n                                                                                <constraint firstAttribute=\"height\" constant=\"140\" id=\"3Xe-CP-HaS\"/>\n                                                                            </constraints>\n                                                                            <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" drawsBackground=\"YES\" id=\"nvJ-fi-BXY\">\n                                                                                <font key=\"font\" metaFont=\"smallSystem\"/>\n                                                                                <color key=\"textColor\" name=\"disabledControlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                                <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                                                            </textFieldCell>\n                                                                            <connections>\n                                                                                <binding destination=\"-2\" name=\"value\" keyPath=\"self.tasklistMetadata.contexts\" id=\"zKg-2E-N8l\"/>\n                                                                            </connections>\n                                                                        </textField>\n                                                                    </subviews>\n                                                                    <constraints>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"x7p-c5-b9g\" secondAttribute=\"trailing\" id=\"7KB-OV-qez\"/>\n                                                                        <constraint firstItem=\"7yQ-LO-3FA\" firstAttribute=\"leading\" secondItem=\"SJv-ez-ORV\" secondAttribute=\"leading\" id=\"JYc-bH-bhv\"/>\n                                                                        <constraint firstAttribute=\"trailing\" secondItem=\"7yQ-LO-3FA\" secondAttribute=\"trailing\" id=\"Z6u-ky-gwR\"/>\n                                                                        <constraint firstItem=\"x7p-c5-b9g\" firstAttribute=\"leading\" secondItem=\"SJv-ez-ORV\" secondAttribute=\"leading\" id=\"nWa-gW-7ye\"/>\n                                                                    </constraints>\n                                                                    <visibilityPriorities>\n                                                                        <integer value=\"1000\"/>\n                                                                        <integer value=\"1000\"/>\n                                                                    </visibilityPriorities>\n                                                                    <customSpacing>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                                    </customSpacing>\n                                                                </stackView>\n                                                            </subviews>\n                                                            <constraints>\n                                                                <constraint firstItem=\"C1z-DT-Xdh\" firstAttribute=\"leading\" secondItem=\"PzO-6o-qlT\" secondAttribute=\"leading\" id=\"2dy-df-ny2\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"9ht-zB-bJ9\" secondAttribute=\"trailing\" id=\"NmK-mu-2Iq\"/>\n                                                                <constraint firstItem=\"YlZ-Zd-CHP\" firstAttribute=\"leading\" secondItem=\"PzO-6o-qlT\" secondAttribute=\"leading\" id=\"OP7-Jg-fhD\"/>\n                                                                <constraint firstItem=\"SJv-ez-ORV\" firstAttribute=\"leading\" secondItem=\"PzO-6o-qlT\" secondAttribute=\"leading\" id=\"PaW-b6-M7G\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"C1z-DT-Xdh\" secondAttribute=\"trailing\" id=\"Pnz-5O-OKw\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"YlZ-Zd-CHP\" secondAttribute=\"trailing\" id=\"SdG-zY-6nL\"/>\n                                                                <constraint firstItem=\"7Lb-cY-aFy\" firstAttribute=\"leading\" secondItem=\"PzO-6o-qlT\" secondAttribute=\"leading\" id=\"bwr-q6-bH3\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"SJv-ez-ORV\" secondAttribute=\"trailing\" id=\"hJR-ul-XzU\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"2Vx-qK-2dW\" secondAttribute=\"trailing\" id=\"inN-lV-KEQ\"/>\n                                                                <constraint firstItem=\"9ht-zB-bJ9\" firstAttribute=\"leading\" secondItem=\"PzO-6o-qlT\" secondAttribute=\"leading\" id=\"l4g-Kv-jEU\"/>\n                                                                <constraint firstAttribute=\"trailing\" secondItem=\"7Lb-cY-aFy\" secondAttribute=\"trailing\" id=\"rXa-Ty-Nuv\"/>\n                                                                <constraint firstItem=\"2Vx-qK-2dW\" firstAttribute=\"leading\" secondItem=\"PzO-6o-qlT\" secondAttribute=\"leading\" id=\"zly-u8-qOy\"/>\n                                                            </constraints>\n                                                            <visibilityPriorities>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                                <integer value=\"1000\"/>\n                                                            </visibilityPriorities>\n                                                            <customSpacing>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                                <real value=\"3.4028234663852886e+38\"/>\n                                                            </customSpacing>\n                                                        </stackView>\n                                                    </subviews>\n                                                    <visibilityPriorities>\n                                                        <integer value=\"1000\"/>\n                                                        <integer value=\"1000\"/>\n                                                    </visibilityPriorities>\n                                                    <customSpacing>\n                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                        <real value=\"3.4028234663852886e+38\"/>\n                                                    </customSpacing>\n                                                </stackView>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstItem=\"UyE-VD-GXR\" firstAttribute=\"leading\" secondItem=\"SKX-Rt-xno\" secondAttribute=\"leading\" constant=\"10\" id=\"5Iu-ei-Bmi\"/>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"UyE-VD-GXR\" secondAttribute=\"trailing\" constant=\"10\" id=\"J11-a8-i9o\"/>\n                                                <constraint firstItem=\"UyE-VD-GXR\" firstAttribute=\"top\" secondItem=\"SKX-Rt-xno\" secondAttribute=\"top\" constant=\"10\" id=\"KF7-DG-Ipi\"/>\n                                            </constraints>\n                                        </view>\n                                    </tabViewItem>\n                                </tabViewItems>\n                            </tabView>\n                            <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hLo-Ti-6yi\">\n                                <rect key=\"frame\" x=\"174\" y=\"-7\" width=\"75\" height=\"32\"/>\n                                <buttonCell key=\"cell\" type=\"push\" title=\"Close\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"rLS-d8-I1f\">\n                                    <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <string key=\"keyEquivalent\" base64-UTF8=\"YES\">\nGw\n</string>\n                                </buttonCell>\n                                <connections>\n                                    <action selector=\"hideTasklistMetadata:\" target=\"-2\" id=\"lDz-DJ-8SU\"/>\n                                </connections>\n                            </button>\n                        </subviews>\n                        <constraints>\n                            <constraint firstItem=\"N1K-GG-Qne\" firstAttribute=\"leading\" secondItem=\"ods-Bg-YkA\" secondAttribute=\"leading\" id=\"2VI-KU-rAG\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"N1K-GG-Qne\" secondAttribute=\"trailing\" id=\"4xZ-em-2ke\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"zye-e8-X6m\" secondAttribute=\"trailing\" id=\"Oli-iQ-Zf0\"/>\n                            <constraint firstItem=\"zye-e8-X6m\" firstAttribute=\"leading\" secondItem=\"ods-Bg-YkA\" secondAttribute=\"leading\" id=\"a9t-Be-zxd\"/>\n                        </constraints>\n                        <visibilityPriorities>\n                            <integer value=\"1000\"/>\n                            <integer value=\"1000\"/>\n                            <integer value=\"1000\"/>\n                        </visibilityPriorities>\n                        <customSpacing>\n                            <real value=\"3.4028234663852886e+38\"/>\n                            <real value=\"3.4028234663852886e+38\"/>\n                            <real value=\"3.4028234663852886e+38\"/>\n                        </customSpacing>\n                    </stackView>\n                </subviews>\n                <constraints>\n                    <constraint firstAttribute=\"trailing\" secondItem=\"ods-Bg-YkA\" secondAttribute=\"trailing\" constant=\"10\" id=\"0oB-vf-92I\"/>\n                    <constraint firstItem=\"ods-Bg-YkA\" firstAttribute=\"leading\" secondItem=\"EiT-Mj-1SZ\" secondAttribute=\"leading\" constant=\"10\" id=\"XZN-1C-AHU\"/>\n                    <constraint firstAttribute=\"bottom\" secondItem=\"ods-Bg-YkA\" secondAttribute=\"bottom\" constant=\"10\" id=\"mQa-br-CdS\"/>\n                    <constraint firstItem=\"ods-Bg-YkA\" firstAttribute=\"top\" secondItem=\"EiT-Mj-1SZ\" secondAttribute=\"top\" constant=\"10\" id=\"mdA-li-II2\"/>\n                </constraints>\n            </view>\n            <point key=\"canvasLocation\" x=\"120.5\" y=\"210.5\"/>\n        </window>\n        <userDefaultsController representsSharedInstance=\"YES\" id=\"yIt-uP-Mrf\"/>\n    </objects>\n</document>\n"
  },
  {
    "path": "TodoTxtMac/TodoTxtMac-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDocumentTypes</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>CFBundleTypeExtensions</key>\n\t\t\t<array>\n\t\t\t\t<string>txt</string>\n\t\t\t</array>\n\t\t\t<key>CFBundleTypeIconFile</key>\n\t\t\t<string></string>\n\t\t\t<key>CFBundleTypeName</key>\n\t\t\t<string>DocumentType</string>\n\t\t\t<key>CFBundleTypeOSTypes</key>\n\t\t\t<array>\n\t\t\t\t<string>????</string>\n\t\t\t</array>\n\t\t\t<key>CFBundleTypeRole</key>\n\t\t\t<string>Editor</string>\n\t\t\t<key>NSDocumentClass</key>\n\t\t\t<string>TTMDocument</string>\n\t\t</dict>\n\t</array>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.4.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>2032</string>\n\t<key>LSApplicationCategoryType</key>\n\t<string>public.app-category.productivity</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>${MACOSX_DEPLOYMENT_TARGET}</string>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2014-2016 Michael Descy. Dual licensed under the GPL and MIT License.</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n\t<key>SU</key>\n\t<string></string>\n\t<key>SUAllowsAutomaticUpdates</key>\n\t<false/>\n\t<key>SUFeedURL</key>\n\t<string>https://mjdescy.github.io/TodoTxtMac/todotxtmac-appcast.xml</string>\n\t<key>SUPublicDSAKeyFile</key>\n\t<string>dsa_pub.pem</string>\n\t<key>SUShowReleaseNotes</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "TodoTxtMac/TodoTxtMac-Prefix.pch",
    "content": "//\n//  Prefix header\n//\n//  The contents of this file are implicitly included at the beginning of every source file.\n//\n\n#ifdef __OBJC__\n    #import <Cocoa/Cocoa.h>\n#endif\n"
  },
  {
    "path": "TodoTxtMac/TodoTxtMac.entitlements",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
  },
  {
    "path": "TodoTxtMac/en.lproj/Credits.rtf",
    "content": "{\\rtf1\\ansi\\ansicpg1252\\cocoartf1404\\cocoasubrtf340\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;\\f1\\fmodern\\fcharset0 CourierNewPSMT;\\f2\\fnil\\fcharset0 Consolas;\n}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\vieww9600\\viewh8400\\viewkind0\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\\partightenfactor0\n\n\\f0\\b\\fs24 \\cf0 TodoTxtMac:\\\nA Todo.txt todo manager for Mac OS X\n\\b0 \\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\\cf0 \\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\\partightenfactor0\n\\cf0 Copyright \\'a9 2014-2016 Michael Descy\\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\\cf0 \\\nThis application is dual-licensed under the GNU General Public License and the MIT License. See below for full license information. Source code is available at {\\field{\\*\\fldinst{HYPERLINK \"https://github.com/mjdescy/TodoTxtMac\"}}{\\fldrslt https://github.com/mjdescy/TodoTxtMac}}.\\\n\\\n\\\n\\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\n\\b \\cf0 Thanks\n\\b0 \\\n\\\n\\pard\\tx720\\tx1440\\tx2160\\tx2880\\tx3600\\tx4320\\tx5040\\tx5760\\tx6480\\tx7200\\tx7920\\tx8640\\pardirnatural\\partightenfactor0\n\\cf0 Thanks to Gina Trapani who created the {\\field{\\*\\fldinst{HYPERLINK \"http://www.todotxt.com\"}}{\\fldrslt Todo.txt}} format and the community of developers who created the command line tools and iOS/Android apps.\\\n\\\nThanks to Ben Hughes whose Windows application {\\field{\\*\\fldinst{HYPERLINK \"http://benrhughes.github.io/todotxt.net/\"}}{\\fldrslt Todotxt.net}} formed the basis of this application's design and feature set. Todotxt.net is a fantastic program and did not have an analog on the Mac. After starting my application, I contributed some patches to todotxt.net and am happy to be a contributor on such a great project.\\\n\\\nThanks to Josh Wright <@BendyTree> for his {\\field{\\*\\fldinst{HYPERLINK \"https://github.com/bendytree/Objective-C-RegEx-Categories\"}}{\\fldrslt RegExCategories}} library.\\\n\\\nThanks to Sam Daitzman <@sdaitzman> for the application icon.\\\n\\\nThanks to Andy Matuschak and the other contributors for the {\\field{\\*\\fldinst{HYPERLINK \"http://sparkle.andymatuschak.org/\"}}{\\fldrslt Sparkle framework}}.\\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\\cf0 \\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\n\\b \\cf0 \\\nTodoTxtMac License\n\\b0 \\\n\\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\n\\f1 \\cf0 GNU General Public License\\\n\\\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\\\n\\\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\\\n\\\nYou should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>.\\\n\\\n\\\nThe MIT License (MIT)\\\n\\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\\n\\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\\n\\\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\\f0 \\\n\\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\partightenfactor0\n\n\\b \\cf0 Sparkle License\n\\b0 \\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\partightenfactor0\n\\cf0 \\\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\partightenfactor0\n\n\\f1 \\cf0 Copyright (c) 2006 Andy Matuschak\\\n\\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\\n\\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\\n\\\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\\n\\\n=================\\\nEXTERNAL LICENSES\\\n=================\\\n\\\nLicense for bspatch.c and bsdiff.c, from bsdiff 4.3 (<http://www.daemonology.net/bsdiff/>:\\\n/*-\\\n\\'a0* Copyright 2003-2005 Colin Percival\\\n\\'a0* All rights reserved\\\n\\'a0*\\\n\\'a0* Redistribution and use in source and binary forms, with or without\\\n\\'a0* modification, are permitted providing that the following conditions \\\n\\'a0* are met:\\\n\\'a0* 1. Redistributions of source code must retain the above copyright\\\n\\'a0*    notice, this list of conditions and the following disclaimer.\\\n\\'a0* 2. Redistributions in binary form must reproduce the above copyright\\\n\\'a0*    notice, this list of conditions and the following disclaimer in the\\\n\\'a0*    documentation and/or other materials provided with the distribution.\\\n\\'a0*\\\n\\'a0* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\\\n\\'a0* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\\n\\'a0* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\\n\\'a0* ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\\\n\\'a0* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\\n\\'a0* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\\\n\\'a0* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\\\n\\'a0* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\\\n\\'a0* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING\\\n\\'a0* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\\n\\'a0* POSSIBILITY OF SUCH DAMAGE.\\\n\\'a0*/\n\\f2 \\\n}"
  },
  {
    "path": "TodoTxtMac/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "TodoTxtMac/main.m",
    "content": "//\n//  main.m\n//  TodoTxtMac\n//\n//  Created by Michael Descy on 2/18/14.\n//  Copyright (c) 2014 Michael Descy. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, const char * argv[])\n{\n    return NSApplicationMain(argc, argv);\n}\n"
  },
  {
    "path": "TodoTxtMac.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t00165B2618DBD1EC00E137B8 /* TTMFiltersController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00165B2518DBD1EC00E137B8 /* TTMFiltersController.m */; };\n\t\t002218D81AA0D80800D6F3A0 /* TTMTask_Init_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218D71AA0D80800D6F3A0 /* TTMTask_Init_UnitTests.m */; };\n\t\t002218DA1AA0EB3200D6F3A0 /* TTMTask_IsCompleted_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218D91AA0EB3200D6F3A0 /* TTMTask_IsCompleted_UnitTests.m */; };\n\t\t002218DC1AA0F48D00D6F3A0 /* TTMTask_DueDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218DB1AA0F48D00D6F3A0 /* TTMTask_DueDate_UnitTests.m */; };\n\t\t002218DE1AA107F600D6F3A0 /* TTMTask_CompletionDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218DD1AA107F600D6F3A0 /* TTMTask_CompletionDate_UnitTests.m */; };\n\t\t002218E01AA1387900D6F3A0 /* TTMTask_ThresholdDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218DF1AA1387900D6F3A0 /* TTMTask_ThresholdDate_UnitTests.m */; };\n\t\t002218E21AA139EB00D6F3A0 /* TTMTask_CreationDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218E11AA139EB00D6F3A0 /* TTMTask_CreationDate_UnitTests.m */; };\n\t\t002218E41AA1704B00D6F3A0 /* TTMTask_DueState_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218E31AA1704B00D6F3A0 /* TTMTask_DueState_UnitTests.m */; };\n\t\t002218E61AA173D100D6F3A0 /* TTMTask_ThresholdState_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218E51AA173D100D6F3A0 /* TTMTask_ThresholdState_UnitTests.m */; };\n\t\t002218E81AA179CD00D6F3A0 /* TTMTask_MarkComplete_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218E71AA179CD00D6F3A0 /* TTMTask_MarkComplete_UnitTests.m */; };\n\t\t002218EA1AA17B9B00D6F3A0 /* TTMTask_MarkIncomplete_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 002218E91AA17B9B00D6F3A0 /* TTMTask_MarkIncomplete_UnitTests.m */; };\n\t\t002EAE5918DBD24C008E7517 /* TTMAppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 002EAE5818DBD24C008E7517 /* TTMAppController.m */; };\n\t\t002EAE5E18DCAE5C008E7517 /* TTMFilterPredicates.m in Sources */ = {isa = PBXBuildFile; fileRef = 002EAE5D18DCAE5C008E7517 /* TTMFilterPredicates.m */; };\n\t\t00308E161C90FD260007681C /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00308E131C90FD120007681C /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t00308E171C90FD390007681C /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00308E131C90FD120007681C /* Sparkle.framework */; };\n\t\t003647E1193D562900FDF67A /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 003647E0193D562900FDF67A /* dsa_pub.pem */; };\n\t\t003F958F1AA2948D00A1FF47 /* TTMTask_ToggleCompletion_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F958E1AA2948D00A1FF47 /* TTMTask_ToggleCompletion_UnitTests.m */; };\n\t\t003F95911AA2965600A1FF47 /* TTMDateUtility_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95901AA2965600A1FF47 /* TTMDateUtility_UnitTests.m */; };\n\t\t003F95931AA296F300A1FF47 /* TTMTask_Priority_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95921AA296F300A1FF47 /* TTMTask_Priority_UnitTests.m */; };\n\t\t003F95951AA2A35A00A1FF47 /* TTMTask_Projects_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95941AA2A35A00A1FF47 /* TTMTask_Projects_UnitTests.m */; };\n\t\t003F95971AA2A44800A1FF47 /* TTMTask_Contexts_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95961AA2A44800A1FF47 /* TTMTask_Contexts_UnitTests.m */; };\n\t\t003F95991AA2A64100A1FF47 /* TTMTask_SetDueDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95981AA2A64100A1FF47 /* TTMTask_SetDueDate_UnitTests.m */; };\n\t\t003F959B1AA2B7A600A1FF47 /* TTMTask_RemoveDueDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F959A1AA2B7A600A1FF47 /* TTMTask_RemoveDueDate_UnitTests.m */; };\n\t\t003F959E1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F959D1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.m */; };\n\t\t003F95A01AA3F04C00A1FF47 /* TTMTask_Postpone_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F959F1AA3F04C00A1FF47 /* TTMTask_Postpone_UnitTests.m */; };\n\t\t003F95A21AA3F41400A1FF47 /* TTMTask_IncreasePriority_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95A11AA3F41400A1FF47 /* TTMTask_IncreasePriority_UnitTests.m */; };\n\t\t003F95A41AA3F5DC00A1FF47 /* TTMTask_DecreasePriority_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95A31AA3F5DC00A1FF47 /* TTMTask_DecreasePriority_UnitTests.m */; };\n\t\t003F95A61AA3F68200A1FF47 /* TTMTask_RemovePriority_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95A51AA3F68200A1FF47 /* TTMTask_RemovePriority_UnitTests.m */; };\n\t\t003F95A81AA3F83D00A1FF47 /* TTMTask_SetThresholdDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95A71AA3F83D00A1FF47 /* TTMTask_SetThresholdDate_UnitTests.m */; };\n\t\t003F95AA1AA3F9C700A1FF47 /* TTMTask_IncrementThresholdDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95A91AA3F9C700A1FF47 /* TTMTask_IncrementThresholdDate_UnitTests.m */; };\n\t\t003F95AC1AA3FBDA00A1FF47 /* TTMTask_DecrementThresholdDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95AB1AA3FBDA00A1FF47 /* TTMTask_DecrementThresholdDate_UnitTests.m */; };\n\t\t003F95AE1AA3FC9600A1FF47 /* TTMTask_RemoveThresholdDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95AD1AA3FC9600A1FF47 /* TTMTask_RemoveThresholdDate_UnitTests.m */; };\n\t\t003F95B01AA3FE4400A1FF47 /* TTMTask_AppendText_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95AF1AA3FE4400A1FF47 /* TTMTask_AppendText_UnitTests.m */; };\n\t\t003F95B21AA4016200A1FF47 /* TTMTask_PrependText_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95B11AA4016200A1FF47 /* TTMTask_PrependText_UnitTests.m */; };\n\t\t003F95B41AA40EC700A1FF47 /* TTMTask_IncrementDueDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95B31AA40EC700A1FF47 /* TTMTask_IncrementDueDate_UnitTests.m */; };\n\t\t003F95B61AA40FB400A1FF47 /* TTMTask_DecrementDueDate_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 003F95B51AA40FB400A1FF47 /* TTMTask_DecrementDueDate_UnitTests.m */; };\n\t\t0050D6841996AA38008F349B /* TTMTasklistMetadata_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0050D6831996AA38008F349B /* TTMTasklistMetadata_UnitTests.m */; };\n\t\t006062D818EC6B0800D147F2 /* NSUserDefaults+myColorSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 006062D718EC6B0800D147F2 /* NSUserDefaults+myColorSupport.m */; };\n\t\t0064E6441C9CEE6600B9A6C0 /* NSDate+RelativeDates.m in Sources */ = {isa = PBXBuildFile; fileRef = 0064E6431C9CEE6600B9A6C0 /* NSDate+RelativeDates.m */; };\n\t\t006B26461A81C82D00B0E47A /* TTMFindReplace.xib in Resources */ = {isa = PBXBuildFile; fileRef = 006B26451A81C82D00B0E47A /* TTMFindReplace.xib */; };\n\t\t006BA79E19DB9CFD00C8F408 /* TTMTasklistMetadata.xib in Resources */ = {isa = PBXBuildFile; fileRef = 006BA79D19DB9CFD00C8F408 /* TTMTasklistMetadata.xib */; };\n\t\t007B835F1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 007B835E1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.m */; };\n\t\t0080EAA518D3E96C0014DDD1 /* TTMPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0080EAA418D3E96C0014DDD1 /* TTMPreferences.xib */; };\n\t\t0086C98518B54F1A00A427AA /* TTMTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0086C98418B54F1A00A427AA /* TTMTableViewDelegate.m */; };\n\t\t00930EAA18B536B00064D41B /* RegExCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 00930EA918B536B00064D41B /* RegExCategories.m */; };\n\t\t00930EAD18B5371B0064D41B /* TTMTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 00930EAC18B5371B0064D41B /* TTMTask.m */; };\n\t\t00930EB118B537C10064D41B /* TTMDateUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 00930EB018B537C10064D41B /* TTMDateUtility.m */; };\n\t\t00B4CB9C18B43E8400313DAA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B4CB9B18B43E8400313DAA /* Cocoa.framework */; settings = {ATTRIBUTES = (Required, ); }; };\n\t\t00B4CBA618B43E8400313DAA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 00B4CBA418B43E8400313DAA /* InfoPlist.strings */; };\n\t\t00B4CBA818B43E8400313DAA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B4CBA718B43E8400313DAA /* main.m */; };\n\t\t00B4CBAC18B43E8400313DAA /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 00B4CBAA18B43E8400313DAA /* Credits.rtf */; };\n\t\t00B4CBAF18B43E8400313DAA /* TTMDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B4CBAE18B43E8400313DAA /* TTMDocument.m */; };\n\t\t00B4CBB218B43E8400313DAA /* TTMDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 00B4CBB018B43E8400313DAA /* TTMDocument.xib */; };\n\t\t00B4CBB518B43E8500313DAA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 00B4CBB318B43E8500313DAA /* MainMenu.xib */; };\n\t\t00B4CBB718B43E8500313DAA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 00B4CBB618B43E8500313DAA /* Images.xcassets */; };\n\t\t00B4CBBE18B43E8500313DAA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B4CBBD18B43E8500313DAA /* XCTest.framework */; };\n\t\t00B4CBBF18B43E8500313DAA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00B4CB9B18B43E8400313DAA /* Cocoa.framework */; };\n\t\t00B4CBC718B43E8500313DAA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 00B4CBC518B43E8500313DAA /* InfoPlist.strings */; };\n\t\t00B4CBC918B43E8500313DAA /* TTMTask_ReplaceText_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B4CBC818B43E8500313DAA /* TTMTask_ReplaceText_UnitTests.m */; };\n\t\t00B8C82518E48FFF008D9E48 /* TTMFieldEditor.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B8C82418E48FFF008D9E48 /* TTMFieldEditor.m */; };\n\t\t00D102B61991ABBE00D30237 /* TTMTasklistMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 00D102B51991ABBE00D30237 /* TTMTasklistMetadata.m */; };\n\t\t00D531271CACA285007EF487 /* TTMTask_IsHidden_UnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00D531261CACA285007EF487 /* TTMTask_IsHidden_UnitTests.m */; };\n\t\t00D5312A1CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00D531291CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.m */; };\n\t\t00DA4A1D1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00DA4A1C1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.m */; };\n\t\t00EAAB9718E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EAAB9618E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.m */; };\n\t\t00EAAB9A18E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EAAB9918E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.m */; };\n\t\t00EAAB9D18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EAAB9C18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.m */; };\n\t\t00EC5EA118E3BC920021242B /* TTMAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EC5EA018E3BC920021242B /* TTMAppDelegate.m */; };\n\t\t00F3961218C6AC010002EA3F /* TTMTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 00F3961118C6AC010002EA3F /* TTMTableView.m */; };\n\t\t00F811EF18D53F7300379B99 /* TTMPreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00F811ED18D53F7300379B99 /* TTMPreferencesController.m */; };\n\t\t00FA1D2818F1EF340066A437 /* FontNameTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 00FA1D2718F1EF340066A437 /* FontNameTransformer.m */; };\n\t\t00FA1D2A18F1EF4C0066A437 /* RelativeDates.strings in Resources */ = {isa = PBXBuildFile; fileRef = 00FA1D2918F1EF4C0066A437 /* RelativeDates.strings */; };\n\t\t00FB47861A733E6100F8D2B3 /* TTMDocumentStatusBarText.m in Sources */ = {isa = PBXBuildFile; fileRef = 00FB47851A733E6100F8D2B3 /* TTMDocumentStatusBarText.m */; };\n\t\t00FCB2F918DB64510070BD4A /* TTMFilters.xib in Resources */ = {isa = PBXBuildFile; fileRef = 00FCB2F818DB64510070BD4A /* TTMFilters.xib */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t00B4CBC018B43E8500313DAA /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 00B4CB9018B43E8400313DAA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 00B4CB9718B43E8400313DAA;\n\t\t\tremoteInfo = TodoTxtMac;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t003647DD193D50DA00FDF67A /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t00308E161C90FD260007681C /* Sparkle.framework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t00165B2418DBD1EC00E137B8 /* TTMFiltersController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMFiltersController.h; sourceTree = \"<group>\"; };\n\t\t00165B2518DBD1EC00E137B8 /* TTMFiltersController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMFiltersController.m; sourceTree = \"<group>\"; };\n\t\t002218D71AA0D80800D6F3A0 /* TTMTask_Init_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_Init_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218D91AA0EB3200D6F3A0 /* TTMTask_IsCompleted_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_IsCompleted_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218DB1AA0F48D00D6F3A0 /* TTMTask_DueDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_DueDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218DD1AA107F600D6F3A0 /* TTMTask_CompletionDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_CompletionDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218DF1AA1387900D6F3A0 /* TTMTask_ThresholdDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_ThresholdDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218E11AA139EB00D6F3A0 /* TTMTask_CreationDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_CreationDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218E31AA1704B00D6F3A0 /* TTMTask_DueState_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_DueState_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218E51AA173D100D6F3A0 /* TTMTask_ThresholdState_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_ThresholdState_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218E71AA179CD00D6F3A0 /* TTMTask_MarkComplete_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_MarkComplete_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002218E91AA17B9B00D6F3A0 /* TTMTask_MarkIncomplete_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_MarkIncomplete_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t002EAE5718DBD24C008E7517 /* TTMAppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMAppController.h; sourceTree = \"<group>\"; };\n\t\t002EAE5818DBD24C008E7517 /* TTMAppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMAppController.m; sourceTree = \"<group>\"; };\n\t\t002EAE5C18DCAE5C008E7517 /* TTMFilterPredicates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMFilterPredicates.h; sourceTree = \"<group>\"; };\n\t\t002EAE5D18DCAE5C008E7517 /* TTMFilterPredicates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMFilterPredicates.m; sourceTree = \"<group>\"; };\n\t\t00308E131C90FD120007681C /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = \"<group>\"; };\n\t\t003647E0193D562900FDF67A /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = \"<group>\"; };\n\t\t003F958E1AA2948D00A1FF47 /* TTMTask_ToggleCompletion_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_ToggleCompletion_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95901AA2965600A1FF47 /* TTMDateUtility_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMDateUtility_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95921AA296F300A1FF47 /* TTMTask_Priority_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_Priority_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95941AA2A35A00A1FF47 /* TTMTask_Projects_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_Projects_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95961AA2A44800A1FF47 /* TTMTask_Contexts_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_Contexts_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95981AA2A64100A1FF47 /* TTMTask_SetDueDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_SetDueDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F959A1AA2B7A600A1FF47 /* TTMTask_RemoveDueDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_RemoveDueDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F959C1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSMutableAttributableString+ColorRegExMatches.h\"; sourceTree = \"<group>\"; };\n\t\t003F959D1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSMutableAttributableString+ColorRegExMatches.m\"; sourceTree = \"<group>\"; };\n\t\t003F959F1AA3F04C00A1FF47 /* TTMTask_Postpone_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_Postpone_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95A11AA3F41400A1FF47 /* TTMTask_IncreasePriority_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_IncreasePriority_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95A31AA3F5DC00A1FF47 /* TTMTask_DecreasePriority_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_DecreasePriority_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95A51AA3F68200A1FF47 /* TTMTask_RemovePriority_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_RemovePriority_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95A71AA3F83D00A1FF47 /* TTMTask_SetThresholdDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_SetThresholdDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95A91AA3F9C700A1FF47 /* TTMTask_IncrementThresholdDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_IncrementThresholdDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95AB1AA3FBDA00A1FF47 /* TTMTask_DecrementThresholdDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_DecrementThresholdDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95AD1AA3FC9600A1FF47 /* TTMTask_RemoveThresholdDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_RemoveThresholdDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95AF1AA3FE4400A1FF47 /* TTMTask_AppendText_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_AppendText_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95B11AA4016200A1FF47 /* TTMTask_PrependText_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_PrependText_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95B31AA40EC700A1FF47 /* TTMTask_IncrementDueDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_IncrementDueDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t003F95B51AA40FB400A1FF47 /* TTMTask_DecrementDueDate_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_DecrementDueDate_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t0050D6831996AA38008F349B /* TTMTasklistMetadata_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTasklistMetadata_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t006062D618EC6B0800D147F2 /* NSUserDefaults+myColorSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSUserDefaults+myColorSupport.h\"; sourceTree = \"<group>\"; };\n\t\t006062D718EC6B0800D147F2 /* NSUserDefaults+myColorSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSUserDefaults+myColorSupport.m\"; sourceTree = \"<group>\"; };\n\t\t0064E6421C9CEE6600B9A6C0 /* NSDate+RelativeDates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSDate+RelativeDates.h\"; sourceTree = \"<group>\"; };\n\t\t0064E6431C9CEE6600B9A6C0 /* NSDate+RelativeDates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSDate+RelativeDates.m\"; sourceTree = \"<group>\"; };\n\t\t006B26451A81C82D00B0E47A /* TTMFindReplace.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TTMFindReplace.xib; sourceTree = \"<group>\"; };\n\t\t006BA79D19DB9CFD00C8F408 /* TTMTasklistMetadata.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TTMTasklistMetadata.xib; sourceTree = \"<group>\"; };\n\t\t007B835D1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPredicateEditorThresholdRowTemplate.h; sourceTree = \"<group>\"; };\n\t\t007B835E1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPredicateEditorThresholdRowTemplate.m; sourceTree = \"<group>\"; };\n\t\t0080EAA418D3E96C0014DDD1 /* TTMPreferences.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TTMPreferences.xib; sourceTree = \"<group>\"; };\n\t\t0086C98318B54F1A00A427AA /* TTMTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMTableViewDelegate.h; sourceTree = \"<group>\"; };\n\t\t0086C98418B54F1A00A427AA /* TTMTableViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTableViewDelegate.m; sourceTree = \"<group>\"; };\n\t\t00930EA818B536B00064D41B /* RegExCategories.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExCategories.h; sourceTree = \"<group>\"; };\n\t\t00930EA918B536B00064D41B /* RegExCategories.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegExCategories.m; sourceTree = \"<group>\"; };\n\t\t00930EAB18B5371B0064D41B /* TTMTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMTask.h; sourceTree = \"<group>\"; };\n\t\t00930EAC18B5371B0064D41B /* TTMTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask.m; sourceTree = \"<group>\"; };\n\t\t00930EAF18B537C10064D41B /* TTMDateUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMDateUtility.h; sourceTree = \"<group>\"; };\n\t\t00930EB018B537C10064D41B /* TTMDateUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMDateUtility.m; sourceTree = \"<group>\"; };\n\t\t00A4E02E18D1569700CEE0A8 /* TodoTxtMac.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = TodoTxtMac.entitlements; sourceTree = \"<group>\"; };\n\t\t00B4CB9818B43E8400313DAA /* TodoTxtMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TodoTxtMac.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t00B4CB9B18B43E8400313DAA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };\n\t\t00B4CB9E18B43E8400313DAA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };\n\t\t00B4CB9F18B43E8400313DAA /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };\n\t\t00B4CBA018B43E8400313DAA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };\n\t\t00B4CBA318B43E8400313DAA /* TodoTxtMac-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"TodoTxtMac-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t00B4CBA518B43E8400313DAA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t00B4CBA718B43E8400313DAA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\t00B4CBA918B43E8400313DAA /* TodoTxtMac-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"TodoTxtMac-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t00B4CBAB18B43E8400313DAA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = \"<group>\"; };\n\t\t00B4CBAD18B43E8400313DAA /* TTMDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TTMDocument.h; sourceTree = \"<group>\"; };\n\t\t00B4CBAE18B43E8400313DAA /* TTMDocument.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TTMDocument.m; sourceTree = \"<group>\"; };\n\t\t00B4CBB118B43E8400313DAA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/TTMDocument.xib; sourceTree = \"<group>\"; };\n\t\t00B4CBB418B43E8500313DAA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = \"<group>\"; };\n\t\t00B4CBB618B43E8500313DAA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\t00B4CBBC18B43E8500313DAA /* TodoTxtMacTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TodoTxtMacTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t00B4CBBD18B43E8500313DAA /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };\n\t\t00B4CBC418B43E8500313DAA /* TodoTxtMacTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"TodoTxtMacTests-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t00B4CBC618B43E8500313DAA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t00B4CBC818B43E8500313DAA /* TTMTask_ReplaceText_UnitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TTMTask_ReplaceText_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t00B8C82318E48FFF008D9E48 /* TTMFieldEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMFieldEditor.h; sourceTree = \"<group>\"; };\n\t\t00B8C82418E48FFF008D9E48 /* TTMFieldEditor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMFieldEditor.m; sourceTree = \"<group>\"; };\n\t\t00D102B41991ABBE00D30237 /* TTMTasklistMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMTasklistMetadata.h; sourceTree = \"<group>\"; };\n\t\t00D102B51991ABBE00D30237 /* TTMTasklistMetadata.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTasklistMetadata.m; sourceTree = \"<group>\"; };\n\t\t00D531261CACA285007EF487 /* TTMTask_IsHidden_UnitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTask_IsHidden_UnitTests.m; sourceTree = \"<group>\"; };\n\t\t00D531281CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPredicateEditorHiddenRowTemplate.h; sourceTree = \"<group>\"; };\n\t\t00D531291CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPredicateEditorHiddenRowTemplate.m; sourceTree = \"<group>\"; };\n\t\t00DA4A1B1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPredicateEditorTextRowTemplate.h; sourceTree = \"<group>\"; };\n\t\t00DA4A1C1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPredicateEditorTextRowTemplate.m; sourceTree = \"<group>\"; };\n\t\t00EAAB9518E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPredicateEditorDateRowTemplate.h; sourceTree = \"<group>\"; };\n\t\t00EAAB9618E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPredicateEditorDateRowTemplate.m; sourceTree = \"<group>\"; };\n\t\t00EAAB9818E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPredicateEditorDueRowTemplate.h; sourceTree = \"<group>\"; };\n\t\t00EAAB9918E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPredicateEditorDueRowTemplate.m; sourceTree = \"<group>\"; };\n\t\t00EAAB9B18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPredicateEditorCompletedRowTemplate.h; sourceTree = \"<group>\"; };\n\t\t00EAAB9C18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPredicateEditorCompletedRowTemplate.m; sourceTree = \"<group>\"; };\n\t\t00EC5E9F18E3BC920021242B /* TTMAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMAppDelegate.h; sourceTree = \"<group>\"; };\n\t\t00EC5EA018E3BC920021242B /* TTMAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMAppDelegate.m; sourceTree = \"<group>\"; };\n\t\t00F3961018C6AC010002EA3F /* TTMTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMTableView.h; sourceTree = \"<group>\"; };\n\t\t00F3961118C6AC010002EA3F /* TTMTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMTableView.m; sourceTree = \"<group>\"; };\n\t\t00F811EC18D53F7300379B99 /* TTMPreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMPreferencesController.h; sourceTree = \"<group>\"; };\n\t\t00F811ED18D53F7300379B99 /* TTMPreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMPreferencesController.m; sourceTree = \"<group>\"; };\n\t\t00FA1D2618F1EF340066A437 /* FontNameTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontNameTransformer.h; sourceTree = \"<group>\"; };\n\t\t00FA1D2718F1EF340066A437 /* FontNameTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FontNameTransformer.m; sourceTree = \"<group>\"; };\n\t\t00FA1D2918F1EF4C0066A437 /* RelativeDates.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = RelativeDates.strings; sourceTree = \"<group>\"; };\n\t\t00FB47841A733E6100F8D2B3 /* TTMDocumentStatusBarText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTMDocumentStatusBarText.h; sourceTree = \"<group>\"; };\n\t\t00FB47851A733E6100F8D2B3 /* TTMDocumentStatusBarText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTMDocumentStatusBarText.m; sourceTree = \"<group>\"; };\n\t\t00FCB2F818DB64510070BD4A /* TTMFilters.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TTMFilters.xib; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t00B4CB9518B43E8400313DAA /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t00B4CB9C18B43E8400313DAA /* Cocoa.framework in Frameworks */,\n\t\t\t\t00308E171C90FD390007681C /* Sparkle.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t00B4CBB918B43E8500313DAA /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t00B4CBBF18B43E8500313DAA /* Cocoa.framework in Frameworks */,\n\t\t\t\t00B4CBBE18B43E8500313DAA /* XCTest.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t00165B2218DBD11400E137B8 /* Preferences */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0080EAA418D3E96C0014DDD1 /* TTMPreferences.xib */,\n\t\t\t\t00F811EC18D53F7300379B99 /* TTMPreferencesController.h */,\n\t\t\t\t00F811ED18D53F7300379B99 /* TTMPreferencesController.m */,\n\t\t\t);\n\t\t\tname = Preferences;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00165B2318DBD18C00E137B8 /* Filters */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00FCB2F818DB64510070BD4A /* TTMFilters.xib */,\n\t\t\t\t00165B2418DBD1EC00E137B8 /* TTMFiltersController.h */,\n\t\t\t\t00165B2518DBD1EC00E137B8 /* TTMFiltersController.m */,\n\t\t\t\t002EAE5C18DCAE5C008E7517 /* TTMFilterPredicates.h */,\n\t\t\t\t002EAE5D18DCAE5C008E7517 /* TTMFilterPredicates.m */,\n\t\t\t\t00EAAB9518E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.h */,\n\t\t\t\t00EAAB9618E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.m */,\n\t\t\t\t00EAAB9B18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.h */,\n\t\t\t\t00EAAB9C18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.m */,\n\t\t\t\t00EAAB9818E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.h */,\n\t\t\t\t00EAAB9918E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.m */,\n\t\t\t\t007B835D1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.h */,\n\t\t\t\t007B835E1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.m */,\n\t\t\t\t00D531281CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.h */,\n\t\t\t\t00D531291CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.m */,\n\t\t\t\t00DA4A1B1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.h */,\n\t\t\t\t00DA4A1C1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.m */,\n\t\t\t);\n\t\t\tname = Filters;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t003647DF193D55FF00FDF67A /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t003647E0193D562900FDF67A /* dsa_pub.pem */,\n\t\t\t);\n\t\t\tname = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0080EAA118D388770014DDD1 /* Libraries */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00FA1D2618F1EF340066A437 /* FontNameTransformer.h */,\n\t\t\t\t00FA1D2718F1EF340066A437 /* FontNameTransformer.m */,\n\t\t\t\t00930EAF18B537C10064D41B /* TTMDateUtility.h */,\n\t\t\t\t00930EB018B537C10064D41B /* TTMDateUtility.m */,\n\t\t\t\t00930EA818B536B00064D41B /* RegExCategories.h */,\n\t\t\t\t00930EA918B536B00064D41B /* RegExCategories.m */,\n\t\t\t\t006062D618EC6B0800D147F2 /* NSUserDefaults+myColorSupport.h */,\n\t\t\t\t006062D718EC6B0800D147F2 /* NSUserDefaults+myColorSupport.m */,\n\t\t\t\t003F959C1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.h */,\n\t\t\t\t003F959D1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.m */,\n\t\t\t\t0064E6421C9CEE6600B9A6C0 /* NSDate+RelativeDates.h */,\n\t\t\t\t0064E6431C9CEE6600B9A6C0 /* NSDate+RelativeDates.m */,\n\t\t\t);\n\t\t\tname = Libraries;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CB8F18B43E8400313DAA = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBA118B43E8400313DAA /* TodoTxtMac */,\n\t\t\t\t00B4CBC218B43E8500313DAA /* TodoTxtMacTests */,\n\t\t\t\t003647DF193D55FF00FDF67A /* Resources */,\n\t\t\t\t00B4CB9A18B43E8400313DAA /* Frameworks */,\n\t\t\t\t00B4CB9918B43E8400313DAA /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CB9918B43E8400313DAA /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CB9818B43E8400313DAA /* TodoTxtMac.app */,\n\t\t\t\t00B4CBBC18B43E8500313DAA /* TodoTxtMacTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CB9A18B43E8400313DAA /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00308E131C90FD120007681C /* Sparkle.framework */,\n\t\t\t\t00B4CB9B18B43E8400313DAA /* Cocoa.framework */,\n\t\t\t\t00B4CBBD18B43E8500313DAA /* XCTest.framework */,\n\t\t\t\t00B4CB9D18B43E8400313DAA /* Other Frameworks */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CB9D18B43E8400313DAA /* Other Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CB9E18B43E8400313DAA /* AppKit.framework */,\n\t\t\t\t00B4CB9F18B43E8400313DAA /* CoreData.framework */,\n\t\t\t\t00B4CBA018B43E8400313DAA /* Foundation.framework */,\n\t\t\t);\n\t\t\tname = \"Other Frameworks\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBA118B43E8400313DAA /* TodoTxtMac */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00F811F618D545AF00379B99 /* Application */,\n\t\t\t\t00165B2218DBD11400E137B8 /* Preferences */,\n\t\t\t\t00165B2318DBD18C00E137B8 /* Filters */,\n\t\t\t\t00F811F518D5458000379B99 /* TaskList Document */,\n\t\t\t\t00F811F418D5454900379B99 /* Task Model */,\n\t\t\t\t00D102B31991AB8400D30237 /* Metadata Model */,\n\t\t\t\t0080EAA118D388770014DDD1 /* Libraries */,\n\t\t\t\t00B4CBA218B43E8400313DAA /* Supporting Files */,\n\t\t\t\t00B4CBB618B43E8500313DAA /* Images.xcassets */,\n\t\t\t\t00A4E02E18D1569700CEE0A8 /* TodoTxtMac.entitlements */,\n\t\t\t);\n\t\t\tpath = TodoTxtMac;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBA218B43E8400313DAA /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00FA1D2918F1EF4C0066A437 /* RelativeDates.strings */,\n\t\t\t\t00B4CBA318B43E8400313DAA /* TodoTxtMac-Info.plist */,\n\t\t\t\t00B4CBA418B43E8400313DAA /* InfoPlist.strings */,\n\t\t\t\t00B4CBA718B43E8400313DAA /* main.m */,\n\t\t\t\t00B4CBA918B43E8400313DAA /* TodoTxtMac-Prefix.pch */,\n\t\t\t\t00B4CBAA18B43E8400313DAA /* Credits.rtf */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBC218B43E8500313DAA /* TodoTxtMacTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBC318B43E8500313DAA /* Supporting Files */,\n\t\t\t\t003F95901AA2965600A1FF47 /* TTMDateUtility_UnitTests.m */,\n\t\t\t\t0050D6831996AA38008F349B /* TTMTasklistMetadata_UnitTests.m */,\n\t\t\t\t002218D71AA0D80800D6F3A0 /* TTMTask_Init_UnitTests.m */,\n\t\t\t\t003F95921AA296F300A1FF47 /* TTMTask_Priority_UnitTests.m */,\n\t\t\t\t002218DD1AA107F600D6F3A0 /* TTMTask_CompletionDate_UnitTests.m */,\n\t\t\t\t002218E11AA139EB00D6F3A0 /* TTMTask_CreationDate_UnitTests.m */,\n\t\t\t\t002218DB1AA0F48D00D6F3A0 /* TTMTask_DueDate_UnitTests.m */,\n\t\t\t\t002218E31AA1704B00D6F3A0 /* TTMTask_DueState_UnitTests.m */,\n\t\t\t\t002218DF1AA1387900D6F3A0 /* TTMTask_ThresholdDate_UnitTests.m */,\n\t\t\t\t002218E51AA173D100D6F3A0 /* TTMTask_ThresholdState_UnitTests.m */,\n\t\t\t\t002218D91AA0EB3200D6F3A0 /* TTMTask_IsCompleted_UnitTests.m */,\n\t\t\t\t002218E71AA179CD00D6F3A0 /* TTMTask_MarkComplete_UnitTests.m */,\n\t\t\t\t002218E91AA17B9B00D6F3A0 /* TTMTask_MarkIncomplete_UnitTests.m */,\n\t\t\t\t003F958E1AA2948D00A1FF47 /* TTMTask_ToggleCompletion_UnitTests.m */,\n\t\t\t\t003F95941AA2A35A00A1FF47 /* TTMTask_Projects_UnitTests.m */,\n\t\t\t\t003F95961AA2A44800A1FF47 /* TTMTask_Contexts_UnitTests.m */,\n\t\t\t\t003F95981AA2A64100A1FF47 /* TTMTask_SetDueDate_UnitTests.m */,\n\t\t\t\t003F959F1AA3F04C00A1FF47 /* TTMTask_Postpone_UnitTests.m */,\n\t\t\t\t003F95B31AA40EC700A1FF47 /* TTMTask_IncrementDueDate_UnitTests.m */,\n\t\t\t\t003F95B51AA40FB400A1FF47 /* TTMTask_DecrementDueDate_UnitTests.m */,\n\t\t\t\t003F959A1AA2B7A600A1FF47 /* TTMTask_RemoveDueDate_UnitTests.m */,\n\t\t\t\t003F95A11AA3F41400A1FF47 /* TTMTask_IncreasePriority_UnitTests.m */,\n\t\t\t\t003F95A31AA3F5DC00A1FF47 /* TTMTask_DecreasePriority_UnitTests.m */,\n\t\t\t\t003F95A51AA3F68200A1FF47 /* TTMTask_RemovePriority_UnitTests.m */,\n\t\t\t\t003F95A71AA3F83D00A1FF47 /* TTMTask_SetThresholdDate_UnitTests.m */,\n\t\t\t\t003F95A91AA3F9C700A1FF47 /* TTMTask_IncrementThresholdDate_UnitTests.m */,\n\t\t\t\t003F95AB1AA3FBDA00A1FF47 /* TTMTask_DecrementThresholdDate_UnitTests.m */,\n\t\t\t\t003F95AD1AA3FC9600A1FF47 /* TTMTask_RemoveThresholdDate_UnitTests.m */,\n\t\t\t\t003F95AF1AA3FE4400A1FF47 /* TTMTask_AppendText_UnitTests.m */,\n\t\t\t\t003F95B11AA4016200A1FF47 /* TTMTask_PrependText_UnitTests.m */,\n\t\t\t\t00B4CBC818B43E8500313DAA /* TTMTask_ReplaceText_UnitTests.m */,\n\t\t\t\t00D531261CACA285007EF487 /* TTMTask_IsHidden_UnitTests.m */,\n\t\t\t);\n\t\t\tpath = TodoTxtMacTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBC318B43E8500313DAA /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBC418B43E8500313DAA /* TodoTxtMacTests-Info.plist */,\n\t\t\t\t00B4CBC518B43E8500313DAA /* InfoPlist.strings */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00D102B31991AB8400D30237 /* Metadata Model */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00D102B41991ABBE00D30237 /* TTMTasklistMetadata.h */,\n\t\t\t\t00D102B51991ABBE00D30237 /* TTMTasklistMetadata.m */,\n\t\t\t);\n\t\t\tname = \"Metadata Model\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00F811F418D5454900379B99 /* Task Model */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00930EAB18B5371B0064D41B /* TTMTask.h */,\n\t\t\t\t00930EAC18B5371B0064D41B /* TTMTask.m */,\n\t\t\t);\n\t\t\tname = \"Task Model\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00F811F518D5458000379B99 /* TaskList Document */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBB018B43E8400313DAA /* TTMDocument.xib */,\n\t\t\t\t006BA79D19DB9CFD00C8F408 /* TTMTasklistMetadata.xib */,\n\t\t\t\t006B26451A81C82D00B0E47A /* TTMFindReplace.xib */,\n\t\t\t\t00B4CBAD18B43E8400313DAA /* TTMDocument.h */,\n\t\t\t\t00B4CBAE18B43E8400313DAA /* TTMDocument.m */,\n\t\t\t\t0086C98318B54F1A00A427AA /* TTMTableViewDelegate.h */,\n\t\t\t\t0086C98418B54F1A00A427AA /* TTMTableViewDelegate.m */,\n\t\t\t\t00F3961018C6AC010002EA3F /* TTMTableView.h */,\n\t\t\t\t00F3961118C6AC010002EA3F /* TTMTableView.m */,\n\t\t\t\t00B8C82318E48FFF008D9E48 /* TTMFieldEditor.h */,\n\t\t\t\t00B8C82418E48FFF008D9E48 /* TTMFieldEditor.m */,\n\t\t\t\t00FB47841A733E6100F8D2B3 /* TTMDocumentStatusBarText.h */,\n\t\t\t\t00FB47851A733E6100F8D2B3 /* TTMDocumentStatusBarText.m */,\n\t\t\t);\n\t\t\tname = \"TaskList Document\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00F811F618D545AF00379B99 /* Application */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBB318B43E8500313DAA /* MainMenu.xib */,\n\t\t\t\t00EC5E9F18E3BC920021242B /* TTMAppDelegate.h */,\n\t\t\t\t00EC5EA018E3BC920021242B /* TTMAppDelegate.m */,\n\t\t\t\t002EAE5718DBD24C008E7517 /* TTMAppController.h */,\n\t\t\t\t002EAE5818DBD24C008E7517 /* TTMAppController.m */,\n\t\t\t);\n\t\t\tname = Application;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t00B4CB9718B43E8400313DAA /* TodoTxtMac */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 00B4CBCC18B43E8500313DAA /* Build configuration list for PBXNativeTarget \"TodoTxtMac\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t00B4CB9418B43E8400313DAA /* Sources */,\n\t\t\t\t00B4CB9518B43E8400313DAA /* Frameworks */,\n\t\t\t\t00B4CB9618B43E8400313DAA /* Resources */,\n\t\t\t\t003647DD193D50DA00FDF67A /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = TodoTxtMac;\n\t\t\tproductName = TodoTxtMac;\n\t\t\tproductReference = 00B4CB9818B43E8400313DAA /* TodoTxtMac.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t00B4CBBB18B43E8500313DAA /* TodoTxtMacTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 00B4CBCF18B43E8500313DAA /* Build configuration list for PBXNativeTarget \"TodoTxtMacTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t00B4CBB818B43E8500313DAA /* Sources */,\n\t\t\t\t00B4CBB918B43E8500313DAA /* Frameworks */,\n\t\t\t\t00B4CBBA18B43E8500313DAA /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t00B4CBC118B43E8500313DAA /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = TodoTxtMacTests;\n\t\t\tproductName = TodoTxtMacTests;\n\t\t\tproductReference = 00B4CBBC18B43E8500313DAA /* TodoTxtMacTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t00B4CB9018B43E8400313DAA /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tCLASSPREFIX = TTM;\n\t\t\t\tLastUpgradeCheck = 0820;\n\t\t\t\tORGANIZATIONNAME = \"Michael Descy\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t00B4CB9718B43E8400313DAA = {\n\t\t\t\t\t\tSystemCapabilities = {\n\t\t\t\t\t\t\tcom.apple.Sandbox = {\n\t\t\t\t\t\t\t\tenabled = 0;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t\t00B4CBBB18B43E8500313DAA = {\n\t\t\t\t\t\tTestTargetID = 00B4CB9718B43E8400313DAA;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 00B4CB9318B43E8400313DAA /* Build configuration list for PBXProject \"TodoTxtMac\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 00B4CB8F18B43E8400313DAA;\n\t\t\tproductRefGroup = 00B4CB9918B43E8400313DAA /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t00B4CB9718B43E8400313DAA /* TodoTxtMac */,\n\t\t\t\t00B4CBBB18B43E8500313DAA /* TodoTxtMacTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t00B4CB9618B43E8400313DAA /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t006BA79E19DB9CFD00C8F408 /* TTMTasklistMetadata.xib in Resources */,\n\t\t\t\t0080EAA518D3E96C0014DDD1 /* TTMPreferences.xib in Resources */,\n\t\t\t\t00FCB2F918DB64510070BD4A /* TTMFilters.xib in Resources */,\n\t\t\t\t00FA1D2A18F1EF4C0066A437 /* RelativeDates.strings in Resources */,\n\t\t\t\t00B4CBB218B43E8400313DAA /* TTMDocument.xib in Resources */,\n\t\t\t\t003647E1193D562900FDF67A /* dsa_pub.pem in Resources */,\n\t\t\t\t00B4CBB718B43E8500313DAA /* Images.xcassets in Resources */,\n\t\t\t\t00B4CBA618B43E8400313DAA /* InfoPlist.strings in Resources */,\n\t\t\t\t00B4CBAC18B43E8400313DAA /* Credits.rtf in Resources */,\n\t\t\t\t00B4CBB518B43E8500313DAA /* MainMenu.xib in Resources */,\n\t\t\t\t006B26461A81C82D00B0E47A /* TTMFindReplace.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t00B4CBBA18B43E8500313DAA /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t00B4CBC718B43E8500313DAA /* InfoPlist.strings in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t00B4CB9418B43E8400313DAA /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0064E6441C9CEE6600B9A6C0 /* NSDate+RelativeDates.m in Sources */,\n\t\t\t\t002EAE5918DBD24C008E7517 /* TTMAppController.m in Sources */,\n\t\t\t\t00EAAB9A18E1CF79009CBE8C /* TTMPredicateEditorDueRowTemplate.m in Sources */,\n\t\t\t\t002EAE5E18DCAE5C008E7517 /* TTMFilterPredicates.m in Sources */,\n\t\t\t\t006062D818EC6B0800D147F2 /* NSUserDefaults+myColorSupport.m in Sources */,\n\t\t\t\t00930EAD18B5371B0064D41B /* TTMTask.m in Sources */,\n\t\t\t\t00F3961218C6AC010002EA3F /* TTMTableView.m in Sources */,\n\t\t\t\t00930EB118B537C10064D41B /* TTMDateUtility.m in Sources */,\n\t\t\t\t00FA1D2818F1EF340066A437 /* FontNameTransformer.m in Sources */,\n\t\t\t\t00D102B61991ABBE00D30237 /* TTMTasklistMetadata.m in Sources */,\n\t\t\t\t00DA4A1D1D5BBEB600CFF2B1 /* TTMPredicateEditorTextRowTemplate.m in Sources */,\n\t\t\t\t0086C98518B54F1A00A427AA /* TTMTableViewDelegate.m in Sources */,\n\t\t\t\t007B835F1A5A415300A4D5F7 /* TTMPredicateEditorThresholdRowTemplate.m in Sources */,\n\t\t\t\t00B4CBAF18B43E8400313DAA /* TTMDocument.m in Sources */,\n\t\t\t\t00930EAA18B536B00064D41B /* RegExCategories.m in Sources */,\n\t\t\t\t00B4CBA818B43E8400313DAA /* main.m in Sources */,\n\t\t\t\t003F959E1AA2C42700A1FF47 /* NSMutableAttributableString+ColorRegExMatches.m in Sources */,\n\t\t\t\t00EAAB9718E0C168009CBE8C /* TTMPredicateEditorDateRowTemplate.m in Sources */,\n\t\t\t\t00EC5EA118E3BC920021242B /* TTMAppDelegate.m in Sources */,\n\t\t\t\t00F811EF18D53F7300379B99 /* TTMPreferencesController.m in Sources */,\n\t\t\t\t00165B2618DBD1EC00E137B8 /* TTMFiltersController.m in Sources */,\n\t\t\t\t00FB47861A733E6100F8D2B3 /* TTMDocumentStatusBarText.m in Sources */,\n\t\t\t\t00D5312A1CACC3C7007EF487 /* TTMPredicateEditorHiddenRowTemplate.m in Sources */,\n\t\t\t\t00B8C82518E48FFF008D9E48 /* TTMFieldEditor.m in Sources */,\n\t\t\t\t00EAAB9D18E1CF92009CBE8C /* TTMPredicateEditorCompletedRowTemplate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t00B4CBB818B43E8500313DAA /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t003F95911AA2965600A1FF47 /* TTMDateUtility_UnitTests.m in Sources */,\n\t\t\t\t002218DA1AA0EB3200D6F3A0 /* TTMTask_IsCompleted_UnitTests.m in Sources */,\n\t\t\t\t003F95971AA2A44800A1FF47 /* TTMTask_Contexts_UnitTests.m in Sources */,\n\t\t\t\t003F958F1AA2948D00A1FF47 /* TTMTask_ToggleCompletion_UnitTests.m in Sources */,\n\t\t\t\t003F95A41AA3F5DC00A1FF47 /* TTMTask_DecreasePriority_UnitTests.m in Sources */,\n\t\t\t\t002218EA1AA17B9B00D6F3A0 /* TTMTask_MarkIncomplete_UnitTests.m in Sources */,\n\t\t\t\t002218E41AA1704B00D6F3A0 /* TTMTask_DueState_UnitTests.m in Sources */,\n\t\t\t\t003F95A81AA3F83D00A1FF47 /* TTMTask_SetThresholdDate_UnitTests.m in Sources */,\n\t\t\t\t003F95B61AA40FB400A1FF47 /* TTMTask_DecrementDueDate_UnitTests.m in Sources */,\n\t\t\t\t002218DC1AA0F48D00D6F3A0 /* TTMTask_DueDate_UnitTests.m in Sources */,\n\t\t\t\t002218E61AA173D100D6F3A0 /* TTMTask_ThresholdState_UnitTests.m in Sources */,\n\t\t\t\t002218E21AA139EB00D6F3A0 /* TTMTask_CreationDate_UnitTests.m in Sources */,\n\t\t\t\t002218E81AA179CD00D6F3A0 /* TTMTask_MarkComplete_UnitTests.m in Sources */,\n\t\t\t\t00B4CBC918B43E8500313DAA /* TTMTask_ReplaceText_UnitTests.m in Sources */,\n\t\t\t\t003F95A61AA3F68200A1FF47 /* TTMTask_RemovePriority_UnitTests.m in Sources */,\n\t\t\t\t003F95AE1AA3FC9600A1FF47 /* TTMTask_RemoveThresholdDate_UnitTests.m in Sources */,\n\t\t\t\t003F95A21AA3F41400A1FF47 /* TTMTask_IncreasePriority_UnitTests.m in Sources */,\n\t\t\t\t003F95951AA2A35A00A1FF47 /* TTMTask_Projects_UnitTests.m in Sources */,\n\t\t\t\t003F95B41AA40EC700A1FF47 /* TTMTask_IncrementDueDate_UnitTests.m in Sources */,\n\t\t\t\t003F95AC1AA3FBDA00A1FF47 /* TTMTask_DecrementThresholdDate_UnitTests.m in Sources */,\n\t\t\t\t0050D6841996AA38008F349B /* TTMTasklistMetadata_UnitTests.m in Sources */,\n\t\t\t\t003F95B21AA4016200A1FF47 /* TTMTask_PrependText_UnitTests.m in Sources */,\n\t\t\t\t003F959B1AA2B7A600A1FF47 /* TTMTask_RemoveDueDate_UnitTests.m in Sources */,\n\t\t\t\t002218D81AA0D80800D6F3A0 /* TTMTask_Init_UnitTests.m in Sources */,\n\t\t\t\t00D531271CACA285007EF487 /* TTMTask_IsHidden_UnitTests.m in Sources */,\n\t\t\t\t003F95AA1AA3F9C700A1FF47 /* TTMTask_IncrementThresholdDate_UnitTests.m in Sources */,\n\t\t\t\t002218E01AA1387900D6F3A0 /* TTMTask_ThresholdDate_UnitTests.m in Sources */,\n\t\t\t\t003F95B01AA3FE4400A1FF47 /* TTMTask_AppendText_UnitTests.m in Sources */,\n\t\t\t\t002218DE1AA107F600D6F3A0 /* TTMTask_CompletionDate_UnitTests.m in Sources */,\n\t\t\t\t003F95A01AA3F04C00A1FF47 /* TTMTask_Postpone_UnitTests.m in Sources */,\n\t\t\t\t003F95991AA2A64100A1FF47 /* TTMTask_SetDueDate_UnitTests.m in Sources */,\n\t\t\t\t003F95931AA296F300A1FF47 /* TTMTask_Priority_UnitTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t00B4CBC118B43E8500313DAA /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 00B4CB9718B43E8400313DAA /* TodoTxtMac */;\n\t\t\ttargetProxy = 00B4CBC018B43E8500313DAA /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t00B4CBA418B43E8400313DAA /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBA518B43E8400313DAA /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBAA18B43E8400313DAA /* Credits.rtf */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBAB18B43E8400313DAA /* en */,\n\t\t\t);\n\t\t\tname = Credits.rtf;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBB018B43E8400313DAA /* TTMDocument.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBB118B43E8400313DAA /* Base */,\n\t\t\t);\n\t\t\tname = TTMDocument.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBB318B43E8500313DAA /* MainMenu.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBB418B43E8500313DAA /* Base */,\n\t\t\t);\n\t\t\tname = MainMenu.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00B4CBC518B43E8500313DAA /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t00B4CBC618B43E8500313DAA /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t00B4CBCA18B43E8500313DAA /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.11;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\t\"OTHER_LDFLAGS[arch=*]\" = \"-Wl,-rpath,@loader_path/../Frameworks\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t00B4CBCB18B43E8500313DAA /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.11;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\t\"OTHER_LDFLAGS[arch=*]\" = \"-Wl,-rpath,@loader_path/../Frameworks\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t00B4CBCD18B43E8500313DAA /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tBUNDLE_LOADER = \"\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"TodoTxtMac/TodoTxtMac-Prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"TodoTxtMac/TodoTxtMac-Info.plist\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.descy.michael.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tTEST_HOST = \"\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t00B4CBCE18B43E8500313DAA /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"TodoTxtMac/TodoTxtMac-Prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"TodoTxtMac/TodoTxtMac-Info.plist\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.descy.michael.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t00B4CBD018B43E8500313DAA /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(BUILT_PRODUCTS_DIR)/TodoTxtMac.app/Contents/MacOS/TodoTxtMac\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"TodoTxtMac/TodoTxtMac-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"TodoTxtMacTests/TodoTxtMacTests-Info.plist\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.descy.michael.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = xctest;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t00B4CBD118B43E8500313DAA /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(BUILT_PRODUCTS_DIR)/TodoTxtMac.app/Contents/MacOS/TodoTxtMac\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"TodoTxtMac/TodoTxtMac-Prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"TodoTxtMacTests/TodoTxtMacTests-Info.plist\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.descy.michael.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = xctest;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t00B4CB9318B43E8400313DAA /* Build configuration list for PBXProject \"TodoTxtMac\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t00B4CBCA18B43E8500313DAA /* Debug */,\n\t\t\t\t00B4CBCB18B43E8500313DAA /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t00B4CBCC18B43E8500313DAA /* Build configuration list for PBXNativeTarget \"TodoTxtMac\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t00B4CBCD18B43E8500313DAA /* Debug */,\n\t\t\t\t00B4CBCE18B43E8500313DAA /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t00B4CBCF18B43E8500313DAA /* Build configuration list for PBXNativeTarget \"TodoTxtMacTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t00B4CBD018B43E8500313DAA /* Debug */,\n\t\t\t\t00B4CBD118B43E8500313DAA /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 00B4CB9018B43E8400313DAA /* Project object */;\n}\n"
  },
  {
    "path": "TodoTxtMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:TodoTxtMac.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "TodoTxtMac.xcodeproj/project.xcworkspace/xcshareddata/TodoTxtMac.xccheckout",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDESourceControlProjectFavoriteDictionaryKey</key>\n\t<false/>\n\t<key>IDESourceControlProjectIdentifier</key>\n\t<string>C3E3AF9F-0812-4964-A2D4-47471DD4BF13</string>\n\t<key>IDESourceControlProjectName</key>\n\t<string>TodoTxtMac</string>\n\t<key>IDESourceControlProjectOriginsDictionary</key>\n\t<dict>\n\t\t<key>7466FF582706CDEEDB6FB7E39AC879FD99CC9718</key>\n\t\t<string>https://github.com/mjdescy/TodoTxtMac.git</string>\n\t</dict>\n\t<key>IDESourceControlProjectPath</key>\n\t<string>TodoTxtMac.xcodeproj</string>\n\t<key>IDESourceControlProjectRelativeInstallPathDictionary</key>\n\t<dict>\n\t\t<key>7466FF582706CDEEDB6FB7E39AC879FD99CC9718</key>\n\t\t<string>../..</string>\n\t</dict>\n\t<key>IDESourceControlProjectURL</key>\n\t<string>https://github.com/mjdescy/TodoTxtMac.git</string>\n\t<key>IDESourceControlProjectVersion</key>\n\t<integer>111</integer>\n\t<key>IDESourceControlProjectWCCIdentifier</key>\n\t<string>7466FF582706CDEEDB6FB7E39AC879FD99CC9718</string>\n\t<key>IDESourceControlProjectWCConfigurations</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>7466FF582706CDEEDB6FB7E39AC879FD99CC9718</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>TodoTxtMac</string>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "TodoTxtMacTests/TTMDateUtility_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMDateUtility.h\"\n\n@interface TTMDateUtility_UnitTests : XCTestCase\n\n@end\n\n@implementation TTMDateUtility_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)testDateConversions_WithNormalDate {\n    NSDate *firstDate = [TTMDateUtility convertStringToDate:@\"2014-01-01\"];\n    NSLog(@\"firstDate: %@\", firstDate);\n    NSString *firstDateString = [TTMDateUtility convertDateToString:firstDate];\n    NSLog(@\"firstDateString: %@\", firstDateString);\n    NSDate *secondDate = [TTMDateUtility convertStringToDate:firstDateString];\n    NSLog(@\"secondDate: %@\", secondDate);\n    XCTAssertEqualObjects(firstDate, secondDate);\n}\n\n- (void)testDateConversions_WithHighDate {\n    NSDate *firstDate = [TTMDateUtility convertStringToDate:@\"9999-12-31\"];\n    NSLog(@\"firstDate: %@\", firstDate);\n    NSString *firstDateString = [TTMDateUtility convertDateToString:firstDate];\n    NSLog(@\"firstDateString: %@\", firstDateString);\n    NSDate *secondDate = [TTMDateUtility convertStringToDate:firstDateString];\n    NSLog(@\"secondDate: %@\", secondDate);\n    XCTAssertEqualObjects(firstDate, secondDate);\n}\n\n- (void)testDateConversions_WithLowDate {\n    NSDate *firstDate = [TTMDateUtility convertStringToDate:@\"1900-01-01\"];\n    NSLog(@\"firstDate: %@\", firstDate);\n    NSString *firstDateString = [TTMDateUtility convertDateToString:firstDate];\n    NSLog(@\"firstDateString: %@\", firstDateString);\n    NSDate *secondDate = [TTMDateUtility convertStringToDate:firstDateString];\n    NSLog(@\"secondDate: %@\", secondDate);\n    XCTAssertEqualObjects(firstDate, secondDate);\n}\n\n- (void)testAddDaysToDate {\n    NSDate *firstDate = [TTMDateUtility convertStringToDate:@\"2014-01-01\"];\n    NSDate *secondDate = [TTMDateUtility convertStringToDate:@\"2014-01-02\"];\n    NSDate *firstDateModified = [TTMDateUtility addDays:1 toDate:firstDate];\n    NSLog(@\"new date: %@\", firstDateModified);\n    XCTAssertEqualObjects(firstDateModified, secondDate);\n}\n\n- (void)testAddDaysToDate_DayLightSavingsTimeUSStart2015 {\n    NSDate *firstDate = [TTMDateUtility convertStringToDate:@\"2015-03-08\"];\n    NSDate *secondDate = [TTMDateUtility convertStringToDate:@\"2015-03-09\"];\n    NSDate *firstDateModified = [TTMDateUtility addDays:1 toDate:firstDate];\n    NSLog(@\"new date: %@\", firstDateModified);\n    XCTAssertEqualObjects(firstDateModified, secondDate);\n}\n\n- (void)testAddNegativeDaysToDate {\n    NSDate *firstDate = [TTMDateUtility convertStringToDate:@\"2014-01-02\"];\n    NSDate *secondDate = [TTMDateUtility convertStringToDate:@\"2014-01-01\"];\n    NSDate *firstDateModified = [TTMDateUtility addDays:-1 toDate:firstDate];\n    NSLog(@\"new date: %@\", firstDateModified);\n    XCTAssertEqualObjects(firstDateModified, secondDate);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_AppendText_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_AppendText_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSString *textToAppend;\n\n@end\n\n@implementation TTMTask_AppendText_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.textToAppend = @\"[text to append]\";\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_AppendText_WhenTaskIsNotBlank_ShouldAppendTextToEnd {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task appendText:self.textToAppend];\n    NSString *expectedRawText = @\"pick up groceries [text to append]\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_AppendText_WhenTaskIsBlank_ShouldAppendTextToEnd {\n    NSString *rawText = @\"\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task appendText:self.textToAppend];\n    XCTAssertEqualObjects(self.textToAppend, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_CompletionDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_CompletionDate_UnitTests : XCTestCase\n\n@property NSString *rawText;\n@property NSUInteger taskId;\n@property NSDate *completionDate;\n@property NSDate *highDate;\n\n@end\n\n@implementation TTMTask_CompletionDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.rawText = @\"pick up groceries\";\n    self.taskId = 10;\n    self.completionDate = [TTMDateUtility convertStringToDate:@\"2020-01-31\"];\n    self.highDate = [TTMDateUtility convertStringToDate:@\"9999-12-31\"];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_CompletionDate_WhenCompleted_ShouldBeCompletionDate {\n    NSString *rawText = @\"x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.completionDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenNotCompleted_ShouldBeHighDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedFormatHasCapitalX_ShouldBeHighDate {\n    NSString *rawText = @\"X 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedFormatHasNoDate_ShouldBeHighDate {\n    NSString *rawText = @\"x pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedDateHasNoLeadingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"x2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedDateHasNoTrailingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"x 2020-01-31pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedDateHasTwoLeadingSpaces_ShouldBeHighDate {\n    NSString *rawText = @\"x  2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedDateMonthInvalid_ShouldBeHighDate {\n    NSString *rawText = @\"x 2020-13-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedDateDayInvalid_ShouldBeHighDate {\n    NSString *rawText = @\"x 2020-12-32 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n- (void)test_CompletionDate_WhenCompletedFormatHasLeadingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"   x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.completionDate);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_Contexts_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_Contexts_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_Contexts_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_contexts_WhenTaskHasOneProject_ShouldBeOneProject {\n    NSString *rawText = @\"pick up groceries @Chores\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"@Chores\", task.contexts);\n}\n\n- (void)test_contexts_WhenTaskHasMultipleContexts_ShouldBeAllcontextsAlphabetized {\n    NSString *rawText = @\"pick up groceries @Shopping @Chores @Errands\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"@Chores, @Errands, @Shopping\", task.contexts);\n}\n\n- (void)test_contexts_WhenTaskHasMultipleContextsWithOddPunctuation_ShouldBeAllcontextsAlphabetized {\n    NSString *rawText = @\"pick up groceries @Shopping; @Chores@Personal @-Errands-\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"@-Errands-, @Chores@Personal, @Shopping;\", task.contexts);\n}\n\n- (void)test_Projects_WhenTaskHasNoContexts_ShouldBeEmptyString {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"\", task.contexts);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_CreationDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_CreationDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSDate *creationDate;\n@property NSDate *highDate;\n\n@end\n\n@implementation TTMTask_CreationDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.creationDate = [TTMDateUtility convertStringToDate:@\"2020-01-01\"];\n    self.highDate = [TTMDateUtility convertStringToDate:@\"9999-12-31\"];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_CreationDate_WhenIncompleteWithCreationDateAndNoPriority_ShouldBeCreationDate {\n    NSString *rawText = @\"2020-01-01 test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.creationDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenIncompleteWithCreationDateAndPriority_ShouldBeCreationDate {\n    NSString *rawText = @\"(A) 2020-01-01 test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.creationDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenIncompleteWithNoCreationDate_ShouldBeHighDate {\n    NSString *rawText = @\"(A) test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenCompleteWithCreationDate_ShouldBeCreationDate {\n    NSString *rawText = @\"x 2013-12-31 2020-01-01 test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.creationDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenCompleteWithCreationDateWithNoLeadingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"x 2020-12-312020-01-01 test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenCompleteWithCreationDateWithNoTrailingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"x 2020-01-01 2020-01-01test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenIncompleteWithCreationDateWithNoLeadingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"(A)2020-01-01 test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenIncompleteWithCreationDateWithNoTrailingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"(A) 2020-01-01test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_CreationDate_WhenCompleteWithNoCreationDate_ShouldBeHighDate {\n    NSString *rawText = @\"x 2020-12-31 test task due:2020-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_DueDate_WhenCreationDateMonthInvalid_ShouldBeHighDate {\n    NSString *rawText = @\"(A) 9999-13-31 test task +Project1\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n- (void)test_DueDate_WhenCreationDateDayInvalid_ShouldBeHighDate {\n    NSString *rawText = @\"(A) 9999-12-32 test task due:9999-12-32 +Project1\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.highDate, task.creationDate);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_DecreasePriority_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_DecreasePriority_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_DecreasePriority_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_DecreasePriority_WhenPriorityIsC_ShouldSetPriorityToD {\n    NSString *rawText = @\"(C) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decreasePriority];\n    NSString *expectedRawText = @\"(D) pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecreasePriority_WhenPriorityIsZ_ShouldDoNothing {\n    NSString *rawText = @\"(Z) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decreasePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n- (void)test_DecreasePriority_WhenNoPriority_ShouldSetPriorityToA {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decreasePriority];\n    NSString *expectedRawText = @\"(A) pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncreasePriority_WhenTaskIsComplete_ShouldDoNothing {\n    NSString *rawText = @\"x 2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decreasePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n- (void)test_IncreasePriority_WhenTaskIsBlank_ShouldDoNothing {\n    NSString *rawText = @\"\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decreasePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_DecrementDueDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_DecrementDueDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_DecrementDueDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_DecrementDueDate_ByOneDayWhenTaskHasDueDateAtEnd_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-30\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementDueDate_ByOneDayWhenTaskHasDueDateInMiddle_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-30 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementDueDate_ByOneDayWhenTaskHasDueDateAtBeginning_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:1];\n    NSString *expectedRawText = @\"due:2020-01-30 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementDueDate_ByOneDayWhenTaskHasNoDueDate_ShouldAppendDueDateOfTomorrow {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:1];\n    NSDate *yesterday = [TTMDateUtility addDays:-1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" due:\",\n                                 [TTMDateUtility convertDateToString:yesterday]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementDueDate_ByNegativeOneDayWhenTaskHasDueDateAtEnd_ShouldDIncrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:-1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-02-01\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementDueDate_ByNegativeOneDayWhenTaskHasDueDateInMiddle_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:-1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-02-01 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n- (void)test_DecrementDueDate_ByNegativeOneDayWhenTaskHasDueDateAtBeginning_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:-1];\n    NSString *expectedRawText = @\"due:2020-02-01 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementDueDate_ByNegativeOneDayWhenTaskHasNoDueDate_ShouldAppendDueDateOfTomorrow {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementDueDate:-1];\n    NSDate *tomorrow = [TTMDateUtility addDays:1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" due:\",\n                                 [TTMDateUtility convertDateToString:tomorrow]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_DecrementThresholdDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_DecrementThresholdDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_DecrementThresholdDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_DecrementThresholdDate_WhenTaskHasNoThresholdDate_ShouldIncrementThresholdDateByOneDay {\n    NSString *rawText = @\"pick up groceries t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementThresholdDate:1];\n    NSString *expectedRawText = @\"pick up groceries t:2020-01-30\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_DecrementThresholdDate_WhenTaskHasNoThresholdDate_ShouldAppendThresholdDateOfYesterday {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task decrementThresholdDate:1];\n    NSDate *yesterday = [TTMDateUtility addDays:-1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" t:\",\n                                 [TTMDateUtility convertDateToString:yesterday]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_DueDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_DueDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSDate *dueDate;\n@property NSDate *highDate;\n\n@end\n\n@implementation TTMTask_DueDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.dueDate = [TTMDateUtility convertStringToDate:@\"2020-01-31\"];\n    self.highDate = [TTMDateUtility convertStringToDate:@\"9999-12-31\"];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_DueDate_WhenAtEndOfTask_ShouldBeDueDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.dueDate, self.dueDate);\n}\n\n- (void)test_DueDate_WhenInMiddleOfTask_ShouldBeDueDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.dueDate, self.dueDate);\n}\n\n- (void)test_DueDate_WhenAtStartOfTask_ShouldBeDueDate {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.dueDate, self.dueDate);\n}\n\n- (void)test_DueDate_WhenIsEntireTask_ShouldBeDueDate {\n    NSString *rawText = @\"due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.dueDate, self.dueDate);\n}\n\n- (void)test_DueDate_WhenMissingLeadingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"pick up groceries-due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.dueDate, self.highDate);\n}\n\n- (void)test_DueDate_WhenMissingTrailingSpace_ShouldBeHighDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-31+Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.dueDate, self.highDate);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_DueState_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_DueState_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_DueState_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_DueState_WhenTaskContainsNoDueDate_ShouldBeNoDueDate {\n    NSString *rawText = @\"(A) test task\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(NoDueDate, task.dueState);\n}\n\n- (void)test_DueState_WhenTaskContainsFutureDueDate_ShouldBeNotDue {\n    NSString *rawText = @\"(A) pick up groceries due:9999-01-01\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(NotDue, task.dueState);\n}\n\n- (void)test_DueState_WhenTaskContainsTodayDueDate_ShouldBeDueToday {\n    NSString *rawTextPart1 = @\"(A) pick up groceries due:\";\n    NSString *rawTextPart2 = [TTMDateUtility todayAsString];\n    NSString *rawText = [rawTextPart1 stringByAppendingString:rawTextPart2];\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(DueToday, task.dueState);\n}\n\n- (void)test_DueState_WhenTaskContainsPastDueDate_ShouldBeOverdue {\n    NSString *rawText = @\"(A) pick up groceries due:2001-01-01\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(Overdue, task.dueState);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_IncreasePriority_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_IncreasePriority_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_IncreasePriority_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_IncreasePriority_WhenPriorityIsC_ShouldSetPriorityToB {\n    NSString *rawText = @\"(C) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task increasePriority];\n    NSString *expectedRawText = @\"(B) pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncreasePriority_WhenPriorityIsA_ShouldDoNothing {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task increasePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n- (void)test_IncreasePriority_WhenNoPriority_ShouldSetPriorityToA {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task increasePriority];\n    NSString *expectedRawText = @\"(A) pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncreasePriority_WhenTaskIsComplete_ShouldDoNothing {\n    NSString *rawText = @\"x 2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task increasePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n- (void)test_IncreasePriority_WhenTaskIsBlank_ShouldDoNothing {\n    NSString *rawText = @\"\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task increasePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_IncrementDueDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_IncrementDueDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_IncrementDueDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_IncrementDueDate_ByOneDayWhenTaskHasDueDateAtEnd_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-02-01\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementDueDate_ByOneDayWhenTaskHasDueDateInMiddle_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-02-01 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementDueDate_ByOneDayWhenTaskHasDueDateAtBeginning_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:1];\n    NSString *expectedRawText = @\"due:2020-02-01 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementDueDate_ByOneDayWhenTaskHasNoDueDate_ShouldAppendDueDateOfTomorrow {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:1];\n    NSDate *tomorrow = [TTMDateUtility addDays:1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" due:\",\n                                 [TTMDateUtility convertDateToString:tomorrow]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementDueDate_ByNegativeOneDayWhenTaskHasDueDateAtEnd_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:-1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-30\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementDueDate_ByNegativeOneDayWhenTaskHasDueDateInMiddle_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:-1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-30 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n- (void)test_IncrementDueDate_ByNegativeOneDayWhenTaskHasDueDateAtBeginning_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:-1];\n    NSString *expectedRawText = @\"due:2020-01-30 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementDueDate_ByNegativeOneDayWhenTaskHasNoDueDate_ShouldAppendDueDateOfYesterday {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementDueDate:-1];\n    NSDate *yesterday = [TTMDateUtility addDays:-1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" due:\",\n                                 [TTMDateUtility convertDateToString:yesterday]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_IncrementThresholdDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_IncrementThresholdDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_IncrementThresholdDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_IncrementThresholdDate_WhenTaskHasNoThresholdDate_ShouldIncrementThresholdDateByOneDay {\n    NSString *rawText = @\"pick up groceries t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementThresholdDate:1];\n    NSString *expectedRawText = @\"pick up groceries t:2020-02-01\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_IncrementThresholdDate_WhenTaskHasNoThresholdDate_ShouldAppendThresholdDateOfTomorrow {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task incrementThresholdDate:1];\n    NSDate *tomorrow = [TTMDateUtility addDays:1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" t:\",\n                                 [TTMDateUtility convertDateToString:tomorrow]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_Init_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_Init_UnitTests : XCTestCase\n\n@property NSString *rawText;\n@property NSUInteger taskId;\n@property NSDate *prependedDate;\n\n@end\n\n@implementation TTMTask_Init_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.rawText = @\"pick up groceries\";\n    self.taskId = 10;\n    self.prependedDate = [TTMDateUtility today];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_init_WhenGivenRawTextAndTaskId_RawTextShouldEqualRawText {\n    TTMTask *task = [[TTMTask alloc] initWithRawText:self.rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(self.rawText, task.rawText);\n}\n\n- (void)test_init_WhenGivenBlankRawTextAndTaskId_RawTextShouldBeBlank {\n    TTMTask *task = [[TTMTask alloc] initWithRawText:@\"\" withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"\", task.rawText);\n}\n\n- (void)test_init_WhenGivenRawTextAndTaskId_IdShouldEqualId {\n    TTMTask *task = [[TTMTask alloc] initWithRawText:self.rawText withTaskId:self.taskId];\n    XCTAssertEqual(self.taskId, task.taskId);\n}\n\n- (void)test_init_WhenGivenRawTextAndTaskIdAndPrependedDate_RawTextShouldEqualRawTextWithPrependedDate {\n    TTMTask *task = [[TTMTask alloc] initWithRawText:self.rawText\n                                          withTaskId:self.taskId\n                                   withPrependedDate:self.prependedDate];\n    NSString *rawText = [NSString stringWithFormat:@\"%@%c%@\",\n                         [TTMDateUtility convertDateToString:self.prependedDate],\n                         ' ',\n                         self.rawText];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n- (void)test_init_WhenGivenRawTextAndTaskIdAndPrependedDate_IdShouldEqualId {\n    TTMTask *task = [[TTMTask alloc] initWithRawText:self.rawText\n                                          withTaskId:self.taskId\n                                   withPrependedDate:self.prependedDate];\n    XCTAssertEqual(self.taskId, task.taskId);\n}\n\n- (void)test_init_WhenGivenRawTextAndTaskIdAndPrependedDate_CreationDateShouldEqualPrependedDate {\n    TTMTask *task = [[TTMTask alloc] initWithRawText:self.rawText\n                                          withTaskId:self.taskId\n                                   withPrependedDate:self.prependedDate];\n    XCTAssertEqualObjects(self.prependedDate, task.creationDate);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_IsCompleted_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_IsCompleted_UnitTests : XCTestCase\n\n@property NSString *rawText;\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_IsCompleted_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.rawText = @\"pick up groceries\";\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_IsCompleted_WhenCompleted_ShouldBeTrue {\n    NSString *rawText = @\"x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertTrue(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenNotCompleted_ShouldBeFalse {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedFormatHasCapitalX_ShouldBeFalse {\n    NSString *rawText = @\"X 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedFormatHasNoDate_ShouldBeFalse {\n    NSString *rawText = @\"x pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedDateHasNoLeadingSpace_ShouldBeFalse {\n    NSString *rawText = @\"x2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedDateHasNoTrailingSpace_ShouldBeFalse {\n    NSString *rawText = @\"x 2020-01-31pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedDateHasTwoLeadingSpaces_ShouldBeFalse {\n    NSString *rawText = @\"x  2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedFormatHasInvalidDate_ShouldBeFalse {\n    NSString *rawText = @\"x 2020-13-32 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_IsCompleted_WhenCompletedFormatHasLeadingSpace_ShouldBeFalse {\n    NSString *rawText = @\"   x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isCompleted);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_IsHidden_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2016 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_IsHidden_UnitTests : XCTestCase\n\n@property NSString *rawText;\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_IsHidden_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    [super tearDown];\n}\n\n- (void)test_IsHidden_WhenHidden_ShouldBeTrue_Case1 {\n    NSString *rawText = @\"h:1 x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertTrue(task.isHidden);\n}\n\n- (void)test_IsHidden_WhenHidden_ShouldBeTrue_Case2 {\n    NSString *rawText = @\"x 2020-01-31 h:1 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertTrue(task.isHidden);\n}\n\n- (void)test_IsHidden_WhenHidden_ShouldBeTrue_Case3 {\n    NSString *rawText = @\"h:1 x 2020-01-31 pick up groceries due:2020-01-31 h:1\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertTrue(task.isHidden);\n}\n\n- (void)test_IsHidden_WhenHidden_ShouldBeFalse_Case1 {\n    NSString *rawText = @\"x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isHidden);\n}\n\n- (void)test_IsHidden_WhenHidden_ShouldBeFalse_Case2 {\n    NSString *rawText = @\"h:1x 2020-01-31 pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertFalse(task.isHidden);\n}\n\n@end\n\n\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_MarkComplete_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_MarkComplete_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_MarkComplete_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_MarkComplete_WhenTaskIsNotComplete_ShouldMarkComplete {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task markComplete];\n    XCTAssertTrue(task.isCompleted);\n}\n\n- (void)test_MarkComplete_WhenTaskIsNotComplete_ShouldSetCompletionDateToToday {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task markComplete];\n    XCTAssertEqualObjects([TTMDateUtility today], task.completionDate);\n}\n\n- (void)test_MarkComplete_WhenTaskIsComplete_ShouldDoNothing {\n    NSString *rawText = @\"x 2020-12-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task markComplete];\n    XCTAssertTrue(task.isCompleted);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_MarkIncomplete_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_MarkIncomplete_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_MarkIncomplete_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_MarkComplete_WhenTaskIsIncomplete_ShouldDoNothing {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task markIncomplete];\n    XCTAssertFalse(task.isCompleted);\n}\n\n- (void)test_MarkComplete_WhenTaskIsComplete_ShouldMarkIncomplete {\n    NSString *rawText = @\"x 2020-12-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task markIncomplete];\n    XCTAssertFalse(task.isCompleted);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_Postpone_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_Postpone_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_Postpone_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_Postpone_ByOneDayWhenTaskHasDueDateAtEnd_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-02-01\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_Postpone_ByOneDayWhenTaskHasDueDateInMiddle_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-02-01 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n- (void)test_Postpone_ByOneDayWhenTaskHasDueDateAtBeginning_ShouldIncrementDueDateByOneDay {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:1];\n    NSString *expectedRawText = @\"due:2020-02-01 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_Postpone_ByOneDayWhenTaskHasNoDueDate_ShouldAppendDueDateOfTomorrow {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:1];\n    NSDate *tomorrow = [TTMDateUtility addDays:1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" due:\",\n                                 [TTMDateUtility convertDateToString:tomorrow]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_Postpone_ByNegativeOneDayWhenTaskHasDueDateAtEnd_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:-1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-30\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_Postpone_ByNegativeOneDayWhenTaskHasDueDateInMiddle_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:-1];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-30 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n- (void)test_Postpone_ByNegativeOneDayWhenTaskHasDueDateAtBeginning_ShouldDecrementDueDateByOneDay {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:-1];\n    NSString *expectedRawText = @\"due:2020-01-30 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_Postpone_ByNegativeOneDayWhenTaskHasNoDueDate_ShouldAppendDueDateOfYesterday {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task postponeTask:-1];\n    NSDate *yesterday = [TTMDateUtility addDays:-1 toDate:[TTMDateUtility today]];\n    NSString *expectedRawText = [NSString stringWithFormat:@\"%@%@%@\",\n                                 rawText,\n                                 @\" due:\",\n                                 [TTMDateUtility convertDateToString:yesterday]];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_PrependText_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_PrependText_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSString *textToPrepend;\n\n@end\n\n@implementation TTMTask_PrependText_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.textToPrepend = @\"[text to prepend]\";\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_PrependText_WhenCompleteWithCreationDate_ShouldPrependAfterCreationDate {\n    NSString *rawText = @\"x 2020-01-31 2020-01-01 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task prependText:self.textToPrepend];\n    NSString *expectedRawText = @\"x 2020-01-31 2020-01-01 [text to prepend] pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_PrependText_WhenCompleteWithNoCreationDate_ShouldPrependAfterCompletionDate {\n    NSString *rawText = @\"x 2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task prependText:self.textToPrepend];\n    NSString *expectedRawText = @\"x 2020-01-31 [text to prepend] pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_PrependText_WhenIncompleteWithNoCreationDate_ShouldPrependAtBeginning {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task prependText:self.textToPrepend];\n    NSString *expectedRawText = @\"[text to prepend] pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_PrependText_WhenIncompleteWithPriorityAndNoCreationDate_ShouldPrependAfterPriority {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task prependText:self.textToPrepend];\n    NSString *expectedRawText = @\"(A) [text to prepend] pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_PrependText_WhenIncompleteWithPriorityAndCreationDate_ShouldPrependAfterCreationDate {\n    NSString *rawText = @\"(A) 2020-01-01 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task prependText:self.textToPrepend];\n    NSString *expectedRawText = @\"(A) 2020-01-01 [text to prepend] pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_PrependText_WhenTaskIsBlank_ShouldPrependAtBeginning {\n    NSString *rawText = @\"\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task prependText:self.textToPrepend];\n    XCTAssertEqualObjects(self.textToPrepend, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_Priority_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_Priority_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_Priority_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_Priority_WhenPriorityIsUppercaseA_ShouldBeA {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('A', task.priority);\n}\n\n- (void)test_Priority_WhenPriorityIsLowercaseA_ShouldBeTilde {\n    NSString *rawText = @\"(a) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('~', task.priority);\n}\n\n- (void)test_Priority_WhenPriorityIsNotAnUppercaseLetter_ShouldBeTilde {\n    NSString *rawText = @\"(1) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('~', task.priority);\n}\n\n- (void)test_Priority_WhenPriorityIsNotAtBeginningOfRawText_ShouldBeTilde {\n    NSString *rawText = @\" (A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('~', task.priority);\n}\n\n- (void)test_Priority_WhenPriorityHasNoSpaceAfter_ShouldBeTilde {\n    NSString *rawText = @\"(A)pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('~', task.priority);\n}\n\n- (void)test_Priority_WhenNoPriority_ShouldBeTilde {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('~', task.priority);\n}\n\n- (void)test_Priority_WhenRawTextIsBlank_ShouldBeTilde {\n    NSString *rawText = @\"\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual('~', task.priority);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_Projects_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_Projects_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_Projects_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_Projects_WhenTaskHasOneProject_ShouldBeOneProject {\n    NSString *rawText = @\"pick up groceries +Chores\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"+Chores\", task.projects);\n}\n\n- (void)test_Projects_WhenTaskHasMultipleProjects_ShouldBeAllProjectsAlphabetized {\n    NSString *rawText = @\"pick up groceries +Shopping +Chores +Errands\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"+Chores, +Errands, +Shopping\", task.projects);\n}\n\n- (void)test_Projects_WhenTaskHasMultipleProjectsWithOddPunctuation_ShouldBeAllProjectsAlphabetized {\n    NSString *rawText = @\"pick up groceries +Shopping; +Chores+Personal +-Errands-\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"+-Errands-, +Chores+Personal, +Shopping;\", task.projects);\n}\n\n- (void)test_Projects_WhenTaskHasNoProjects_ShouldBeEmptyString {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(@\"\", task.projects);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_RemoveDueDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_RemoveDueDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_RemoveDueDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_RemoveDueDate_WhenTaskHasDueDateAtEnd_ShouldRemoveDueDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeDueDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveDueDate_WhenTaskHasDueDateAtBeginning_ShouldRemoveDueDate {\n    NSString *rawText = @\"due:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeDueDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveDueDate_WhenTaskHasDueDateInMiddle_ShouldRemoveDueDate {\n    NSString *rawText = @\"pick up due:2020-01-31 groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeDueDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveDueDate__WhenTaskIsOnlyTheDueDate_ShouldRemoveDueDate {\n    NSString *rawText = @\"due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeDueDate];\n    NSString *expectedRawText = @\"\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveDueDate_WhenTaskHasMultipleDueDates_ShouldRemoveAllDueDates {\n    NSString *rawText = @\"due:2020-01-31 pick up due:2020-01-31 groceries due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeDueDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveDueDate_WhenTaskIsOnlyDueDate_ShouldRemoveDueDate {\n    NSString *rawText = @\"due:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeDueDate];\n    NSString *expectedRawText = @\"\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_RemovePriority_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_RemovePriority_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_RemovePriority_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_RemovePriority_WhenTaskHasPriority_ShouldRemovePriority {\n    NSString *rawText = @\"(C) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removePriority];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)testRemovePriority_WhenTaskHasNoPriority_ShouldDoNothing {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removePriority];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_RemoveThresholdDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_RemoveThresholdDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_RemoveThresholdDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_RemoveThresholdDate_WhenTaskHasThresholdDateAtEnd_ShouldRemoveThresholdDate {\n    NSString *rawText = @\"pick up groceries t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeThresholdDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveThresholdDate_WhenTaskHasThresholdDateAtBeginning_ShouldRemoveThresholdDate {\n    NSString *rawText = @\"t:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeThresholdDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveThresholdDate_WhenTaskHasThresholdDateInMiddle_ShouldRemoveThresholdDate {\n    NSString *rawText = @\"pick up t:2020-01-31 groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeThresholdDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveThresholdDate__WhenTaskIsOnlyTheThresholdDate_ShouldRemoveThresholdDate {\n    NSString *rawText = @\"t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeThresholdDate];\n    NSString *expectedRawText = @\"\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveThresholdDate_WhenTaskHasMultipleThresholdDates_ShouldRemoveAllThresholdDates {\n    NSString *rawText = @\"t:2020-01-31 pick up t:2020-01-31 groceries t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeThresholdDate];\n    NSString *expectedRawText = @\"pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_RemoveThresholdDate_WhenTaskIsOnlyThresholdDate_ShouldRemoveThresholdDate {\n    NSString *rawText = @\"t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task removeThresholdDate];\n    NSString *expectedRawText = @\"\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_ReplaceText_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_ReplaceText_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_ReplaceText_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_ReplaceText_WhenSearchTextIsFound_ShouldReplaceSearchText {\n    NSString *rawText = @\"pick up groceries @Errands\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    NSString *expectedRawText = @\"pick up car @Errands\";\n    [task replaceText:@\"groceries\" withText:@\"car\"];\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_ReplaceText_WhenSearchTextIsNotFound_ShouldDoNothing {\n    NSString *rawText = @\"pick up groceries @Errands\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task replaceText:@\"bananas\" withText:@\"car\"];\n    XCTAssertEqualObjects(rawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_SetDueDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_SetDueDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSDate *dueDate;\n\n@end\n\n@implementation TTMTask_SetDueDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.dueDate = [TTMDateUtility convertStringToDate:@\"2020-01-31\"];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)testSetDueDate {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setDueDate:self.dueDate];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetDueDate_WhenTaskHasNoDueDate_ShouldAppendDueDate {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setDueDate:self.dueDate];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetDueDate_WhenTaskHasDueDateAtEnd_ShouldReplaceDueDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-01\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setDueDate:self.dueDate];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetDueDate_WhenTaskHasDueDateInMiddle_ShouldReplaceDueDate {\n    NSString *rawText = @\"pick up groceries due:2020-01-01 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setDueDate:self.dueDate];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-31 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetDueDate_WhenTaskHasDueDateAtBeginning_ShouldReplaceDueDate {\n    NSString *rawText = @\"due:2020-01-01 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setDueDate:self.dueDate];\n    NSString *expectedRawText = @\"due:2020-01-31 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetDueDate_WhenTaskHasMultipleDueDates_ShouldReplaceAllDueDates {\n    NSString *rawText = @\"pick up groceries due:2015-12-15 due:2015-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setDueDate:self.dueDate];\n    NSString *expectedRawText = @\"pick up groceries due:2020-01-31 due:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_SetThresholdDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_SetThresholdDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSDate *thresholdDate;\n\n@end\n\n@implementation TTMTask_SetThresholdDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.thresholdDate = [TTMDateUtility convertStringToDate:@\"2020-01-31\"];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_SetThresholdDate_WhenTaskHasNoThresholdDate_ShouldAppendThresholdDate {\n    NSString *rawText = @\"pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setThresholdDate:self.thresholdDate];\n    NSString *expectedRawText = @\"pick up groceries t:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetThresholdDate_WhenTaskHasThresholdDateAtEnd_ShouldReplaceThresholdDate {\n    NSString *rawText = @\"pick up groceries t:2020-01-01\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setThresholdDate:self.thresholdDate];\n    NSString *expectedRawText = @\"pick up groceries t:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetThresholdDate_WhenTaskHasThresholdDateInMiddle_ShouldReplaceThresholdDate {\n    NSString *rawText = @\"pick up groceries t:2020-01-01 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setThresholdDate:self.thresholdDate];\n    NSString *expectedRawText = @\"pick up groceries t:2020-01-31 +Personal\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetThresholdDate_WhenTaskHasThresholdDateAtBeginning_ShouldReplaceThresholdDate {\n    NSString *rawText = @\"t:2020-01-01 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setThresholdDate:self.thresholdDate];\n    NSString *expectedRawText = @\"t:2020-01-31 pick up groceries\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n- (void)test_SetThresholdDate_WhenTaskHasMultipleThresholdDates_ShouldReplaceAllThresholdDates {\n    NSString *rawText = @\"pick up groceries t:2015-12-15 t:2015-12-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task setThresholdDate:self.thresholdDate];\n    NSString *expectedRawText = @\"pick up groceries t:2020-01-31 t:2020-01-31\";\n    XCTAssertEqualObjects(expectedRawText, task.rawText);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_ThresholdDate_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_ThresholdDate_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n@property NSDate *thresholdDate;\n@property NSDate *lowDate;\n\n@end\n\n@implementation TTMTask_ThresholdDate_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n    self.thresholdDate = [TTMDateUtility convertStringToDate:@\"2020-01-31\"];\n    self.lowDate = [TTMDateUtility convertStringToDate:@\"1900-01-01\"];\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_ThresholdDate_WhenAtEndOfTask_ShouldBeThresholdDate {\n    NSString *rawText = @\"pick up groceries t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.thresholdDate, self.thresholdDate);\n}\n\n- (void)test_ThresholdDate_WhenInMiddleOfTask_ShouldBeThresholdDate {\n    NSString *rawText = @\"pick up groceries t:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.thresholdDate, self.thresholdDate);\n}\n\n- (void)test_ThresholdDate_WhenAtStartOfTask_ShouldBeThresholdDate {\n    NSString *rawText = @\"t:2020-01-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.thresholdDate, self.thresholdDate);\n}\n\n- (void)test_ThresholdDate_WhenIsEntireTask_ShouldBeThresholdDate {\n    NSString *rawText = @\"t:2020-01-31\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.thresholdDate, self.thresholdDate);\n}\n\n- (void)test_ThresholdDate_WhenMissingLeadingSpace_ShouldBeLowDate {\n    NSString *rawText = @\"pick up groceries-t:2020-01-31 +Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.thresholdDate, self.lowDate);\n}\n\n- (void)test_ThresholdDate_WhenMissingTrailingSpace_ShouldBeLowDate {\n    NSString *rawText = @\"pick up groceries t:2020-01-31+Personal\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqualObjects(task.thresholdDate, self.lowDate);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_ThresholdState_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMDateUtility.h\"\n\n@interface TTMTask_ThresholdState_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_ThresholdState_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)testThresholdStateBefore {\n    NSString *rawText = @\"(A) pick up groceries t:2020-01-31 due:2020-01-31\";\n    NSUInteger taskId = 0;\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:taskId];\n    XCTAssertEqual(ThresholdAfterToday, task.thresholdState);\n}\n\n- (void)testThresholdStateOn {\n    NSString *rawTextPart1 = @\"(A) pick up groceries t:\";\n    NSString *rawTextPart2 = [TTMDateUtility todayAsString];\n    NSString *rawText = [rawTextPart1 stringByAppendingString:rawTextPart2];\n    NSUInteger taskId = 0;\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:taskId];\n    XCTAssertEqual(ThresholdIsToday, task.thresholdState);\n}\n\n- (void)testThresholdStateAfter {\n    NSString *rawText = @\"(A) pick up groceries t:2001-01-01 due:2020-01-31\";\n    NSUInteger taskId = 0;\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:taskId];\n    XCTAssertEqual(ThresholdBeforeToday, task.thresholdState);\n}\n\n- (void)test_ThresholdState_WhenTaskContainsNoThresholdDate_ShouldBeNoThresholdDate {\n    NSString *rawText = @\"(A) test task\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(NoThresholdDate, task.thresholdState);\n}\n\n- (void)test_ThresholdState_WhenTaskContainsFutureThresholdDate_ShouldBeThresholdAfterToday {\n    NSString *rawText = @\"(A) pick up groceries t:9999-01-01\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(ThresholdAfterToday, task.thresholdState);\n}\n\n- (void)test_ThresholdState_WhenTaskContainsTodayThresholdDate_ShouldBeThresholdIsToday {\n    NSString *rawTextPart1 = @\"(A) pick up groceries t:\";\n    NSString *rawTextPart2 = [TTMDateUtility todayAsString];\n    NSString *rawText = [rawTextPart1 stringByAppendingString:rawTextPart2];\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(ThresholdIsToday, task.thresholdState);\n}\n\n- (void)test_ThresholdState_WhenTaskContainsPastThresholdDate_ShouldBeThresholdBeforeToday {\n    NSString *rawText = @\"(A) pick up groceries t:2001-01-01\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    XCTAssertEqual(ThresholdBeforeToday, task.thresholdState);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTask_ToggleCompletion_UnitTests.m",
    "content": "/**\n * @author Michael Descy\n * @copyright 2014-2015 Michael Descy\n * @discussion Dual-licensed under the GNU General Public License and the MIT License\n *\n *\n *\n * @license GNU General Public License http://www.gnu.org/licenses/gpl.html\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n *\n *\n *\n * @license The MIT License (MIT)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n\n@interface TTMTask_ToggleCompletionStatus_UnitTests : XCTestCase\n\n@property NSUInteger taskId;\n\n@end\n\n@implementation TTMTask_ToggleCompletionStatus_UnitTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    self.taskId = 10;\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)test_ToggleCompletionStatus_WhenTaskIsNotComplete_ShouldMarkComplete {\n    NSString *rawText = @\"(A) pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task toggleCompletionStatus];\n    XCTAssertTrue(task.isCompleted);\n}\n\n- (void)test_ToggleCompletionStatus_WhenTaskIsComplete_ShouldMarkIncomplete {\n    NSString *rawText = @\"x 2020-12-31 pick up groceries\";\n    TTMTask *task = [[TTMTask alloc] initWithRawText:rawText withTaskId:self.taskId];\n    [task toggleCompletionStatus];\n    XCTAssertFalse(task.isCompleted);\n}\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TTMTasklistMetadata_UnitTests.m",
    "content": "//\n//  TTMMetadataTests.m\n//  TodoTxtMac\n//\n//  Created by Michael Descy on 8/9/14.\n//  Copyright (c) 2014 Michael Descy. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n#import \"TTMTask.h\"\n#import \"TTMTasklistMetadata.h\"\n\n@interface TTMTasklistMetadataTests : XCTestCase\n\n@property NSMutableArray *taskList;\n@property TTMTasklistMetadata *tasklistMetadata;\n\n@end\n\n@implementation TTMTasklistMetadataTests\n\n- (void)setUp\n{\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n    \n    NSArray *rawTaskList = @[\n                             @\"(A) Task 1 @Context1 +Project1\",\n                             @\"x 2014-10-01 Task 2 +Project1 due:2014-01-31\",\n                             @\"(C) Task 3 +Project1 @Context1 due:9999-01-01\",\n                             @\"(C) Task 4 +Project2 due:9999-12-31\",\n                             @\"(A) Task 5 +Project2 @Context2 due:2014-01-31\"\n                            ];\n    self.taskList = [NSMutableArray array];\n    NSInteger i = 0;\n    for (NSString *rawTaskText in rawTaskList) {\n        TTMTask *task = [[TTMTask alloc] initWithRawText:rawTaskText withTaskId:i];\n        [self.taskList addObject:task];\n        i++;\n    }\n    \n    self.tasklistMetadata = [[TTMTasklistMetadata alloc] init];\n    [self.tasklistMetadata updateMetadataFromTaskArray:self.taskList];\n}\n\n- (void)tearDown\n{\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)testAllTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.allTaskCount, 5);\n}\n\n- (void)testIncompleteTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.incompleteTaskCount, 4);\n}\n\n- (void)testCompletedTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.completedTaskCount, 1);\n}\n\n- (void)testDueTodayTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.dueTodayTaskCount, 0);\n}\n\n- (void)testOverdueTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.overdueTaskCount, 2);\n}\n\n- (void)testNotDueTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.notDueTaskCount, 2);\n}\n\n- (void)testNoDueDateTaskCount\n{\n    XCTAssertEqual(self.tasklistMetadata.noDueDateTaskCount, 1);\n}\n\n- (void)testProjectsArray\n{\n    NSArray *projects = @[\n                          @\"+Project1\",\n                          @\"+Project2\"\n                         ];\n    XCTAssertEqualObjects(self.tasklistMetadata.projectsArray, projects);\n}\n\n- (void)testContextsArray\n{\n    NSArray *contexts = @[\n                          @\"@Context1\",\n                          @\"@Context2\"\n                         ];\n    XCTAssertEqualObjects(self.tasklistMetadata.contextsArray, contexts);\n}\n\n- (void)testPrioritiesArray\n{\n    NSArray *priorities = @[\n                            @\"A\",\n                            @\"C\"\n                           ];\n    XCTAssertEqualObjects(self.tasklistMetadata.prioritiesArray, priorities);\n}\n\n- (void)testProjectTaskCounts\n{\n    NSDictionary *projectTaskCounts = @{\n                                        @\"+Project1\" : @3,\n                                        @\"+Project2\" : @2\n                                       };\n    XCTAssertEqualObjects(self.tasklistMetadata.projectTaskCounts, projectTaskCounts);\n}\n\n- (void)testContextTaskCounts\n{\n    NSDictionary *contextTaskCounts = @{\n                                        @\"@Context1\" : @2,\n                                        @\"@Context2\" : @1\n                                        };\n    XCTAssertEqualObjects(self.tasklistMetadata.contextTaskCounts, contextTaskCounts);\n}\n\n- (void)testPriorityTaskCounts\n{\n    NSDictionary *priorityTaskCounts = @{\n                                         @\"A\" : @2,\n                                         @\"C\" : @2\n                                        };\n    XCTAssertEqualObjects(self.tasklistMetadata.priorityTaskCounts, priorityTaskCounts);\n}\n\n- (void)testProjectsCount\n{\n    XCTAssertEqual(self.tasklistMetadata.projectsCount, 2);\n}\n\n- (void)testContextsCount\n{\n    XCTAssertEqual(self.tasklistMetadata.contextsCount, 2);\n}\n\n- (void)testPrioritiesCount\n{\n    XCTAssertEqual(self.tasklistMetadata.prioritiesCount, 2);\n}\n\n\n@end\n"
  },
  {
    "path": "TodoTxtMacTests/TodoTxtMacTests-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "TodoTxtMacTests/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "dsa_pub.pem",
    "content": "-----BEGIN PUBLIC KEY-----\nMIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQDhCUQCiF8i1StxL9w/t3t7H8hYn19U\ncpzRmdTCL3w84xFpYSrmTSUoa/7lOaYt6z0/irUQBEYp6yE3+Qe3hv6xTNe80rgz\nxlv8XAUjMccIQxvlQWBj0M4fh9TI52YBmGCTmeoQhf4YKiEx5+lk8xiy0SjFW4Tx\nDwCgg7MkwAV7vPqFq/3DSsPSo950Xx7Phif0uW16Y6vtADFjf7quUJftbTPwNR1P\ngoIKEFvcR2MAj+Xw+s8nLiTe8EJzb1HGQZ7ZEd6Z/HwF5U3m2tSMPcodZpgKO1LX\nHkMnnmuCx0JHhrHQWOEMjCX8iba/s+pKJ4Y3dEBzG9CeqOEcpumdKi9HAhUAwRIE\n6jsm2ec8ZfnFDPLJlIPEyLECggEABS1CCoP8PP3I75onrpa5tjfZ98dElHfJmVzg\n8FD8j2XqQ51CgAMOLWoEpnyPe9DdpUNK5v/OseSwHtFWL1K6hYLe1HOPAfDrfC2q\nw/aAaWQJkZcKY9nvMBzYshPi4JZ9kHvGWYkWAvL0JfRPKLmqHdBkU4oeskFRPd9+\na3O/Py77P4iFqiHm8Ilxcev3QXkw+VzQjLGy+smkQUjIBQgBI0JWbrZaT7zt9xVU\n6FNcUdiLs5GotWy0eYxvO2rrq+dvh6mgwn3Zrdg5w6MuqlHpXQAOXatWfnyTEqmI\nx4LWC3as77F+YXI4c9QQ5+kB+1/qmbkqKOiTxLGQPPAFdd6gXQOCAQUAAoIBAG9v\ngZCk1XpV3jSOjFwVnh5fVeo22GAR7oU+X4gzpO2xfb48i/W/wwRoW81NH9ELmLCK\nTCVaGpaWhtuVJQ3h41aFPlCtrK7s1b+sk8PWTWag970VMk2Wz0uDNkeQhvNHg1KN\nrCMT2erKgxcBQfKo/RI4SJd+viMNDbJJVf5qKAOOvPCv28HHIBZPVYPsKTZGjVno\nvHmBJ17jUyvRo6MLHjIoY+sGmLNIpqNJSVf7e0TCblpzwOkzdAdPQyAlysZHaBud\npJI80jSxiOVmk04ROZv16AJ/X/hi+cIYZoK4Els1Jp0GyTgeFIADLX5JuOlav8Ya\n/jTI45avbJdJd/MewCw=\n-----END PUBLIC KEY-----\n"
  }
]