diff --git a/web/gui/src/main/webapp/_sdh/topojson/countrycodes.html b/web/gui/src/main/webapp/_sdh/topojson/countrycodes.html
new file mode 100644
index 0000000..246d9e4
--- /dev/null
+++ b/web/gui/src/main/webapp/_sdh/topojson/countrycodes.html
@@ -0,0 +1,376 @@
+<!DOCTYPE html>
+<!--
+ *
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+-->
+<html lang="en">
+<head>
+    <title>2-Letter, 3-Letter, Country Codes for All Countries in the World</title>
+    <meta charset="utf-8">
+    <script charset="utf-8" src="../../tp/jquery-2.1.1.min.js"></script>
+</head>
+<body>
+
+<style type="text/css" scoped>
+    body {
+        font-family: Helvetica Neue, Helvetica, Arial, sans-serif ;
+        background-color: #eef;
+    }
+    .mainContent {
+        margin: auto;
+        width: 800px;
+        background-color: #ddf;
+        padding: 8px;
+    }
+
+    table {
+        margin: auto;
+    }
+    th {
+        font-style: italic;
+        text-align: left;
+        background-color: #aad;
+        color: #66c;
+        padding: 4px;
+    }
+    td {
+        padding: 4px;
+    }
+    td.code {
+        font-family: monospace;
+        font-size: 120%;
+    }
+    td.num {
+        text-align: right;
+    }
+    tr:nth-child(even) {
+        background-color: #dde;
+    }
+    tr:nth-child(odd) {
+        background-color: #eef;
+    }
+
+</style>
+
+<div class="content">
+    <div class="mainContent">
+        <div class="miscTxt">
+            <header>
+                <h1>Complete List of Country Codes </h1>
+            </header>
+            <p>
+                The 2-letter codes shown below are supplied by the ISO
+                (<i>International Organization for Standardization</i>).
+                It bases its list of country names and abbreviations on
+                the list of names published by the United Nations.
+                The UN also uses 3-letter codes, and numerical codes
+                to identify nations.
+            </p>
+
+            <table>
+                <thead>
+                <tr>
+                    <th> Country </th>
+                    <th> A2 (ISO) </th>
+                    <th> A3 (UN) </th>
+                    <th> NUM (UN) </th>
+                </tr>
+                </thead>
+                <tbody id="codes-body">
+                </tbody>
+            </table>
+        </div>
+    </div>
+</div>
+
+<script type="text/javascript">
+
+    var data = [
+    [ 'Afghanistan', 'AF', 'AFG', 4 ],
+    [ 'Albania', 'AL', 'ALB', 8 ],
+    [ 'Algeria', 'DZ', 'DZA', 12 ],
+    [ 'American Samoa', 'AS', 'ASM', 16 ],
+    [ 'Andorra', 'AD', 'AND', 20 ],
+    [ 'Angola', 'AO', 'AGO', 24 ],
+    [ 'Anguilla', 'AI', 'AIA', 660 ],
+    [ 'Antarctica', 'AQ', 'ATA', 10 ],
+    [ 'Antigua and Barbuda', 'AG', 'ATG', 28 ],
+    [ 'Argentina', 'AR', 'ARG', 32 ],
+    [ 'Armenia', 'AM', 'ARM', 51 ],
+    [ 'Aruba', 'AW', 'ABW', 533 ],
+    [ 'Australia', 'AU', 'AUS', 36 ],
+    [ 'Austria', 'AT', 'AUT', 40 ],
+    [ 'Azerbaijan', 'AZ', 'AZE', 31 ],
+    [ 'Bahamas', 'BS', 'BHS', 44 ],
+    [ 'Bahrain', 'BH', 'BHR', 48 ],
+    [ 'Bangladesh', 'BD', 'BGD', 50 ],
+    [ 'Barbados', 'BB', 'BRB', 52 ],
+    [ 'Belarus', 'BY', 'BLR', 112 ],
+    [ 'Belgium', 'BE', 'BEL', 56 ],
+    [ 'Belize', 'BZ', 'BLZ', 84 ],
+    [ 'Benin', 'BJ', 'BEN', 204 ],
+    [ 'Bermuda', 'BM', 'BMU', 60 ],
+    [ 'Bhutan', 'BT', 'BTN', 64 ],
+    [ 'Bolivia', 'BO', 'BOL', 68 ],
+    [ 'Bonaire', 'BQ', 'BES', 535 ],
+    [ 'Bosnia and Herzegovina', 'BA', 'BIH', 70 ],
+    [ 'Botswana', 'BW', 'BWA', 72 ],
+    [ 'Bouvet Island', 'BV', 'BVT', 74 ],
+    [ 'Brazil', 'BR', 'BRA', 76 ],
+    [ 'British Indian Ocean Territory', 'IO', 'IOT', 86 ],
+    [ 'Brunei Darussalam', 'BN', 'BRN', 96 ],
+    [ 'Bulgaria', 'BG', 'BGR', 100 ],
+    [ 'Burkina Faso', 'BF', 'BFA', 854 ],
+    [ 'Burundi', 'BI', 'BDI', 108 ],
+    [ 'Cambodia', 'KH', 'KHM', 116 ],
+    [ 'Cameroon', 'CM', 'CMR', 120 ],
+    [ 'Canada', 'CA', 'CAN', 124 ],
+    [ 'Cape Verde', 'CV', 'CPV', 132 ],
+    [ 'Cayman Islands', 'KY', 'CYM', 136 ],
+    [ 'Central African Republic', 'CF', 'CAF', 140 ],
+    [ 'Chad', 'TD', 'TCD', 148 ],
+    [ 'Chile', 'CL', 'CHL', 152 ],
+    [ 'China', 'CN', 'CHN', 156 ],
+    [ 'Christmas Island', 'CX', 'CXR', 162 ],
+    [ 'Cocos (Keeling) Islands', 'CC', 'CCK', 166 ],
+    [ 'Colombia', 'CO', 'COL', 170 ],
+    [ 'Comoros', 'KM', 'COM', 174 ],
+    [ 'Congo', 'CG', 'COG', 178 ],
+    [ 'Democratic Republic of the Congo', 'CD', 'COD', 180 ],
+    [ 'Cook Islands', 'CK', 'COK', 184 ],
+    [ 'Costa Rica', 'CR', 'CRI', 188 ],
+    [ 'Croatia', 'HR', 'HRV', 191 ],
+    [ 'Cuba', 'CU', 'CUB', 192 ],
+    [ 'CuraÃ§ao', 'CW', 'CUW', 531 ],
+    [ 'Cyprus', 'CY', 'CYP', 196 ],
+    [ 'Czech Republic', 'CZ', 'CZE', 203 ],
+    [ 'CÃ´te dIvoire', 'CI', 'CIV', 384 ],
+    [ 'Denmark', 'DK', 'DNK', 208 ],
+    [ 'Djibouti', 'DJ', 'DJI', 262 ],
+    [ 'Dominica', 'DM', 'DMA', 212 ],
+    [ 'Dominican Republic', 'DO', 'DOM', 214 ],
+    [ 'Ecuador', 'EC', 'ECU', 218 ],
+    [ 'Egypt', 'EG', 'EGY', 818 ],
+    [ 'El Salvador', 'SV', 'SLV', 222 ],
+    [ 'Equatorial Guinea', 'GQ', 'GNQ', 226 ],
+    [ 'Eritrea', 'ER', 'ERI', 232 ],
+    [ 'Estonia', 'EE', 'EST', 233 ],
+    [ 'Ethiopia', 'ET', 'ETH', 231 ],
+    [ 'Falkland Islands (Malvinas)', 'FK', 'FLK', 238 ],
+    [ 'Faroe Islands', 'FO', 'FRO', 234 ],
+    [ 'Fiji', 'FJ', 'FJI', 242 ],
+    [ 'Finland', 'FI', 'FIN', 246 ],
+    [ 'France', 'FR', 'FRA', 250 ],
+    [ 'French Guiana', 'GF', 'GUF', 254 ],
+    [ 'French Polynesia', 'PF', 'PYF', 258 ],
+    [ 'French Southern Territories', 'TF', 'ATF', 260 ],
+    [ 'Gabon', 'GA', 'GAB', 266 ],
+    [ 'Gambia', 'GM', 'GMB', 270 ],
+    [ 'Georgia', 'GE', 'GEO', 268 ],
+    [ 'Germany', 'DE', 'DEU', 276 ],
+    [ 'Ghana', 'GH', 'GHA', 288 ],
+    [ 'Gibraltar', 'GI', 'GIB', 292 ],
+    [ 'Greece', 'GR', 'GRC', 300 ],
+    [ 'Greenland', 'GL', 'GRL', 304 ],
+    [ 'Grenada', 'GD', 'GRD', 308 ],
+    [ 'Guadeloupe', 'GP', 'GLP', 312 ],
+    [ 'Guam', 'GU', 'GUM', 316 ],
+    [ 'Guatemala', 'GT', 'GTM', 320 ],
+    [ 'Guernsey', 'GG', 'GGY', 831 ],
+    [ 'Guinea', 'GN', 'GIN', 324 ],
+    [ 'Guinea-Bissau', 'GW', 'GNB', 624 ],
+    [ 'Guyana', 'GY', 'GUY', 328 ],
+    [ 'Haiti', 'HT', 'HTI', 332 ],
+    [ 'Heard Island and McDonald Mcdonald Islands', 'HM', 'HMD', 334 ],
+    [ 'Holy See (Vatican City State)', 'VA', 'VAT', 336 ],
+    [ 'Honduras', 'HN', 'HND', 340 ],
+    [ 'Hong Kong', 'HK', 'HKG', 344 ],
+    [ 'Hungary', 'HU', 'HUN', 348 ],
+    [ 'Iceland', 'IS', 'ISL', 352 ],
+    [ 'India', 'IN', 'IND', 356 ],
+    [ 'Indonesia', 'ID', 'IDN', 360 ],
+    [ 'Iran, Islamic Republic of', 'IR', 'IRN', 364 ],
+    [ 'Iraq', 'IQ', 'IRQ', 368 ],
+    [ 'Ireland', 'IE', 'IRL', 372 ],
+    [ 'Isle of Man', 'IM', 'IMN', 833 ],
+    [ 'Israel', 'IL', 'ISR', 376 ],
+    [ 'Italy', 'IT', 'ITA', 380 ],
+    [ 'Jamaica', 'JM', 'JAM', 388 ],
+    [ 'Japan', 'JP', 'JPN', 392 ],
+    [ 'Jersey', 'JE', 'JEY', 832 ],
+    [ 'Jordan', 'JO', 'JOR', 400 ],
+    [ 'Kazakhstan', 'KZ', 'KAZ', 398 ],
+    [ 'Kenya', 'KE', 'KEN', 404 ],
+    [ 'Kiribati', 'KI', 'KIR', 296 ],
+    [ 'Korea, Democratic People\'s Republic of', 'KP', 'PRK', 408 ],
+    [ 'Korea, Republic of', 'KR', 'KOR', 410 ],
+    [ 'Kuwait', 'KW', 'KWT', 414 ],
+    [ 'Kyrgyzstan', 'KG', 'KGZ', 417 ],
+    [ 'Lao People\'s Democratic Republic', 'LA', 'LAO', 418 ],
+    [ 'Latvia', 'LV', 'LVA', 428 ],
+    [ 'Lebanon', 'LB', 'LBN', 422 ],
+    [ 'Lesotho', 'LS', 'LSO', 426 ],
+    [ 'Liberia', 'LR', 'LBR', 430 ],
+    [ 'Libya', 'LY', 'LBY', 434 ],
+    [ 'Liechtenstein', 'LI', 'LIE', 438 ],
+    [ 'Lithuania', 'LT', 'LTU', 440 ],
+    [ 'Luxembourg', 'LU', 'LUX', 442 ],
+    [ 'Macao', 'MO', 'MAC', 446 ],
+    [ 'Macedonia, the Former Yugoslav Republic of', 'MK', 'MKD', 807 ],
+    [ 'Madagascar', 'MG', 'MDG', 450 ],
+    [ 'Malawi', 'MW', 'MWI', 454 ],
+    [ 'Malaysia', 'MY', 'MYS', 458 ],
+    [ 'Maldives', 'MV', 'MDV', 462 ],
+    [ 'Mali', 'ML', 'MLI', 466 ],
+    [ 'Malta', 'MT', 'MLT', 470 ],
+    [ 'Marshall Islands', 'MH', 'MHL', 584 ],
+    [ 'Martinique', 'MQ', 'MTQ', 474 ],
+    [ 'Mauritania', 'MR', 'MRT', 478 ],
+    [ 'Mauritius', 'MU', 'MUS', 480 ],
+    [ 'Mayotte', 'YT', 'MYT', 175 ],
+    [ 'Mexico', 'MX', 'MEX', 484 ],
+    [ 'Micronesia, Federated States of', 'FM', 'FSM', 583 ],
+    [ 'Moldova, Republic of', 'MD', 'MDA', 498 ],
+    [ 'Monaco', 'MC', 'MCO', 492 ],
+    [ 'Mongolia', 'MN', 'MNG', 496 ],
+    [ 'Montenegro', 'ME', 'MNE', 499 ],
+    [ 'Montserrat', 'MS', 'MSR', 500 ],
+    [ 'Morocco', 'MA', 'MAR', 504 ],
+    [ 'Mozambique', 'MZ', 'MOZ', 508 ],
+    [ 'Myanmar', 'MM', 'MMR', 104 ],
+    [ 'Namibia', 'NA', 'NAM', 516 ],
+    [ 'Nauru', 'NR', 'NRU', 520 ],
+    [ 'Nepal', 'NP', 'NPL', 524 ],
+    [ 'Netherlands', 'NL', 'NLD', 528 ],
+    [ 'New Caledonia', 'NC', 'NCL', 540 ],
+    [ 'New Zealand', 'NZ', 'NZL', 554 ],
+    [ 'Nicaragua', 'NI', 'NIC', 558 ],
+    [ 'Niger', 'NE', 'NER', 562 ],
+    [ 'Nigeria', 'NG', 'NGA', 566 ],
+    [ 'Niue', 'NU', 'NIU', 570 ],
+    [ 'Norfolk Island', 'NF', 'NFK', 574 ],
+    [ 'Northern Mariana Islands', 'MP', 'MNP', 580 ],
+    [ 'Norway', 'NO', 'NOR', 578 ],
+    [ 'Oman', 'OM', 'OMN', 512 ],
+    [ 'Pakistan', 'PK', 'PAK', 586 ],
+    [ 'Palau', 'PW', 'PLW', 585 ],
+    [ 'Palestine, State of', 'PS', 'PSE', 275 ],
+    [ 'Panama', 'PA', 'PAN', 591 ],
+    [ 'Papua New Guinea', 'PG', 'PNG', 598 ],
+    [ 'Paraguay', 'PY', 'PRY', 600 ],
+    [ 'Peru', 'PE', 'PER', 604 ],
+    [ 'Philippines', 'PH', 'PHL', 608 ],
+    [ 'Pitcairn', 'PN', 'PCN', 612 ],
+    [ 'Poland', 'PL', 'POL', 616 ],
+    [ 'Portugal', 'PT', 'PRT', 620 ],
+    [ 'Puerto Rico', 'PR', 'PRI', 630 ],
+    [ 'Qatar', 'QA', 'QAT', 634 ],
+    [ 'Romania', 'RO', 'ROU', 642 ],
+    [ 'Russian Federation', 'RU', 'RUS', 643 ],
+    [ 'Rwanda', 'RW', 'RWA', 646 ],
+    [ 'Reunion', 'RE', 'REU', 638 ],
+    [ 'Saint Barthalemy', 'BL', 'BLM', 652 ],
+    [ 'Saint Helena', 'SH', 'SHN', 654 ],
+    [ 'Saint Kitts and Nevis', 'KN', 'KNA', 659 ],
+    [ 'Saint Lucia', 'LC', 'LCA', 662 ],
+    [ 'Saint Martin (French part)', 'MF', 'MAF', 663 ],
+    [ 'Saint Pierre and Miquelon', 'PM', 'SPM', 666 ],
+    [ 'Saint Vincent and the Grenadines', 'VC', 'VCT', 670 ],
+    [ 'Samoa', 'WS', 'WSM', 882 ],
+    [ 'San Marino', 'SM', 'SMR', 674 ],
+    [ 'Sao Tome and Principe', 'ST', 'STP', 678 ],
+    [ 'Saudi Arabia', 'SA', 'SAU', 682 ],
+    [ 'Senegal', 'SN', 'SEN', 686 ],
+    [ 'Serbia', 'RS', 'SRB', 688 ],
+    [ 'Seychelles', 'SC', 'SYC', 690 ],
+    [ 'Sierra Leone', 'SL', 'SLE', 694 ],
+    [ 'Singapore', 'SG', 'SGP', 702 ],
+    [ 'Sint Maarten (Dutch part)', 'SX', 'SXM', 534 ],
+    [ 'Slovakia', 'SK', 'SVK', 703 ],
+    [ 'Slovenia', 'SI', 'SVN', 705 ],
+    [ 'Solomon Islands', 'SB', 'SLB', 90 ],
+    [ 'Somalia', 'SO', 'SOM', 706 ],
+    [ 'South Africa', 'ZA', 'ZAF', 710 ],
+    [ 'South Georgia and the South Sandwich Islands', 'GS', 'SGS', 239 ],
+    [ 'South Sudan', 'SS', 'SSD', 728 ],
+    [ 'Spain', 'ES', 'ESP', 724 ],
+    [ 'Sri Lanka', 'LK', 'LKA', 144 ],
+    [ 'Sudan', 'SD', 'SDN', 729 ],
+    [ 'Suriname', 'SR', 'SUR', 740 ],
+    [ 'Svalbard and Jan Mayen', 'SJ', 'SJM', 744 ],
+    [ 'Swaziland', 'SZ', 'SWZ', 748 ],
+    [ 'Sweden', 'SE', 'SWE', 752 ],
+    [ 'Switzerland', 'CH', 'CHE', 756 ],
+    [ 'Syrian Arab Republic', 'SY', 'SYR', 760 ],
+    [ 'Taiwan, Province of China', 'TW', 'TWN', 158 ],
+    [ 'Tajikistan', 'TJ', 'TJK', 762 ],
+    [ 'United Republic of Tanzania', 'TZ', 'TZA', 834 ],
+    [ 'Thailand', 'TH', 'THA', 764 ],
+    [ 'Timor-Leste', 'TL', 'TLS', 626 ],
+    [ 'Togo', 'TG', 'TGO', 768 ],
+    [ 'Tokelau', 'TK', 'TKL', 772 ],
+    [ 'Tonga', 'TO', 'TON', 776 ],
+    [ 'Trinidad and Tobago', 'TT', 'TTO', 780 ],
+    [ 'Tunisia', 'TN', 'TUN', 788 ],
+    [ 'Turkey', 'TR', 'TUR', 792 ],
+    [ 'Turkmenistan', 'TM', 'TKM', 795 ],
+    [ 'Turks and Caicos Islands', 'TC', 'TCA', 796 ],
+    [ 'Tuvalu', 'TV', 'TUV', 798 ],
+    [ 'Uganda', 'UG', 'UGA', 800 ],
+    [ 'Ukraine', 'UA', 'UKR', 804 ],
+    [ 'United Arab Emirates', 'AE', 'ARE', 784 ],
+    [ 'United Kingdom', 'GB', 'GBR', 826 ],
+    [ 'United States', 'US', 'USA', 840 ],
+    [ 'United States Minor Outlying Islands', 'UM', 'UMI', 581 ],
+    [ 'Uruguay', 'UY', 'URY', 858 ],
+    [ 'Uzbekistan', 'UZ', 'UZB', 860 ],
+    [ 'Vanuatu', 'VU', 'VUT', 548 ],
+    [ 'Venezuela', 'VE', 'VEN', 862 ],
+    [ 'Viet Nam', 'VN', 'VNM', 704 ],
+    [ 'British Virgin Islands', 'VG', 'VGB', 92 ],
+    [ 'US Virgin Islands', 'VI', 'VIR', 850 ],
+    [ 'Wallis and Futuna', 'WF', 'WLF', 876 ],
+    [ 'Western Sahara', 'EH', 'ESH', 732 ],
+    [ 'Yemen', 'YE', 'YEM', 887 ],
+    [ 'Zambia', 'ZM', 'ZMB', 894 ],
+    [ 'Zimbabwe', 'ZW', 'ZWE', 716 ],
+    [ 'Aland Islands', 'AX', 'ALA', 248 ]
+    ];
+
+    var bod = $('#codes-body');
+
+    function addRow(name, a2, a3, num) {
+        bod.append('<tr>' +
+                '<td>'+ name + '</td>' +
+                '<td class="code">'+ a2 + '</td>' +
+                '<td class="code">'+ a3 + '</td>' +
+                '<td class="num">'+ num + '</td>' +
+                '</tr>');
+    }
+
+    function loadRows() {
+        data.forEach(function (d) {
+            if (d.length) {
+                addRow(d[0], d[1], d[2], d[3]);
+            }
+        });
+    }
+
+    loadRows();
+</script>
+
+</body>
+</html>
