<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -43,27 +43,18 @@ typedef enum {
     CTFSiteKindWhitelist = 0
 } CTGSiteKind;
 
-
-static NSUInteger indexOfItemForSite( NSArray* arr, NSString* site )
+static NSDictionary* itemForSite( NSSet* set, NSString* site )
 {
+	NSDictionary *specificWhitelistItem = nil;
+	
     int i = 0;
-    CTFForEachObject( NSDictionary, item, arr ) {
+    CTFForEachObject( NSDictionary, item, set ) {
         if( [ [ item objectForKey: @&quot;site&quot; ] isEqualToString: site ] )
-            return i;
+            specificWhitelistItem = item;
         ++i;
     }
     
-    return NSNotFound;
-}
-
-static NSDictionary* itemForSite( NSArray* arr, NSString* site )
-{
-    NSUInteger index = indexOfItemForSite( arr, site );
-    
-    if( index != NSNotFound )
-        return [ arr objectAtIndex: index ];
-    
-	return nil;
+	return specificWhitelistItem;
 }
 
 static NSDictionary* whitelistItemForSite( NSString* site )
@@ -166,25 +157,31 @@ static NSDictionary* whitelistItemForSite( NSString* site )
 
 - (BOOL) _isWhiteListedForHostString:(NSString *)hostString
 {
-	NSArray *hostWhitelist = [[CTFUserDefaultsController standardUserDefaults] arrayForKey: sHostSiteInfoDefaultsKey];
-    return hostWhitelist &amp;&amp; itemForSite(hostWhitelist, hostString) != nil;
+	NSArray *hostWhitelistArray = [[CTFUserDefaultsController standardUserDefaults] arrayForKey: sHostSiteInfoDefaultsKey];
+	NSSet *hostWhitelistSet = [NSSet setWithArray:hostWhitelistArray];
+    return hostWhitelistArray &amp;&amp; itemForSite(hostWhitelistSet, hostString) != nil;
 }
 
-- (NSMutableArray *) _mutableSiteInfo
+- (NSMutableSet *) _mutableSiteInfo
 {
-    NSMutableArray *hostWhitelist = [[[[CTFUserDefaultsController standardUserDefaults] arrayForKey: sHostSiteInfoDefaultsKey] mutableCopy] autorelease];
-    if (hostWhitelist == nil) {
-        hostWhitelist = [NSMutableArray array];
-    }
+    NSMutableArray *hostWhitelistArray = [[[[CTFUserDefaultsController standardUserDefaults] arrayForKey: sHostSiteInfoDefaultsKey] mutableCopy] autorelease];
+	
+	NSMutableSet *hostWhitelist;
+    if (hostWhitelistArray == nil) {
+        hostWhitelist = [NSMutableSet setWithCapacity:0];
+    } else {
+		hostWhitelist = [NSMutableSet setWithArray:hostWhitelistArray];
+	}
+	
     return hostWhitelist;
 }
 
 - (void) _addHostToWhitelist
 {
-    NSMutableArray *siteInfo = [self _mutableSiteInfo];
+    NSMutableSet *siteInfo = [self _mutableSiteInfo];
     [siteInfo addObject: whitelistItemForSite([self host])];
 	
-	[[CTFUserDefaultsController standardUserDefaults] setValue:siteInfo forKeyPath:@&quot;values.siteInfo&quot;];
+	[[CTFUserDefaultsController standardUserDefaults] setValue:[siteInfo allObjects] forKeyPath:@&quot;values.siteInfo&quot;];
 	
     [[NSNotificationCenter defaultCenter] postNotificationName: sCTFWhitelistAdditionMade object: self];
 }</diff>
      <filename>Plugin/CTFWhitelist.m</filename>
    </modified>
    <modified>
      <diff>@@ -65,6 +65,7 @@ THE SOFTWARE.
 
 - (id) initWithArguments:(NSDictionary *)arguments;
 - (void)_migratePrefsToExternalFile;
+- (void)_uniquePrefsFileWhitelist;
 - (void) _addApplicationWhitelistArrayToPrefsFile;
 
 - (DOMElement *)container;</diff>
      <filename>Plugin/Plugin.h</filename>
    </modified>
    <modified>
      <diff>@@ -155,6 +155,7 @@ BOOL usingMATrackingArea = NO;
         
         [self _migrateWhitelist];
 		[self _migratePrefsToExternalFile];
+		[self _uniquePrefsFileWhitelist];
 		[self _addApplicationWhitelistArrayToPrefsFile];
         
 		
@@ -521,6 +522,15 @@ BOOL usingMATrackingArea = NO;
 	[[NSUserDefaults standardUserDefaults] removeSuiteNamed:@&quot;com.github.rentzsch.clicktoflash&quot;];
 }
 
+- (void) _uniquePrefsFileWhitelist
+{
+	NSArray *siteInfoArray = [[CTFUserDefaultsController standardUserDefaults] arrayForKey:@&quot;siteInfo&quot;];
+	NSSet *siteInfoSet = [NSSet setWithArray:siteInfoArray];
+	
+	[[CTFUserDefaultsController standardUserDefaults] setValue:[siteInfoSet allObjects] forKeyPath:@&quot;values.siteInfo&quot;];
+}
+
+
 - (void) _addApplicationWhitelistArrayToPrefsFile
 {
 	CTFUserDefaultsController *standardUserDefaults = [CTFUserDefaultsController standardUserDefaults];</diff>
      <filename>Plugin/Plugin.m</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>33c8bcf7f987585ea55fd69a14fa46e89cd3493b</id>
    </parent>
  </parents>
  <author>
    <name>Simone Manganelli</name>
    <email>simX@mac.com</email>
  </author>
  <url>http://github.com/rentzsch/clicktoflash/commit/12ecfb2a7c23e5434054f3f9085a3fcda6374842</url>
  <id>12ecfb2a7c23e5434054f3f9085a3fcda6374842</id>
  <committed-date>2009-10-01T16:06:42-07:00</committed-date>
  <authored-date>2009-09-21T02:39:53-07:00</authored-date>
  <message>unique a ballooned whitelist if there are lots of duplicate entries; this seems to be pretty fast, since it basically just loads the array from prefs into a set and then writes the set back out again; on a 1.5 MB prefs file with 77673 items, on a MacBook Core 2 Duo 2 GHz, it takes only a second or two
(cherry picked from commit fa4536e499e2c165dc5bd1790af2880bd70971a3)</message>
  <tree>f679aba488c044a823801716e94000c1c78fcc35</tree>
  <committer>
    <name>Simone Manganelli</name>
    <email>simX@mac.com</email>
  </committer>
</commit>
