<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>IPAddressExtensions Forum Rss Feed</title><link>http://www.codeplex.com/IPAddressExtensions/Thread/List.aspx</link><description>IPAddressExtensions Forum Rss Description</description><item><title>New Post: Current IPAddress CSV file?</title><link>http://ipaddressextensions.codeplex.com/Thread/View.aspx?ThreadId=54342</link><description>&lt;div style="line-height: normal;"&gt;Great job on the IPAddressExtensions!  It's really nice and easy to use.... &lt;br&gt;
&lt;br&gt;
I was just wondering how up to date the CSV file is, that holds the IPAddress information?   Is this CSV file a custom made file, or is it possible to download the most recent IPAddress details from a site that keeps track of this info in the same CSV format that is being used in this project?&lt;br&gt;
&lt;br&gt;
Thanks again,&lt;br&gt;
d.&lt;br&gt;
&lt;/div&gt;</description><author>developerz</author><pubDate>Fri, 24 Apr 2009 08:31:28 GMT</pubDate><guid isPermaLink="false">New Post: Current IPAddress CSV file? 20090424083128A</guid></item><item><title>New Post: I made some modifications</title><link>http://www.codeplex.com/IPAddressExtensions/Thread/View.aspx?ThreadId=45113</link><description>&lt;div style="line-height: normal;"&gt;I made some modifications :&lt;br&gt;
1. Changed the list type to List instead of IList.&lt;br&gt;
2. replaced the lookup query to List.Find() instead of linq query. &lt;br&gt;
3. converted the method &amp;quot;GetIPv4Data&amp;quot; and the class &amp;quot;IPv4Data&amp;quot; to public.&lt;br&gt;
4. some small code modifications (not logic).&lt;br&gt;
&lt;br&gt;
I have a little problem with this code logic: &lt;br&gt;
GetIPv4Data is private and called from every single extension method, but what if i want to display&amp;nbsp;Iso3166TwoLetterCode and Iso3166ThreeLetterCode and the Country name, this code will create the ip lookup 3 times.&lt;br&gt;
In order to avoid it, I see no choice but converting the method &amp;quot;GetIPv4Data&amp;quot; and the class &amp;quot;IPv4Data&amp;quot; to public and return the IPv4Data instance if needed.&lt;br&gt;
&lt;br&gt;
my code:&lt;br&gt;
&lt;br&gt;
&amp;lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset177\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red128\green128\blue128;\red0\green128\blue0;\red43\green145\blue175;\red163\green21\blue21;}??\fs20 \cf1 namespace\cf0  WorldDomination.Net\par ??\{\par ??\par ??    \cf1 using\cf0  System;\par ??    \cf1 using\cf0  System.Collections.Generic;\par ??    \cf1 using\cf0  System.IO;\par ??    \cf1 using\cf0  System.IO.Compression;\par ??    \cf1 using\cf0  System.Net;\par ??    \cf1 using\cf0  System.Reflection;\par ??\par ??\par ??\par ??    \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0     \cf4 ///\cf5  Extension methods for the IPAddress class.\par ??\cf0     \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0     \cf1 public\cf0  \cf1 static\cf0  \cf1 class\cf0  \cf6 IPAddressExtensions\par ??\cf0     \{\par ??\cf1         #region\cf0  Fields\par ??\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf6 List\cf0 &amp;lt;\cf6 IPv4Data\cf0 &amp;gt; _geoIpDataList;\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf1 readonly\cf0  \cf1 object\cf0  _syncObject = \cf1 new\cf0  \cf1 object\cf0 ();\par ??\par ??\cf1         #endregion\par ??\par ??        #region\cf0  Properties\par ??\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf6 List\cf0 &amp;lt;\cf6 IPv4Data\cf0 &amp;gt; GeoIpDataList\par ??        \{\par ??            \cf1 get\par ??\cf0             \{\par ??                \cf1 if\cf0  (_geoIpDataList == \cf1 null\cf0 )\par ??                \{\par ??                    \cf1 lock\cf0  (_syncObject)\par ??                    \{\par ??                        \cf1 if\cf0  (_geoIpDataList == \cf1 null\cf0 )\par ??                        \{\par ??                            _geoIpDataList = ReadInCSVFile();\par ??                        \}\par ??                    \}\par ??                \}\par ??\par ??                \cf1 return\cf0  _geoIpDataList;\par ??            \}\par ??        \}\par ??\par ??        \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  The Regional Internet Registery.\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;remarks&amp;gt;\cf5 What the hell is this? Wiki knows all :- http://en.wikipedia.org/wiki/Regional_Internet_Registry/\cf4 &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\par ??\cf0         \cf4 ///\cf5  Expected values are: Reserved, IANA, IETF, APCNIC, ARIN, LACNIC, RIPENCC and AFRINIC.\cf4 &amp;lt;/remarks&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;returns&amp;gt;\cf5 The RIR code.\cf4 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf1 string\cf0  Registry(\cf1 this\cf0  \cf6 IPAddress\cf0  ipAddress)\par ??        \{\par ??            \cf6 IPv4Data\cf0  ipv4Data = GetIPv4Data(ipAddress);\par ??            \cf1 return\cf0  ipv4Data == \cf1 null\cf0  ? \cf1 null\cf0  : ipv4Data.Registry;\par ??        \}\par ??\par ??        \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  The date this IP or block was assigned.\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;remarks&amp;gt;\cf5 If the date was unknown when assigned, a null value is returned.\cf4 &amp;lt;/remarks&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;returns&amp;gt;\cf5 The date and time in UTC if known, otherwise null.\cf4 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf6 DateTimeOffset\cf0 ? AssignedDateTime(\cf1 this\cf0  \cf6 IPAddress\cf0  ipAddress)\par ??        \{\par ??            \cf6 IPv4Data\cf0  ipv4Data = GetIPv4Data(ipAddress);\par ??            \cf1 if\cf0  (ipv4Data == \cf1 null\cf0 )\par ??                \cf1 return\cf0  \cf1 null\cf0 ;\par ??            \par ??           \par ??            \cf1 return\cf0  \cf1 new\cf0  \cf6 DateTimeOffset\cf0 (1970,\par ??            1,\par ??            1,\par ??            0,\par ??            0,\par ??            0,\par ??            0,\par ??            \cf1 new\cf0  \cf6 TimeSpan\cf0 (0, 0, 0)).AddSeconds(ipv4Data.Assigned);\par ??            \par ??        \}\par ??\par ??        \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  The two letter ISO 3166 code.\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;remarks&amp;gt;\cf5 What the hell is this? Wiki knows all :- http://en.wikipedia.org/wiki/ISO_3166/\cf4 &amp;lt;/remarks&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;returns&amp;gt;\cf5 The two letter code.\cf4 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf1 string\cf0  Iso3166TwoLetterCode(\cf1 this\cf0  \cf6 IPAddress\cf0  ipAddress)\par ??        \{\par ??            \cf6 IPv4Data\cf0  ipv4Data = GetIPv4Data(ipAddress);\par ??            \cf1 return\cf0  ipv4Data == \cf1 null\cf0  ? \cf1 null\cf0  : ipv4Data.Iso3166TwoLetterCode;\par ??        \}\par ??\par ??        \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  The three letter ISO 3166 code.\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;remarks&amp;gt;\cf5 What the hell is this? Wiki knows all :- http://en.wikipedia.org/wiki/ISO_3166/\cf4 &amp;lt;/remarks&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;param name=&amp;quot;ipAddress&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;returns&amp;gt;\cf5 The three letter code.\cf4 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf1 string\cf0  Iso3166ThreeLetterCode(\cf1 this\cf0  \cf6 IPAddress\cf0  ipAddress)\par ??        \{\par ??            \cf6 IPv4Data\cf0  ipv4Data = GetIPv4Data(ipAddress);\par ??            \cf1 return\cf0  ipv4Data == \cf1 null\cf0  ? \cf1 null\cf0  : ipv4Data.Iso3166ThreeLetterCode;\par ??        \}\par ??\par ??        \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  The full country name.\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;returns&amp;gt;\cf5 The full country name.\cf4 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf1 string\cf0  Country(\cf1 this\cf0  \cf6 IPAddress\cf0  ipAddress)\par ??        \{\par ??            \cf6 IPv4Data\cf0  ipv4Data = GetIPv4Data(ipAddress);\par ??            \cf1 return\cf0  ipv4Data == \cf1 null\cf0  ? \cf1 null\cf0  : ipv4Data.Country;\par ??        \}\par ??\par ??\cf1         #endregion\par ??\par ??        #region\cf0  Methods\par ??\par ??\par ??        \cf4 ///\cf5  \cf4 &amp;lt;summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  Gets the I PV4 data.\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;param name=&amp;quot;ipAddress&amp;quot;&amp;gt;\cf5 The ip address.\cf4 &amp;lt;/param&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;exception cref=&amp;quot;ArgumentNullException&amp;quot;&amp;gt;&amp;lt;c&amp;gt;\cf5 ipAddress\cf4 &amp;lt;/c&amp;gt;\cf5  is null.\cf4 &amp;lt;/exception&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;exception cref=&amp;quot;ArgumentException&amp;quot;&amp;gt;\cf5 Only Internet Protocol version 4 (IPv4) addresses are accepted.\cf4 &amp;lt;/exception&amp;gt;\par ??\cf0         \cf4 ///\cf5  \cf4 &amp;lt;exception cref=&amp;quot;InvalidOperationException&amp;quot;&amp;gt;\cf5 Internet Protocol (IPv4) address list was not successfully loaded into memory. Unable to process your request.\cf4 &amp;lt;/exception&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf6 IPv4Data\cf0  GetIPv4Data(\cf6 IPAddress\cf0  ipAddress)\par ??        \{\par ??            \cf1 if\cf0  (ipAddress == \cf1 null\cf0 )\par ??            \{\par ??                \cf1 throw\cf0  \cf1 new\cf0  \cf6 ArgumentNullException\cf0 (\cf7 &amp;quot;ipAddress&amp;quot;\cf0 );\par ??            \}\par ??            \par ??            \cf1 if\cf0  (ipAddress.AddressFamily != System.Net.Sockets.\cf6 AddressFamily\cf0 .InterNetwork)\par ??            \{\par ??                \cf1 throw\cf0  \cf1 new\cf0  \cf6 ArgumentException\cf0 (\cf7 &amp;quot;Only Internet Protocol version 4 (IPv4) addresses are accepted.&amp;quot;\cf0 );\par ??            \}\par ??\par ??            \cf1 if\cf0  (GeoIpDataList == \cf1 null\cf0 )\par ??            \{\par ??                \cf1 throw\cf0  \cf1 new\cf0  \cf6 InvalidOperationException\cf0 (\cf7 &amp;quot;Internet Protocol (IPv4) address list was not successfully loaded into memory. Unable to process your request.&amp;quot;\cf0 );\par ??            \}\par ??\par ??            \cf1 byte\cf0 [] ipAddressBytes = ipAddress.GetAddressBytes();\par ??            \cf1 long\cf0  ipAddressLong = (\cf1 long\cf0 )ipAddressBytes[3] +\par ??                                 (ipAddressBytes[2] * 256L) +\par ??                                 (ipAddressBytes[1] * 256L * 256L) +\par ??                                 (ipAddressBytes[0] * 256L * 256L * 256L);\par ??\par ??            \cf6 IPv4Data\cf0  ipv4Data = GeoIpDataList.Find(d =&amp;gt; d.IpFrom &amp;lt;= ipAddressLong &amp;amp;&amp;amp; d.IpTo &amp;gt;= ipAddressLong);\par ??            \cf5 /*\par ??            // Now retrieve the country specific data.\par ??            IPv4Data ipv4Data = (from d in GeoIpDataList\par ??                                 where d.IpFrom &amp;lt;= ipAddressLong &amp;amp;&amp;amp; d.IpTo &amp;gt;= ipAddressLong\par ??                                 select d).SingleOrDefault();\par ??           */\par ??\cf0             \cf1 return\cf0  ipv4Data;\par ??        \}\par ??\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf6 List\cf0 &amp;lt;\cf6 IPv4Data\cf0 &amp;gt; ReadInCSVFile()\par ??        \{\par ??            \cf1 string\cf0  row;\par ??            \cf6 List\cf0 &amp;lt;\cf6 IPv4Data\cf0 &amp;gt; ipv4DataList = \cf1 null\cf0 ;\par ??           \par ??\par ??\par ??            \cf5 // First, decompress the gzipped data file.\par ??\cf0             \cf6 Assembly\cf0  assembly = \cf6 Assembly\cf0 .GetExecutingAssembly();\par ??\par ??            \cf1 using\cf0  (\cf6 GZipStream\cf0  gzipStream = \cf1 new\cf0  \cf6 GZipStream\cf0 (assembly.GetManifestResourceStream(\cf7 &amp;quot;WorldDomination.Net.IpToCountry.csv.gz&amp;quot;\cf0 ),\par ??                \cf6 CompressionMode\cf0 .Decompress))\par ??            \{\par ??                \cf1 using\cf0  (\cf6 TextReader\cf0  textReader = \cf1 new\cf0  \cf6 StreamReader\cf0 (gzipStream))\par ??                \{\par ??                    \cf1 while\cf0  ((row = textReader.ReadLine()) != \cf1 null\cf0 )\par ??                    \{\par ??                        \cf1 if\cf0  (!\cf1 string\cf0 .IsNullOrEmpty(row) &amp;amp;&amp;amp;\par ??                            !row.StartsWith(\cf7 &amp;quot;#&amp;quot;\cf0 ,\par ??                            \cf6 StringComparison\cf0 .OrdinalIgnoreCase))\par ??                        \{\par ??\par ??                            \cf1 long\cf0  ipFrom;\par ??                            \cf1 long\cf0  ipTo;\par ??                            \cf1 long\cf0  assigned;\par ??\par ??                            \cf5 // We have a row, so lets split it then add it to our collection.\par ??\cf0                             \cf1 string\cf0 [] rowArray = row.Replace(\cf7 &amp;quot;\\&amp;quot;&amp;quot;\cf0 , \cf1 string\cf0 .Empty).Split(\cf7 ','\cf0 );\par ??                            \cf1 if\cf0  (rowArray.Length == 7 &amp;amp;&amp;amp;\par ??                                \cf1 long\cf0 .TryParse(rowArray[0], \cf1 out\cf0  ipFrom) &amp;amp;&amp;amp;\par ??                                \cf1 long\cf0 .TryParse(rowArray[1], \cf1 out\cf0  ipTo) &amp;amp;&amp;amp;\par ??                                \cf1 long\cf0 .TryParse(rowArray[3], \cf1 out\cf0  assigned))\par ??                            \{\par ??                                \cf5 // We have a legit row, so lets add this to our collection.\par ??\cf0                                 \cf1 if\cf0  (ipv4DataList == \cf1 null\cf0 )\par ??                                \{\par ??                                    ipv4DataList = \cf1 new\cf0  \cf6 List\cf0 &amp;lt;\cf6 IPv4Data\cf0 &amp;gt;();\par ??                                \}\par ??\par ??                                ipv4DataList.Add(\cf1 new\cf0  \cf6 IPv4Data\par ??\cf0                                 \{\par ??                                    IpFrom = ipFrom,\par ??                                    IpTo = ipTo,\par ??                                    Registry = rowArray[2],\par ??                                    Assigned = assigned,\par ??                                    Iso3166TwoLetterCode = rowArray[4],\par ??                                    Iso3166ThreeLetterCode = rowArray[5],\par ??                                    Country = rowArray[6]\par ??                                \});\par ??                            \}\par ??                        \}\par ??                    \}\par ??                \}\par ??            \}\par ??\par ??            \cf1 return\cf0  ipv4DataList == \cf1 null\cf0  ||\par ??                ipv4DataList.Count &amp;lt;= 0 ? \cf1 null\cf0  : ipv4DataList;\par ??        \}\par ??\par ??\cf1         #endregion\par ??\cf0     \}\par ??\}}
--&amp;gt;
&lt;div style="background:white none repeat scroll 0% 0%;font-family:courier new;font-size:10pt;color:black"&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;namespace&lt;/span&gt; WorldDomination.Net&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;{&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.IO.Compression;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.Reflection;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Extension methods for the IPAddress class.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddressExtensions&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Fields&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt;&amp;gt; _geoIpDataList;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;readonly&lt;/span&gt; &lt;span style="color:blue"&gt;object&lt;/span&gt; _syncObject = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:blue"&gt;object&lt;/span&gt;();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Properties&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt;&amp;gt; GeoIpDataList&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (_geoIpDataList == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;lock&lt;/span&gt; (_syncObject)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (_geoIpDataList == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _geoIpDataList = ReadInCSVFile();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; _geoIpDataList;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; The Regional Internet Registery.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;What the hell is this? Wiki knows all :- http://en.wikipedia.org/wiki/Regional_Internet_Registry/&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Expected values are: Reserved, IANA, IETF, APCNIC, ARIN, LACNIC, RIPENCC and AFRINIC.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;The RIR code.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; Registry(&lt;span style="color:blue"&gt;this&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; ipv4Data = GetIPv4Data(ipAddress);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; ipv4Data == &lt;span style="color:blue"&gt;null&lt;/span&gt; ? &lt;span style="color:blue"&gt;null&lt;/span&gt; : ipv4Data.Registry;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; The date this IP or block was assigned.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;If the date was unknown when assigned, a null value is returned.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;The date and time in UTC if known, otherwise null.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;DateTimeOffset&lt;/span&gt;? AssignedDateTime(&lt;span style="color:blue"&gt;this&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; ipv4Data = GetIPv4Data(ipAddress);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (ipv4Data == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;DateTimeOffset&lt;/span&gt;(1970,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;TimeSpan&lt;/span&gt;(0, 0, 0)).AddSeconds(ipv4Data.Assigned);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; The two letter ISO 3166 code.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;What the hell is this? Wiki knows all :- http://en.wikipedia.org/wiki/ISO_3166/&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;The two letter code.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; Iso3166TwoLetterCode(&lt;span style="color:blue"&gt;this&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; ipv4Data = GetIPv4Data(ipAddress);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; ipv4Data == &lt;span style="color:blue"&gt;null&lt;/span&gt; ? &lt;span style="color:blue"&gt;null&lt;/span&gt; : ipv4Data.Iso3166TwoLetterCode;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; The three letter ISO 3166 code.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;What the hell is this? Wiki knows all :- http://en.wikipedia.org/wiki/ISO_3166/&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;param name=&amp;quot;ipAddress&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;The three letter code.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; Iso3166ThreeLetterCode(&lt;span style="color:blue"&gt;this&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; ipv4Data = GetIPv4Data(ipAddress);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; ipv4Data == &lt;span style="color:blue"&gt;null&lt;/span&gt; ? &lt;span style="color:blue"&gt;null&lt;/span&gt; : ipv4Data.Iso3166ThreeLetterCode;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; The full country name.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;The full country name.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; Country(&lt;span style="color:blue"&gt;this&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; ipv4Data = GetIPv4Data(ipAddress);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; ipv4Data == &lt;span style="color:blue"&gt;null&lt;/span&gt; ? &lt;span style="color:blue"&gt;null&lt;/span&gt; : ipv4Data.Country;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Methods&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Gets the I PV4 data.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;param name=&amp;quot;ipAddress&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;The ip address.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;exception cref=&amp;quot;ArgumentNullException&amp;quot;&amp;gt;&amp;lt;c&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;ipAddress&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/c&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt; is null.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;exception cref=&amp;quot;ArgumentException&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;Only Internet Protocol version 4 (IPv4) addresses are accepted.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;exception cref=&amp;quot;InvalidOperationException&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:green"&gt;Internet Protocol (IPv4) address list was not successfully loaded into memory. Unable to process your request.&lt;/span&gt;&lt;span style="color:gray"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; GetIPv4Data(&lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (ipAddress == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;throw&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;ipAddress&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (ipAddress.AddressFamily != System.Net.Sockets.&lt;span style="color:rgb(43, 145, 175)"&gt;AddressFamily&lt;/span&gt;.InterNetwork)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;throw&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;Only Internet Protocol version 4 (IPv4) addresses are accepted.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (GeoIpDataList == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;throw&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;Internet Protocol (IPv4) address list was not successfully loaded into memory. Unable to process your request.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;byte&lt;/span&gt;[] ipAddressBytes = ipAddress.GetAddressBytes();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt; ipAddressLong = (&lt;span style="color:blue"&gt;long&lt;/span&gt;)ipAddressBytes[3] +&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  (ipAddressBytes[2] * 256L) +&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  (ipAddressBytes[1] * 256L * 256L) +&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  (ipAddressBytes[0] * 256L * 256L * 256L);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt; ipv4Data = GeoIpDataList.Find(d =&amp;gt; d.IpFrom &amp;lt;= ipAddressLong &amp;amp;&amp;amp; d.IpTo &amp;gt;= ipAddressLong);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;/*&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Now retrieve the country specific data.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IPv4Data ipv4Data = (from d in GeoIpDataList&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  where d.IpFrom &amp;lt;= ipAddressLong &amp;amp;&amp;amp; d.IpTo &amp;gt;= ipAddressLong&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  select d).SingleOrDefault();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; ipv4Data;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt;&amp;gt; ReadInCSVFile()&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;string&lt;/span&gt; row;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt;&amp;gt; ipv4DataList = &lt;span style="color:blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;// First, decompress the gzipped data file.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;Assembly&lt;/span&gt; assembly = &lt;span style="color:rgb(43, 145, 175)"&gt;Assembly&lt;/span&gt;.GetExecutingAssembly();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:rgb(43, 145, 175)"&gt;GZipStream&lt;/span&gt; gzipStream = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;GZipStream&lt;/span&gt;(assembly.GetManifestResourceStream(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;WorldDomination.Net.IpToCountry.csv.gz&amp;quot;&lt;/span&gt;),&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;CompressionMode&lt;/span&gt;.Decompress))&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:rgb(43, 145, 175)"&gt;TextReader&lt;/span&gt; textReader = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;StreamReader&lt;/span&gt;(gzipStream))&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;while&lt;/span&gt; ((row = textReader.ReadLine()) != &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (!&lt;span style="color:blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(row) &amp;amp;&amp;amp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; !row.StartsWith(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase))&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt; ipFrom;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt; ipTo;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt; assigned;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;// We have a row, so lets split it then add it to our collection.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;string&lt;/span&gt;[] rowArray = row.Replace(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty).Split(&lt;span style="color:rgb(163, 21, 21)"&gt;','&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (rowArray.Length == 7 &amp;amp;&amp;amp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt;.TryParse(rowArray[0], &lt;span style="color:blue"&gt;out&lt;/span&gt; ipFrom) &amp;amp;&amp;amp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt;.TryParse(rowArray[1], &lt;span style="color:blue"&gt;out&lt;/span&gt; ipTo) &amp;amp;&amp;amp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;long&lt;/span&gt;.TryParse(rowArray[3], &lt;span style="color:blue"&gt;out&lt;/span&gt; assigned))&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;// We have a legit row, so lets add this to our collection.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (ipv4DataList == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ipv4DataList = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt;&amp;gt;();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ipv4DataList.Add(&lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;IPv4Data&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IpFrom = ipFrom,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IpTo = ipTo,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Registry = rowArray[2],&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Assigned = assigned,&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Iso3166TwoLetterCode = rowArray[4],&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Iso3166ThreeLetterCode = rowArray[5],&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Country = rowArray[6]&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;return&lt;/span&gt; ipv4DataList == &lt;span style="color:blue"&gt;null&lt;/span&gt; ||&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ipv4DataList.Count &amp;lt;= 0 ? &lt;span style="color:blue"&gt;null&lt;/span&gt; : ipv4DataList;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
My performance test:&lt;br&gt;
&lt;br&gt;
&amp;lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset177\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red43\green145\blue175;\red163\green21\blue21;\red0\green128\blue0;}??\fs20 \par ??\par ??\cf1 namespace\cf0  Client\par ??\{\par ??\par ??\par ??    \cf1 using\cf0  System;\par ??    \cf1 using\cf0  System.Diagnostics;\par ??    \cf1 using\cf0  System.Net;\par ??    \cf1 using\cf0  WorldDomination.Net;\par ??\par ??    \cf1 class\cf0  \cf4 Program\par ??\cf0     \{\par ??\par ??\par ??        \cf1 const\cf0  \cf1 int\cf0  Iterations = 1000;\par ??        \cf1 static\cf0  \cf1 void\cf0  Main(\cf1 string\cf0 [] args)\par ??        \{\par ??\par ??             \cf1 string\cf0  ip = \cf5 &amp;quot;65.55.11.218&amp;quot;\cf0 ; \cf6 //US\par ??\cf0     \par ??            MeasureFormatTime(\cf5 &amp;quot;GetCountryInfo&amp;quot;\cf0 , () =&amp;gt; GetCountryInfo(ip));\par ??            \cf4 Console\cf0 .ReadLine();\par ??        \}\par ??\par ??        \cf1 static\cf0  \cf1 void\cf0  MeasureFormatTime(\cf1 string\cf0  name, \cf4 Action\cf0  action)\par ??        \{\par ??            \cf1 var\cf0  stopwatch = \cf1 new\cf0  \cf4 Stopwatch\cf0 ();\par ??            stopwatch.Start();\par ??            \cf1 for\cf0  (\cf1 int\cf0  i = 0; i &amp;lt; Iterations; i++)\par ??            \{\par ??                action();\par ??            \}\par ??            stopwatch.Stop();\par ??            \cf4 Console\cf0 .WriteLine(name + \cf5 &amp;quot; took &amp;quot;\cf0  + (stopwatch.ElapsedMilliseconds / (\cf1 double\cf0 )Iterations) + \cf5 &amp;quot; ms&amp;quot;\cf0 );\par ??        \}\par ??\par ??\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf1 void\cf0  GetCountryInfo(\cf1 string\cf0  ip)\par ??        \{\par ??            \cf4 IPAddress\cf0  ipAddress;\par ??            \cf1 if\cf0  (!\cf4 IPAddress\cf0 .TryParse(ip, \cf1 out\cf0  ipAddress)) \cf1 return\cf0 ;\par ??            ipAddress.Iso3166TwoLetterCode();\par ??            ipAddress.Iso3166ThreeLetterCode();\par ??            ipAddress.Country();\par ??\par ??        \}\par ??\par ??\par ??\par ??    \}\par ??\}\par ??}
--&amp;gt;
&lt;div style="background:white none repeat scroll 0% 0%;font-family:courier new;font-size:10pt;color:black"&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&lt;span style="color:blue"&gt;namespace&lt;/span&gt; Client&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;{&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;using&lt;/span&gt; WorldDomination.Net;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;class&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;Program&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; Iterations = 1000;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;span style="color:blue"&gt;string&lt;/span&gt; ip = &lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;65.55.11.218&amp;quot;&lt;/span&gt;; &lt;span style="color:green"&gt;//US IP Address&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MeasureFormatTime(&lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot;GetCountryInfo&amp;quot;&lt;/span&gt;, () =&amp;gt; GetCountryInfo(ip));&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;Console&lt;/span&gt;.ReadLine();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; MeasureFormatTime(&lt;span style="color:blue"&gt;string&lt;/span&gt; name, &lt;span style="color:rgb(43, 145, 175)"&gt;Action&lt;/span&gt; action)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;var&lt;/span&gt; stopwatch = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43, 145, 175)"&gt;Stopwatch&lt;/span&gt;();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stopwatch.Start();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;for&lt;/span&gt; (&lt;span style="color:blue"&gt;int&lt;/span&gt; i = 0; i &amp;lt; Iterations; i++)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; action();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stopwatch.Stop();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;Console&lt;/span&gt;.WriteLine(name + &lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot; took &amp;quot;&lt;/span&gt; + (stopwatch.ElapsedMilliseconds / (&lt;span style="color:blue"&gt;double&lt;/span&gt;)Iterations) + &lt;span style="color:rgb(163, 21, 21)"&gt;&amp;quot; ms&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; GetCountryInfo(&lt;span style="color:blue"&gt;string&lt;/span&gt; ip)&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt; ipAddress;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;if&lt;/span&gt; (!&lt;span style="color:rgb(43, 145, 175)"&gt;IPAddress&lt;/span&gt;.TryParse(ip, &lt;span style="color:blue"&gt;out&lt;/span&gt; ipAddress)) &lt;span style="color:blue"&gt;return&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ipAddress.Iso3166TwoLetterCode();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ipAddress.Iso3166ThreeLetterCode();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ipAddress.Country();&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px"&gt;}&lt;br&gt;The results of executing this code 1000 times:&lt;/pre&gt;
&lt;/div&gt;
current (lookup using list.FindBy) - GetCountryInfo took 40.632 ms&lt;br&gt;
&lt;br&gt;
original (lookup using linq) - GetCountryInfo took 54.507 ms&lt;br&gt;
&lt;br&gt;
lookup using IEnumerable.Where - GetCountryInfo took 47.154 ms - I tried to use the object IEnumerable&amp;lt;IPv4Data&amp;gt; and look up using Where.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Shay.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>shayja</author><pubDate>Sat, 24 Jan 2009 02:33:57 GMT</pubDate><guid isPermaLink="false">New Post: I made some modifications 20090124023357A</guid></item><item><title>NEW POST: Which compression method to use?</title><link>http://www.codeplex.com/IPAddressExtensions/Thread/View.aspx?ThreadId=22725</link><description>&lt;div class="wikidoc"&gt;
I didn't know this, but the core .NET library contains support for &lt;b&gt;GZip&lt;/b&gt; compression and decompression with the namespace &lt;span class="codeInline"&gt; System.IO.Compression &lt;/span&gt;. Nice! So I've gzip up the data file, made sure it's an embedded resource, then gzip decompressed it during the retrieval of the data.&lt;br /&gt;
&lt;/div&gt;</description><author>purekrome</author><pubDate>Sat, 23 Feb 2008 13:18:08 GMT</pubDate><guid isPermaLink="false">NEW POST: Which compression method to use? 20080223011808P</guid></item><item><title>NEW POST: Which compression method to use?</title><link>http://www.codeplex.com/IPAddressExtensions/Thread/View.aspx?ThreadId=22725</link><description>&lt;div class="wikidoc"&gt;
To improve the memory allocation, the embedded resource geospatial information should be compressed. Initially I was thinking of using the &lt;b&gt;7 Zip compression (LZMA)&lt;/b&gt; but when I downloaded the SDK there's a number of files and my initial thoughts where 'sigh... could be a bit too hard to figure out what is what, let alone what code i'm allowed to use legally, etc'.&lt;br /&gt; &lt;br /&gt;Secondaly, I didn't want to have a dependency on a 3rd party DLL. This would mean that everytime someone uses this IP2Country dll, they would be required to have the 3rd party dll also.&lt;br /&gt; &lt;br /&gt;So .. suggestions or thoughts?&lt;br /&gt; &lt;br /&gt;7 Zip SDK: &lt;a href="http://www.7-zip.org/sdk.html" class="externalLink"&gt;http://www.7-zip.org/sdk.html&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>purekrome</author><pubDate>Sat, 23 Feb 2008 11:12:57 GMT</pubDate><guid isPermaLink="false">NEW POST: Which compression method to use? 20080223111257A</guid></item></channel></rss>