summaryrefslogtreecommitdiff
path: root/Postman/Postman-Connectivity-Test
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Connectivity-Test')
-rw-r--r--Postman/Postman-Connectivity-Test/Postman-PortTest.php286
-rw-r--r--Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php336
-rw-r--r--Postman/Postman-Connectivity-Test/postman_port_test.js336
-rw-r--r--Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php6484
-rw-r--r--Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php120
-rw-r--r--Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php62
-rw-r--r--Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php51
-rw-r--r--Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt56
-rw-r--r--Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php213
9 files changed, 7944 insertions, 0 deletions
diff --git a/Postman/Postman-Connectivity-Test/Postman-PortTest.php b/Postman/Postman-Connectivity-Test/Postman-PortTest.php
new file mode 100644
index 0000000..adbe530
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/Postman-PortTest.php
@@ -0,0 +1,286 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly
+}
+
+require_once ("registered-domain-libs-master/PHP/effectiveTLDs.inc.php");
+require_once ("registered-domain-libs-master/PHP/regDomain.inc.php");
+
+/**
+ *
+ * @author jasonhendriks
+ *
+ */
+class PostmanPortTest {
+ private $errstr;
+ private $logger;
+ private $hostname;
+ public $hostnameDomainOnly;
+ private $port;
+ private $connectionTimeout;
+ private $readTimeout;
+ public $reportedHostname;
+ public $reportedHostnameDomainOnly;
+ public $protocol;
+ public $secure;
+ public $mitm;
+ public $http;
+ public $https;
+ public $smtp;
+ public $smtps;
+ public $startTls;
+ public $checkStartTls;
+ public $authLogin;
+ public $authPlain;
+ public $authCrammd5;
+ public $authXoauth;
+ public $authNone;
+ public $trySmtps;
+
+ //
+ const SMTPS_PROTOCOL = 'SMTPS';
+
+ /**
+ */
+ public function __construct($hostname, $port) {
+ $this->logger = new PostmanLogger ( get_class ( $this ) );
+ $this->hostname = $hostname;
+ $this->hostnameDomainOnly = $this->getRegisteredDomain ( $hostname );
+ $this->port = $port;
+ $this->connectionTimeout = 10;
+ $this->readTimeout = 10;
+ }
+
+ /**
+ * Wrap the regDomain/getRegisteredDomain function
+ *
+ * @param mixed $domain
+ * @return mixed
+ */
+ private function getRegisteredDomain($hostname) {
+ $registeredDomain = getRegisteredDomain ( $hostname );
+ if ($registeredDomain === NULL) {
+ return $hostname;
+ }
+ return $registeredDomain;
+ }
+ public function setConnectionTimeout($timeout) {
+ $this->connectionTimeout = $timeout;
+ $this->logger->trace ( $this->connectionTimeout );
+ }
+ public function setReadTimeout($timeout) {
+ $this->readTimeout = $timeout;
+ $this->logger->trace ( $this->readTimeout );
+ }
+ private function createStream($connectionString) {
+ $stream = @stream_socket_client ( $connectionString, $errno, $errstr, $this->connectionTimeout );
+ if ($stream) {
+ $this->trace ( sprintf ( 'connected to %s', $connectionString ) );
+ } else {
+ $this->trace ( sprintf ( 'Could not connect to %s because %s [%s]', $connectionString, $errstr, $errno ) );
+ }
+ return $stream;
+ }
+
+ /**
+ *
+ * @param number $timeout
+ * @return boolean
+ */
+ public function genericConnectionTest() {
+ $this->logger->trace ( 'testCustomConnection()' );
+ // test if the port is open
+ $connectionString = sprintf ( '%s:%s', $this->hostname, $this->port );
+ $stream = $this->createStream ( $connectionString, $this->connectionTimeout );
+ return null != $stream;
+ }
+
+ /**
+ * Given a hostname, test if it has open ports
+ *
+ * @param string $hostname
+ */
+ public function testHttpPorts() {
+ $this->trace ( 'testHttpPorts()' );
+ $connectionString = sprintf ( "https://%s:%s", $this->hostname, $this->port );
+ try {
+ $response = PostmanUtils::remotePost ( $connectionString );
+ $this->trace ( 'wp_remote_retrieve_headers:' );
+ $this->logger->trace ( wp_remote_retrieve_headers ( $response ) );
+ $this->trace ( wp_remote_retrieve_response_code ( $response ) );
+ $this->protocol = 'HTTPS';
+ $this->http = true;
+ $this->https = true;
+ $this->secure = true;
+ $this->reportedHostname = $this->hostname;
+ $this->reportedHostnameDomainOnly = $this->getRegisteredDomain ( $this->hostname );
+ return true;
+ } catch ( Exception $e ) {
+ $this->debug ( 'return false' );
+ }
+ }
+
+ /**
+ * Given a hostname, test if it has open ports
+ *
+ * @param string $hostname
+ */
+ public function testSmtpPorts() {
+ $this->logger->trace ( 'testSmtpPorts()' );
+ if ($this->port == 8025) {
+ $this->debug ( 'Executing test code for port 8025' );
+ $this->protocol = 'SMTP';
+ $this->smtp = true;
+ $this->authNone = 'true';
+ return true;
+ }
+ $connectionString = sprintf ( "%s:%s", $this->hostname, $this->port );
+ $success = $this->talkToMailServer ( $connectionString, $this->connectionTimeout, $this->readTimeout );
+ if ($success) {
+ $this->protocol = 'SMTP';
+ if (! ($this->authCrammd5 || $this->authLogin || $this->authPlain || $this->authXoauth)) {
+ $this->authNone = true;
+ }
+ } else {
+ $this->trySmtps = true;
+ }
+ return $success;
+ }
+
+ /**
+ * Given a hostname, test if it has open ports
+ *
+ * @param string $hostname
+ */
+ public function testSmtpsPorts() {
+ $this->logger->trace ( 'testSmtpsPorts()' );
+ $connectionString = sprintf ( "ssl://%s:%s", $this->hostname, $this->port );
+ $success = $this->talkToMailServer ( $connectionString, $this->connectionTimeout, $this->readTimeout );
+ if ($success) {
+ if (! ($this->authCrammd5 || $this->authLogin || $this->authPlain || $this->authXoauth)) {
+ $this->authNone = true;
+ }
+ $this->protocol = self::SMTPS_PROTOCOL;
+ $this->smtps = true;
+ $this->secure = true;
+ }
+ return $success;
+ }
+
+ /**
+ * Given a hostname, test if it has open ports
+ *
+ * @param string $hostname
+ */
+ private function talkToMailServer($connectionString) {
+ $this->logger->trace ( 'talkToMailServer()' );
+ $stream = $this->createStream ( $connectionString, $this->connectionTimeout );
+ if ($stream) {
+ $serverName = PostmanUtils::postmanGetServerName ();
+ @stream_set_timeout ( $stream, $this->readTimeout );
+ // see http://php.net/manual/en/transports.inet.php#113244
+ // see http://php.net/stream_socket_enable_crypto
+ $result = $this->readSmtpResponse ( $stream );
+ if ($result) {
+ $this->reportedHostname = $result;
+ $this->reportedHostnameDomainOnly = $this->getRegisteredDomain ( $this->reportedHostname );
+ $this->logger->trace ( sprintf ( 'comparing %s with %s', $this->reportedHostnameDomainOnly, $this->hostnameDomainOnly ) );
+ $this->mitm = true;
+ // MITM exceptions
+ if ($this->reportedHostnameDomainOnly == 'google.com' && $this->hostnameDomainOnly == 'gmail.com') {
+ $this->mitm = false;
+ } elseif ($this->reportedHostnameDomainOnly == 'hotmail.com' && $this->hostnameDomainOnly == 'live.com') {
+ $this->mitm = false;
+ } elseif ($this->reportedHostnameDomainOnly == $this->hostnameDomainOnly) {
+ $this->mitm = false;
+ }
+ $this->debug ( sprintf ( 'domain name: %s (%s)', $this->reportedHostname, $this->reportedHostnameDomainOnly ) );
+ $this->sendSmtpCommand ( $stream, sprintf ( 'EHLO %s', $serverName ) );
+ $this->readSmtpResponse ( $stream );
+ if ($this->checkStartTls) {
+ $this->sendSmtpCommand ( $stream, 'STARTTLS' );
+ $this->readSmtpResponse ( $stream );
+ $starttlsSuccess = @stream_socket_enable_crypto ( $stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT );
+ if ($starttlsSuccess) {
+ $this->startTls = true;
+ $this->secure = true;
+ $this->sendSmtpCommand ( $stream, sprintf ( 'EHLO %s', $serverName ) );
+ $this->readSmtpResponse ( $stream );
+ } else {
+ $this->error ( 'starttls failed' );
+ }
+ }
+ fclose ( $stream );
+ $this->debug ( 'return true' );
+ return true;
+ } else {
+ fclose ( $stream );
+ $this->debug ( 'return false' );
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+ private function sendSmtpCommand($stream, $message) {
+ $this->trace ( 'tx: ' . $message );
+ fputs ( $stream, $message . "\r\n" );
+ }
+ private function readSmtpResponse($stream) {
+ $result = '';
+ while ( ($line = fgets ( $stream )) !== false ) {
+ $this->trace ( 'rx: ' . $line );
+ if (preg_match ( '/^250.AUTH/', $line )) {
+ // $this->debug ( '250-AUTH' );
+ if (preg_match ( '/\\sLOGIN\\s/', $line )) {
+ $this->authLogin = true;
+ $this->debug ( 'authLogin' );
+ }
+ if (preg_match ( '/\\sPLAIN\\s/', $line )) {
+ $this->authPlain = true;
+ $this->debug ( 'authPlain' );
+ }
+ if (preg_match ( '/\\sCRAM-MD5\\s/', $line )) {
+ $this->authCrammd5 = true;
+ $this->debug ( 'authCrammd5' );
+ }
+ if (preg_match ( '/\\sXOAUTH.\\s/', $line )) {
+ $this->authXoauth = true;
+ $this->debug ( 'authXoauth' );
+ }
+ if (preg_match ( '/\\sANONYMOUS\\s/', $line )) {
+ // Postman treats ANONYMOUS login as no authentication.
+ $this->authNone = true;
+ $this->debug ( 'authAnonymous => authNone' );
+ }
+ // done
+ $result = 'auth';
+ } elseif (preg_match ( '/STARTTLS/', $line )) {
+ $result = 'starttls';
+ $this->checkStartTls = true;
+ $this->debug ( 'starttls' );
+ } elseif (preg_match ( '/^220.(.*?)\\s/', $line, $matches )) {
+ if (empty ( $result ))
+ $result = $matches [1];
+ }
+ if (preg_match ( '/^\d\d\d\\s/', $line )) {
+ // always exist on last server response line
+ // $this->debug ( 'exit' );
+ return $result;
+ }
+ }
+ return false;
+ }
+ public function getErrorMessage() {
+ return $this->errstr;
+ }
+ private function trace($message) {
+ $this->logger->trace ( sprintf ( '%s:%s => %s', $this->hostname, $this->port, $message ) );
+ }
+ private function debug($message) {
+ $this->logger->debug ( sprintf ( '%s:%s => %s', $this->hostname, $this->port, $message ) );
+ }
+ private function error($message) {
+ $this->logger->error ( sprintf ( '%s:%s => %s', $this->hostname, $this->port, $message ) );
+ }
+}
diff --git a/Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php b/Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php
new file mode 100644
index 0000000..6ff5a69
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php
@@ -0,0 +1,336 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly
+}
+
+class PostmanConnectivityTestController {
+
+ const PORT_TEST_SLUG = 'postman/port_test';
+
+ // logging
+ private $logger;
+
+ // Holds the values to be used in the fields callbacks
+ private $rootPluginFilenameAndPath;
+
+ /**
+ * Constructor
+ *
+ * @param mixed $rootPluginFilenameAndPath
+ */
+ public function __construct( $rootPluginFilenameAndPath ) {
+ assert( ! empty( $rootPluginFilenameAndPath ) );
+ assert( PostmanUtils::isAdmin() );
+ assert( is_admin() );
+
+ $this->logger = new PostmanLogger( get_class( $this ) );
+ $this->rootPluginFilenameAndPath = $rootPluginFilenameAndPath;
+
+ PostmanUtils::registerAdminMenu( $this, 'addPortTestSubmenu' );
+
+ // hook on the init event
+ add_action( 'init', array(
+ $this,
+ 'on_init',
+ ) );
+
+ // initialize the scripts, stylesheets and form fields
+ add_action( 'admin_init', array(
+ $this,
+ 'on_admin_init',
+ ) );
+ }
+
+ /**
+ * Functions to execute on the init event
+ *
+ * "Typically used by plugins to initialize. The current user is already authenticated by this time."
+ * ref: http://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_a_Typical_Request
+ */
+ public function on_init() {
+ // register Ajax handlers
+ new PostmanPortTestAjaxController();
+ }
+
+ /**
+ * Fires on the admin_init method
+ */
+ public function on_admin_init() {
+ $this->registerStylesAndScripts();
+ }
+
+ /**
+ * Register and add settings
+ */
+ private function registerStylesAndScripts() {
+ if ( $this->logger->isTrace() ) {
+ $this->logger->trace( 'registerStylesAndScripts()' );
+ }
+ // register the stylesheet and javascript external resources
+ $pluginData = apply_filters( 'postman_get_plugin_metadata', null );
+ wp_register_script( 'postman_port_test_script', plugins_url( 'Postman/Postman-Connectivity-Test/postman_port_test.js', $this->rootPluginFilenameAndPath ), array(
+ PostmanViewController::JQUERY_SCRIPT,
+ 'jquery_validation',
+ PostmanViewController::POSTMAN_SCRIPT,
+ 'sprintf',
+ ), $pluginData ['version'] );
+ }
+
+ /**
+ * Register the Email Test screen
+ */
+ public function addPortTestSubmenu() {
+ $page = add_submenu_page( null, sprintf( __( '%s Setup', 'post-smtp' ), __( 'Postman SMTP', 'post-smtp' ) ), __( 'Postman SMTP', 'post-smtp' ), Postman::MANAGE_POSTMAN_CAPABILITY_NAME, PostmanConnectivityTestController::PORT_TEST_SLUG, array(
+ $this,
+ 'outputPortTestContent',
+ ) );
+ // When the plugin options page is loaded, also load the stylesheet
+ add_action( 'admin_print_styles-' . $page, array(
+ $this,
+ 'enqueuePortTestResources',
+ ) );
+ }
+
+ /**
+ */
+ function enqueuePortTestResources() {
+ wp_enqueue_style( PostmanViewController::POSTMAN_STYLE );
+ wp_enqueue_script( 'postman_port_test_script' );
+ $warning = __( 'Warning', 'post-smtp' );
+ wp_localize_script( PostmanViewController::POSTMAN_SCRIPT, 'postman_hostname_element_name', '#input_' . PostmanOptions::HOSTNAME );
+ wp_localize_script( PostmanViewController::POSTMAN_SCRIPT, 'postman_email_test', array(
+ 'recipient' => '#' . PostmanSendTestEmailController::RECIPIENT_EMAIL_FIELD_NAME,
+ 'not_started' => _x( 'In Outbox', 'Email Test Status', 'post-smtp' ),
+ 'sending' => _x( 'Sending...', 'Email Test Status', 'post-smtp' ),
+ 'success' => _x( 'Success', 'Email Test Status', 'post-smtp' ),
+ 'failed' => _x( 'Failed', 'Email Test Status', 'post-smtp' ),
+ 'ajax_error' => __( 'Ajax Error', 'post-smtp' ),
+ ) );
+ PostmanConnectivityTestController::addLocalizeScriptForPortTest();
+ }
+ static function addLocalizeScriptForPortTest() {
+ wp_localize_script( PostmanViewController::POSTMAN_SCRIPT, 'postman_port_test', array(
+ 'in_progress' => _x( 'Checking..', 'The "please wait" message', 'post-smtp' ),
+ 'open' => _x( 'Open', 'The port is open', 'post-smtp' ),
+ 'closed' => _x( 'Closed', 'The port is closed', 'post-smtp' ),
+ 'yes' => __( 'Yes', 'post-smtp' ),
+ 'no' => __( 'No', 'post-smtp' ),
+ /* translators: where %d is a port number */
+ 'blocked' => __( 'No outbound route between this site and the Internet on Port %d.', 'post-smtp' ),
+ /* translators: where %d is a port number and %s is a hostname */
+ 'try_dif_smtp' => __( 'Port %d is open, but not to %s.', 'post-smtp' ),
+ /* translators: where %d is the port number and %s is the hostname */
+ 'success' => __( 'Port %d can be used for SMTP to %s.', 'post-smtp' ),
+ 'mitm' => sprintf( '%s: %s', __( 'Warning', 'post-smtp' ), __( 'connected to %1$s instead of %2$s.', 'post-smtp' ) ),
+ /* translators: where %d is a port number and %s is the URL for the Postman Gmail Extension */
+ 'https_success' => __( 'Port %d can be used with the %s.', 'post-smtp' ),
+ ) );
+ }
+
+ /**
+ * Get the settings option array and print one of its values
+ */
+ public function port_test_hostname_callback() {
+ $hostname = PostmanTransportRegistry::getInstance()->getSelectedTransport()->getHostname();
+ if ( empty( $hostname ) ) {
+ $hostname = PostmanTransportRegistry::getInstance()->getActiveTransport()->getHostname();
+ }
+ printf( '<input type="text" id="input_hostname" name="postman_options[hostname]" value="%s" size="40" class="required"/>', $hostname );
+ }
+
+ /**
+ */
+ public function outputPortTestContent() {
+ print '<div class="wrap">';
+
+ wp_nonce_field('post-smtp', 'security');
+
+ PostmanViewController::outputChildPageHeader( __( 'Connectivity Test', 'post-smtp' ) );
+
+ print '<p>';
+ print __( 'This test determines which well-known ports are available for Postman to use.', 'post-smtp' );
+ print '<form id="port_test_form_id" method="post">';
+
+ wp_nonce_field('post-smtp', 'security' );
+
+ printf( '<label for="hostname">%s</label>', __( 'Outgoing Mail Server Hostname', 'post-smtp' ) );
+ $this->port_test_hostname_callback();
+ submit_button( _x( 'Begin Test', 'Button Label', 'post-smtp' ), 'primary', 'begin-port-test', true );
+ print '</form>';
+ print '<table id="connectivity_test_table">';
+ print sprintf( '<tr><th rowspan="2">%s</th><th rowspan="2">%s</th><th rowspan="2">%s</th><th rowspan="2">%s</th><th rowspan="2">%s</th><th colspan="5">%s</th></tr>', __( 'Transport', 'post-smtp' ), _x( 'Socket', 'A socket is the network term for host and port together', 'post-smtp' ), __( 'Status', 'post-smtp' ) . '<sup>*</sup>', __( 'Service Available', 'post-smtp' ), __( 'Server ID', 'post-smtp' ), __( 'Authentication', 'post-smtp' ) );
+ print sprintf( '<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>', 'None', 'Login', 'Plain', 'CRAM-MD5', 'OAuth 2.0' );
+ $sockets = PostmanTransportRegistry::getInstance()->getSocketsForSetupWizardToProbe();
+ foreach ( $sockets as $socket ) {
+ if ( $socket ['smtp'] ) {
+ print sprintf( '<tr id="%s"><th class="name">%s</th><td class="socket">%s:%s</td><td class="firewall resettable">-</td><td class="service resettable">-</td><td class="reported_id resettable">-</td><td class="auth_none resettable">-</td><td class="auth_login resettable">-</td><td class="auth_plain resettable">-</td><td class="auth_crammd5 resettable">-</td><td class="auth_xoauth2 resettable">-</td></tr>', $socket ['id'], $socket ['transport_name'], $socket ['host'], $socket ['port'] );
+ } else {
+ print sprintf( '<tr id="%s"><th class="name">%s</th><td class="socket">%s:%s</td><td class="firewall resettable">-</td><td class="service resettable">-</td><td class="reported_id resettable">-</td><td colspan="5">%s</td></tr>', $socket ['id'], $socket ['transport_name'], $socket ['host'], $socket ['port'], __( 'n/a', 'post-smtp' ) );
+ }
+ }
+ print '</table>';
+ /* Translators: Where %s is the name of the service providing Internet connectivity test */
+ printf( '<p class="portquiz" style="display:none; font-size:0.8em">* %s</p>', sprintf( __( 'According to %s', 'post-smtp' ), '<a target="_blank" href="https://downor.me/portquiz.net">portquiz.net</a>' ) );
+ printf( '<p class="ajax-loader" style="display:none"><img src="%s"/></p>', plugins_url( 'post-smtp/style/ajax-loader.gif' ) );
+ print '<section id="conclusion" style="display:none">';
+ print sprintf( '<h3>%s:</h3>', __( 'Summary', 'post-smtp' ) );
+ print '<ol class="conclusion">';
+ print '</ol>';
+ print '</section>';
+ print '<section id="blocked-port-help" style="display:none">';
+ print sprintf( '<p><b>%s</b></p>', __( 'A test with <span style="color:red">"No"</span> Service Available indicates one or more of these issues:', 'post-smtp' ) );
+ print '<ol>';
+ printf( '<li>%s</li>', __( 'Your web host has placed a firewall between this site and the Internet', 'post-smtp' ) );
+ printf( '<li>%s</li>', __( 'The SMTP hostname is wrong or the mail server does not provide service on this port', 'post-smtp' ) );
+ /* translators: where (1) is the URL and (2) is the system */
+ $systemBlockMessage = __( 'Your <a href="%1$s">%2$s configuration</a> is preventing outbound connections', 'post-smtp' );
+ printf( '<li>%s</li>', sprintf( $systemBlockMessage, 'http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen', 'PHP' ) );
+ printf( '<li>%s</li>', sprintf( $systemBlockMessage, 'http://wp-mix.com/disable-external-url-requests/', 'WordPress' ) );
+ print '</ol></p>';
+ print sprintf( '<p><b>%s</b></p>', __( 'If the issues above can not be resolved, your last option is to configure Postman to use an email account managed by your web host with an SMTP server managed by your web host.', 'post-smtp' ) );
+ print '</section>';
+ print '</div>';
+ }
+}
+
+/**
+ *
+ * @author jasonhendriks
+ */
+class PostmanPortTestAjaxController {
+ private $logger;
+ /**
+ * Constructor
+ *
+ * @param PostmanOptions $options
+ */
+ function __construct() {
+ $this->logger = new PostmanLogger( get_class( $this ) );
+ PostmanUtils::registerAjaxHandler( 'postman_get_hosts_to_test', $this, 'getPortsToTestViaAjax' );
+ PostmanUtils::registerAjaxHandler( 'postman_wizard_port_test', $this, 'runSmtpTest' );
+ PostmanUtils::registerAjaxHandler( 'postman_wizard_port_test_smtps', $this, 'runSmtpsTest' );
+ PostmanUtils::registerAjaxHandler( 'postman_port_quiz_test', $this, 'runPortQuizTest' );
+ PostmanUtils::registerAjaxHandler( 'postman_test_port', $this, 'runSmtpTest' );
+ PostmanUtils::registerAjaxHandler( 'postman_test_smtps', $this, 'runSmtpsTest' );
+ }
+
+ /**
+ * This Ajax function determines which hosts/ports to test in both the Wizard Connectivity Test and direct Connectivity Test
+ *
+ * Given a single outgoing smtp server hostname, return an array of host/port
+ * combinations to run the connectivity test on
+ */
+ function getPortsToTestViaAjax() {
+
+ check_admin_referer('post-smtp', 'security');
+
+ $queryHostname = PostmanUtils::getRequestParameter( 'hostname' );
+ // originalSmtpServer is what SmtpDiscovery thinks the SMTP server should be, given an email address
+ $originalSmtpServer = PostmanUtils::getRequestParameter( 'original_smtp_server' );
+ if ( $this->logger->isDebug() ) {
+ $this->logger->debug( 'Probing available transports for sockets against hostname ' . $queryHostname );
+ }
+ $sockets = PostmanTransportRegistry::getInstance()->getSocketsForSetupWizardToProbe( $queryHostname, $originalSmtpServer );
+ $response = array(
+ 'hosts' => $sockets,
+ );
+ wp_send_json_success( $response );
+ }
+
+ /**
+ * This Ajax function retrieves whether a TCP port is open or not
+ */
+ function runPortQuizTest() {
+
+ check_admin_referer('post-smtp', 'security');
+
+ $hostname = 'portquiz.net';
+ $port = intval( PostmanUtils::getRequestParameter( 'port' ) );
+ $this->logger->debug( 'testing TCP port: hostname ' . $hostname . ' port ' . $port );
+ $portTest = new PostmanPortTest( $hostname, $port );
+ $success = $portTest->genericConnectionTest();
+ $this->buildResponse( $hostname, $port, $portTest, $success );
+ }
+
+ /**
+ * This Ajax function retrieves whether a TCP port is open or not.
+ * This is called by both the Wizard and Port Test
+ */
+ function runSmtpTest() {
+
+ check_admin_referer('post-smtp', 'security');
+
+ $hostname = trim( PostmanUtils::getRequestParameter( 'hostname' ) );
+ $port = intval( PostmanUtils::getRequestParameter( 'port' ) );
+ $transport = trim( PostmanUtils::getRequestParameter( 'transport' ) );
+ $timeout = PostmanUtils::getRequestParameter( 'timeout' );
+ $this->logger->trace( $timeout );
+ $portTest = new PostmanPortTest( $hostname, $port );
+ if ( isset( $timeout ) ) {
+ $portTest->setConnectionTimeout( intval( $timeout ) );
+ $portTest->setReadTimeout( intval( $timeout ) );
+ }
+ if ( $port != 443 ) {
+ $this->logger->debug( sprintf( 'testing SMTP socket %s:%s (%s)', $hostname, $port, $transport ) );
+ $success = $portTest->testSmtpPorts();
+ } else {
+ $this->logger->debug( sprintf( 'testing HTTPS socket %s:%s (%s)', $hostname, $port, $transport ) );
+ $success = $portTest->testHttpPorts();
+ }
+ $this->buildResponse( $hostname, $port, $portTest, $success, $transport );
+ }
+ /**
+ * This Ajax function retrieves whether a TCP port is open or not
+ */
+ function runSmtpsTest() {
+
+ check_admin_referer('post-smtp', 'security');
+
+ $hostname = trim( PostmanUtils::getRequestParameter( 'hostname' ) );
+ $port = intval( PostmanUtils::getRequestParameter( 'port' ) );
+ $transport = trim( PostmanUtils::getRequestParameter( 'transport' ) );
+ $transportName = trim( PostmanUtils::getRequestParameter( 'transport_name' ) );
+ $this->logger->debug( sprintf( 'testing SMTPS socket %s:%s (%s)', $hostname, $port, $transport ) );
+ $portTest = new PostmanPortTest( $hostname, $port );
+ $portTest->transportName = $transportName;
+ $success = $portTest->testSmtpsPorts();
+ $this->buildResponse( $hostname, $port, $portTest, $success, $transport );
+ }
+
+ /**
+ *
+ * @param mixed $hostname
+ * @param mixed $port
+ * @param mixed $success
+ */
+ private function buildResponse( $hostname, $port, PostmanPortTest $portTest, $success, $transport = '' ) {
+ $this->logger->debug( sprintf( 'testing port result for %s:%s success=%s', $hostname, $port, $success ) );
+ $response = array(
+ 'hostname' => $hostname,
+ 'hostname_domain_only' => $portTest->hostnameDomainOnly,
+ 'port' => $port,
+ 'protocol' => $portTest->protocol,
+ 'secure' => ($portTest->secure),
+ 'mitm' => ($portTest->mitm),
+ 'reported_hostname' => $portTest->reportedHostname,
+ 'reported_hostname_domain_only' => $portTest->reportedHostnameDomainOnly,
+ 'message' => $portTest->getErrorMessage(),
+ 'start_tls' => $portTest->startTls,
+ 'auth_plain' => $portTest->authPlain,
+ 'auth_login' => $portTest->authLogin,
+ 'auth_crammd5' => $portTest->authCrammd5,
+ 'auth_xoauth' => $portTest->authXoauth,
+ 'auth_none' => $portTest->authNone,
+ 'try_smtps' => $portTest->trySmtps,
+ 'success' => $success,
+ 'transport' => $transport,
+ );
+ $this->logger->trace( 'Ajax response:' );
+ $this->logger->trace( $response );
+ if ( $success ) {
+ wp_send_json_success( $response );
+ } else {
+ wp_send_json_error( $response );
+ }
+ }
+}
diff --git a/Postman/Postman-Connectivity-Test/postman_port_test.js b/Postman/Postman-Connectivity-Test/postman_port_test.js
new file mode 100644
index 0000000..8667c06
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/postman_port_test.js
@@ -0,0 +1,336 @@
+postman_begin_test_button_id = 'input#begin-port-test';
+
+jQuery(document).ready(function() {
+ var elHostname = jQuery(postman_begin_test_button_id);
+ jQuery(postman_hostname_element_name).focus();
+ elHostname.click(function() {
+ valid = jQuery('#port_test_form_id').valid();
+ if (!valid) {
+ return false;
+ }
+
+ // initialize the view for a new test
+ elHostname.attr('disabled', 'disabled');
+ hide('#conclusion');
+ hide('#blocked-port-help');
+ jQuery('ol.conclusion').html('');
+ showLoaderIcon();
+
+ var $elTestingTable = jQuery('#connectivity_test_table');
+ $elTestingTable.show();
+ show('.portquiz');
+
+ var hostname = jQuery(postman_hostname_element_name).val();
+ var data = {
+ 'action' : 'postman_get_hosts_to_test',
+ 'hostname' : hostname,
+ 'security' : jQuery('#security').val(),
+ };
+
+ totalPortsTested = 0;
+ portsToBeTested = 0;
+
+ jQuery.post(ajaxurl, data, function(response) {
+ if (postmanValidateAjaxResponseWithPopup(response)) {
+ handleHostsToCheckResponse(response.data);
+ }
+ }).fail(function(response) {
+ ajaxFailed(response);
+ });
+
+ //
+ return false;
+ });
+});
+
+/**
+ * Handles the response from the server of the list of sockets to check.
+ *
+ * @param hostname
+ * @param response
+ */
+function handleHostsToCheckResponse(response) {
+ for ( var x in response.hosts) {
+ var id = response.hosts[x].id;
+ var transportSlug = response.hosts[x].transport_id;
+ var hostname = response.hosts[x].host;
+ var port = response.hosts[x].port
+ var cell = 'tr#' + id + " td.socket";
+ var testEl = jQuery(cell);
+ testEl.html('<span>' + hostname + ':' + port + '</span>');
+ portQuizTest(response.hosts[x], hostname, port);
+ }
+}
+
+function portQuizTest(socket, hostname, port) {
+ resetView(socket.id);
+ portsToBeTested += 1;
+ var cell = 'tr#' + socket.id + " td.firewall";
+ var testEl = jQuery(cell);
+ testEl.html('<span style="color:blue">' + postman_port_test.in_progress
+ + '</span>');
+ var data = {
+ 'action' : 'postman_port_quiz_test',
+ 'hostname' : hostname,
+ 'port' : port,
+ 'security' : jQuery('#security').val(),
+ };
+ jQuery.post(
+ ajaxurl,
+ data,
+ function(response) {
+ if (postmanValidateAjaxResponseWithPopup(response)) {
+ if (response.success) {
+ testEl.html('<span style="color:green">'
+ + postman_port_test.open + '</span>');
+ // start the next test
+ } else {
+ testEl.html('<span style="color:red">'
+ + postman_port_test.closed + '</span>');
+ }
+ firstServiceTest(socket, hostname, port, response.success);
+ }
+ }).fail(
+ function(response) {
+ totalPortsTested += 1;
+ testEl.html('<span style="color:red">'
+ + postman_email_test.ajax_error + "</span>");
+ enableButtonCheck();
+ });
+}
+function firstServiceTest(socket, hostname, port, open) {
+ var cell = 'tr#' + socket.id + " td.service";
+ var testEl = jQuery(cell);
+ testEl.html('<span style="color:blue">' + postman_port_test.in_progress
+ + '</span>');
+ var data = {
+ 'action' : 'postman_test_port',
+ 'hostname' : hostname,
+ 'port' : port,
+ 'security' : jQuery('#security').val(),
+ };
+ jQuery
+ .post(
+ ajaxurl,
+ data,
+ function(response) {
+ if (postmanValidateAjaxResponseWithPopup(response)) {
+ if (response.success) {
+ totalPortsTested += 1;
+ if (port == 443) {
+ // API test
+ testEl
+ .html('<span style="color:green">&#x1f512; '
+ + response.data.protocol
+ + '</span>');
+ var cell = 'tr#' + socket.id
+ + " td.reported_id";
+ var p443El = jQuery(cell);
+ if (response.data.reported_hostname_domain_only) {
+ p443El
+ .html('<span>'
+ + response.data.reported_hostname_domain_only
+ + '</span>');
+ }
+ addConclusion(sprintf(
+ postman_port_test.https_success,
+ response.data.port,
+ socket.transport_name), true,
+ response.data.secure);
+ } else {
+ // SMTP test
+ testEl.html('<span style="color:green">'
+ + response.data.protocol
+ + '</span>');
+ inspectResponse(socket.id, response.data,
+ port);
+ var message = sprintf(postman_port_test.success,
+ port, hostname);
+ if (response.data.mitm) {
+ message += ' <span style="background-color:yellow">'
+ + sprintf(
+ postman_port_test.mitm,
+ response.data.reported_hostname_domain_only,
+ response.data.hostname_domain_only)
+ + '</span>';
+ }
+ addConclusion(message, true,
+ response.data.secure);
+ }
+ } else {
+ if (port == 443) {
+ // API test
+ testEl.html('<span style="color:red">'
+ + postman_port_test.no + '</span>');
+ totalPortsTested += 1;
+ var p443El = jQuery(cell);
+ addConclusion(sprintf(postman_port_test.try_dif_smtp,
+ port, hostname), false,
+ response.data.secure);
+ } else {
+ if (response.data.try_smtps) {
+ // start the SMTPS test
+ portTest3(socket, hostname, port, open);
+ } else {
+ testEl.html('<span style="color:red">'
+ + postman_port_test.no + '</span>');
+ totalPortsTested += 1;
+ addConclusion(sprintf(
+ postman_port_test.blocked, port),
+ false, response.data.secure);
+ show('#blocked-port-help');
+ }
+ }
+ }
+ enableButtonCheck();
+ }
+ }).fail(
+ function(response) {
+ totalPortsTested += 1;
+ testEl.html('<span style="color:red">'
+ + postman_email_test.ajax_error + "</span>");
+ enableButtonCheck();
+ });
+}
+function portTest3(socket, hostname, port, open) {
+ var cell = 'tr#' + socket.id + " td.service";
+ var testEl = jQuery(cell);
+ testEl.html('<span style="color:blue">' + postman_port_test.in_progress
+ + '</span>');
+ var data = {
+ 'action' : 'postman_test_smtps',
+ 'hostname' : hostname,
+ 'port' : port,
+ 'security' : jQuery('#security').val(),
+ };
+ jQuery
+ .post(
+ ajaxurl,
+ data,
+ function(response) {
+ if (postmanValidateAjaxResponseWithPopup(response)) {
+ if (response.success) {
+ if (response.data.protocol == 'SMTPS') {
+ testEl
+ .html('<span style="color:green">&#x1f512; '
+ + response.data.protocol
+ + '</span>');
+ } else {
+
+ testEl.html('<span style="color:green">'
+ + response.data.protocol
+ + '</span>');
+ }
+ inspectResponse(socket.id, response.data, port);
+ var message = sprintf(postman_port_test.success,
+ port, hostname);
+ if (response.data.mitm) {
+ message += ' <span style="background-color:yellow">'
+ + sprintf(
+ postman_port_test.mitm,
+ response.data.reported_hostname_domain_only,
+ response.data.hostname_domain_only
+ + '</span>');
+ }
+ addConclusion(message, true,
+ response.data.secure);
+ } else {
+ testEl.html('<span style="color:red">'
+ + postman_port_test.no + '</span>');
+ show('#blocked-port-help');
+ if (open) {
+ addConclusion(sprintf(postman_port_test.try_dif_smtp,
+ port, hostname), false,
+ response.data.secure);
+ } else {
+ addConclusion(sprintf(postman_port_test.blocked,
+ port), false, response.data.secure);
+ }
+ }
+ totalPortsTested += 1;
+ enableButtonCheck();
+ }
+ }).fail(
+ function(response) {
+ totalPortsTested += 1;
+ testEl.html('<span style="color:red">'
+ + postman_email_test.ajax_error + "</span>");
+ enableButtonCheck();
+ });
+}
+function enableButtonCheck() {
+ if (totalPortsTested >= portsToBeTested) {
+ enable(postman_begin_test_button_id);
+ hideLoaderIcon();
+ jQuery(postman_hostname_element_name).focus();
+ }
+}
+function inspectResponse(id, response, port) {
+ var cell = 'tr#' + id + " td.reported_id";
+ var testEl = jQuery(cell);
+ if (response.reported_hostname_domain_only) {
+ testEl.html('<span>' + response.reported_hostname_domain_only
+ + '</span>');
+ }
+ var cell = 'tr#' + id + " td.service";
+ var testEl = jQuery(cell);
+ if (response.protocol == 'SMTPS') {
+ testEl.html('<span style="color:green">&#x1f512; SMTPS</span>');
+ } else if (response.start_tls) {
+ testEl.html('<span style="color:green">&#x1f512; SMTP-STARTTLS</span>');
+ } else {
+ testEl.html('<span style="color:green">SMTP</span>');
+ }
+ var cell = 'tr#' + id + " td.auth_none";
+ var testEl = jQuery(cell);
+ if (response.auth_none) {
+ testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>');
+ } else {
+ testEl.html('<span>' + postman_port_test.no + '</span>');
+ }
+ var cell = 'tr#' + id + " td.auth_plain";
+ var testEl = jQuery(cell);
+ if (response.auth_plain) {
+ testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>');
+ } else {
+ testEl.html('<span>' + postman_port_test.no + '</span>');
+ }
+ var cell = 'tr#' + id + " td.auth_login";
+ var testEl = jQuery(cell);
+ if (response.auth_login) {
+ testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>');
+ } else {
+ testEl.html('<span>' + postman_port_test.no + '</span>');
+ }
+ var cell = 'tr#' + id + " td.auth_crammd5";
+ var testEl = jQuery(cell);
+ if (response.auth_crammd5) {
+ testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>');
+ } else {
+ testEl.html('<span>' + postman_port_test.no + '</span>');
+ }
+ var cell = 'tr#' + id + " td.auth_xoauth2";
+ var testEl = jQuery(cell);
+ if (response.auth_xoauth) {
+ testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>');
+ } else {
+ testEl.html('<span>' + postman_port_test.no + '</span>');
+ }
+}
+function resetView(id) {
+ var testEl = jQuery('tr#' + id + ' td.resettable');
+ testEl.html('-');
+}
+function addConclusion(message, success, isSecure) {
+ show('#conclusion');
+ var secureIcon = '';
+ if (isSecure) {
+ secureIcon = '&#x1f512; ';
+ }
+ if (success) {
+ message = '&#9989; ' + secureIcon + message;
+ } else {
+ message = '&#10060; ' + secureIcon + message;
+ }
+ jQuery('ol.conclusion').append('<li>' + message + '</li>');
+} \ No newline at end of file
diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php
new file mode 100644
index 0000000..8f353c8
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php
@@ -0,0 +1,6484 @@
+<?php
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+$tldTree = array('ac' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'mil' => array(),
+'org' => array()),
+'ad' => array('nom' => array()),
+'ae' => array('co' => array(),
+'net' => array(),
+'org' => array(),
+'sch' => array(),
+'ac' => array(),
+'gov' => array(),
+'mil' => array()),
+'aero' => array('accident-investigation' => array(),
+'accident-prevention' => array(),
+'aerobatic' => array(),
+'aeroclub' => array(),
+'aerodrome' => array(),
+'agents' => array(),
+'aircraft' => array(),
+'airline' => array(),
+'airport' => array(),
+'air-surveillance' => array(),
+'airtraffic' => array(),
+'air-traffic-control' => array(),
+'ambulance' => array(),
+'amusement' => array(),
+'association' => array(),
+'author' => array(),
+'ballooning' => array(),
+'broker' => array(),
+'caa' => array(),
+'cargo' => array(),
+'catering' => array(),
+'certification' => array(),
+'championship' => array(),
+'charter' => array(),
+'civilaviation' => array(),
+'club' => array(),
+'conference' => array(),
+'consultant' => array(),
+'consulting' => array(),
+'control' => array(),
+'council' => array(),
+'crew' => array(),
+'design' => array(),
+'dgca' => array(),
+'educator' => array(),
+'emergency' => array(),
+'engine' => array(),
+'engineer' => array(),
+'entertainment' => array(),
+'equipment' => array(),
+'exchange' => array(),
+'express' => array(),
+'federation' => array(),
+'flight' => array(),
+'freight' => array(),
+'fuel' => array(),
+'gliding' => array(),
+'government' => array(),
+'groundhandling' => array(),
+'group' => array(),
+'hanggliding' => array(),
+'homebuilt' => array(),
+'insurance' => array(),
+'journal' => array(),
+'journalist' => array(),
+'leasing' => array(),
+'logistics' => array(),
+'magazine' => array(),
+'maintenance' => array(),
+'marketplace' => array(),
+'media' => array(),
+'microlight' => array(),
+'modelling' => array(),
+'navigation' => array(),
+'parachuting' => array(),
+'paragliding' => array(),
+'passenger-association' => array(),
+'pilot' => array(),
+'press' => array(),
+'production' => array(),
+'recreation' => array(),
+'repbody' => array(),
+'res' => array(),
+'research' => array(),
+'rotorcraft' => array(),
+'safety' => array(),
+'scientist' => array(),
+'services' => array(),
+'show' => array(),
+'skydiving' => array(),
+'software' => array(),
+'student' => array(),
+'taxi' => array(),
+'trader' => array(),
+'trading' => array(),
+'trainer' => array(),
+'union' => array(),
+'workinggroup' => array(),
+'works' => array()),
+'af' => array('gov' => array(),
+'com' => array(),
+'org' => array(),
+'net' => array(),
+'edu' => array()),
+'ag' => array('com' => array(),
+'org' => array(),
+'net' => array(),
+'co' => array(),
+'nom' => array()),
+'ai' => array('off' => array(),
+'com' => array(),
+'net' => array(),
+'org' => array()),
+'al' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array()),
+'am' => array(),
+'an' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array()),
+'ao' => array('ed' => array(),
+'gv' => array(),
+'og' => array(),
+'co' => array(),
+'pb' => array(),
+'it' => array()),
+'aq' => array(),
+'ar' => array('com' => array('blogspot' => array()),
+'edu' => array(),
+'gob' => array(),
+'gov' => array(),
+'int' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array(),
+'tur' => array()),
+'arpa' => array('e164' => array(),
+'in-addr' => array(),
+'ip6' => array(),
+'iris' => array(),
+'uri' => array(),
+'urn' => array()),
+'as' => array('gov' => array()),
+'asia' => array(),
+'at' => array('ac' => array(),
+'co' => array('blogspot' => array()),
+'gv' => array(),
+'or' => array(),
+'biz' => array(),
+'info' => array(),
+'priv' => array()),
+'au' => array('com' => array('blogspot' => array()),
+'net' => array(),
+'org' => array(),
+'edu' => array('act' => array(),
+'nsw' => array(),
+'nt' => array(),
+'qld' => array(),
+'sa' => array(),
+'tas' => array(),
+'vic' => array(),
+'wa' => array()),
+'gov' => array('qld' => array(),
+'sa' => array(),
+'tas' => array(),
+'vic' => array(),
+'wa' => array()),
+'asn' => array(),
+'id' => array(),
+'info' => array(),
+'conf' => array(),
+'oz' => array(),
+'act' => array(),
+'nsw' => array(),
+'nt' => array(),
+'qld' => array(),
+'sa' => array(),
+'tas' => array(),
+'vic' => array(),
+'wa' => array()),
+'aw' => array('com' => array()),
+'ax' => array(),
+'az' => array('com' => array(),
+'net' => array(),
+'int' => array(),
+'gov' => array(),
+'org' => array(),
+'edu' => array(),
+'info' => array(),
+'pp' => array(),
+'mil' => array(),
+'name' => array(),
+'pro' => array(),
+'biz' => array()),
+'ba' => array('org' => array(),
+'net' => array(),
+'edu' => array(),
+'gov' => array(),
+'mil' => array(),
+'unsa' => array(),
+'unbi' => array(),
+'co' => array(),
+'com' => array(),
+'rs' => array()),
+'bb' => array('biz' => array(),
+'co' => array(),
+'com' => array(),
+'edu' => array(),
+'gov' => array(),
+'info' => array(),
+'net' => array(),
+'org' => array(),
+'store' => array(),
+'tv' => array()),
+'bd' => array('*' => array()),
+'be' => array('ac' => array(),
+'blogspot' => array()),
+'bf' => array('gov' => array()),
+'bg' => array('a' => array(),
+'b' => array(),
+'c' => array(),
+'d' => array(),
+'e' => array(),
+'f' => array(),
+'g' => array(),
+'h' => array(),
+'i' => array(),
+'j' => array(),
+'k' => array(),
+'l' => array(),
+'m' => array(),
+'n' => array(),
+'o' => array(),
+'p' => array(),
+'q' => array(),
+'r' => array(),
+'s' => array(),
+'t' => array(),
+'u' => array(),
+'v' => array(),
+'w' => array(),
+'x' => array(),
+'y' => array(),
+'z' => array(),
+'0' => array(),
+'1' => array(),
+'2' => array(),
+'3' => array(),
+'4' => array(),
+'5' => array(),
+'6' => array(),
+'7' => array(),
+'8' => array(),
+'9' => array()),
+'bh' => array('com' => array(),
+'edu' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array()),
+'bi' => array('co' => array(),
+'com' => array(),
+'edu' => array(),
+'or' => array(),
+'org' => array()),
+'biz' => array('dyndns' => array(),
+'for-better' => array(),
+'for-more' => array(),
+'for-some' => array(),
+'for-the' => array(),
+'selfip' => array(),
+'webhop' => array()),
+'bj' => array('asso' => array(),
+'barreau' => array(),
+'gouv' => array(),
+'blogspot' => array()),
+'bm' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array()),
+'bn' => array('*' => array()),
+'bo' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'gob' => array(),
+'int' => array(),
+'org' => array(),
+'net' => array(),
+'mil' => array(),
+'tv' => array()),
+'br' => array('adm' => array(),
+'adv' => array(),
+'agr' => array(),
+'am' => array(),
+'arq' => array(),
+'art' => array(),
+'ato' => array(),
+'b' => array(),
+'bio' => array(),
+'blog' => array(),
+'bmd' => array(),
+'cim' => array(),
+'cng' => array(),
+'cnt' => array(),
+'com' => array('blogspot' => array()),
+'coop' => array(),
+'ecn' => array(),
+'eco' => array(),
+'edu' => array(),
+'emp' => array(),
+'eng' => array(),
+'esp' => array(),
+'etc' => array(),
+'eti' => array(),
+'far' => array(),
+'flog' => array(),
+'fm' => array(),
+'fnd' => array(),
+'fot' => array(),
+'fst' => array(),
+'g12' => array(),
+'ggf' => array(),
+'gov' => array(),
+'imb' => array(),
+'ind' => array(),
+'inf' => array(),
+'jor' => array(),
+'jus' => array(),
+'leg' => array(),
+'lel' => array(),
+'mat' => array(),
+'med' => array(),
+'mil' => array(),
+'mp' => array(),
+'mus' => array(),
+'net' => array(),
+'nom' => array('*' => array()),
+'not' => array(),
+'ntr' => array(),
+'odo' => array(),
+'org' => array(),
+'ppg' => array(),
+'pro' => array(),
+'psc' => array(),
+'psi' => array(),
+'qsl' => array(),
+'radio' => array(),
+'rec' => array(),
+'slg' => array(),
+'srv' => array(),
+'taxi' => array(),
+'teo' => array(),
+'tmp' => array(),
+'trd' => array(),
+'tur' => array(),
+'tv' => array(),
+'vet' => array(),
+'vlog' => array(),
+'wiki' => array(),
+'zlg' => array()),
+'bs' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array()),
+'bt' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array()),
+'bv' => array(),
+'bw' => array('co' => array(),
+'org' => array()),
+'by' => array('gov' => array(),
+'mil' => array(),
+'com' => array(),
+'of' => array()),
+'bz' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array(),
+'za' => array()),
+'ca' => array('ab' => array(),
+'bc' => array(),
+'mb' => array(),
+'nb' => array(),
+'nf' => array(),
+'nl' => array(),
+'ns' => array(),
+'nt' => array(),
+'nu' => array(),
+'on' => array(),
+'pe' => array(),
+'qc' => array(),
+'sk' => array(),
+'yk' => array(),
+'gc' => array(),
+'co' => array(),
+'blogspot' => array()),
+'cat' => array(),
+'cc' => array('ftpaccess' => array(),
+'game-server' => array(),
+'myphotos' => array(),
+'scrapping' => array()),
+'cd' => array('gov' => array()),
+'cf' => array('blogspot' => array()),
+'cg' => array(),
+'ch' => array('blogspot' => array()),
+'ci' => array('org' => array(),
+'or' => array(),
+'com' => array(),
+'co' => array(),
+'edu' => array(),
+'ed' => array(),
+'ac' => array(),
+'net' => array(),
+'go' => array(),
+'asso' => array(),
+'aéroport' => array(),
+'int' => array(),
+'presse' => array(),
+'md' => array(),
+'gouv' => array()),
+'ck' => array('*' => array(),
+'www' => array('!' => '')),
+'cl' => array('gov' => array(),
+'gob' => array(),
+'co' => array(),
+'mil' => array()),
+'cm' => array('co' => array(),
+'com' => array(),
+'gov' => array(),
+'net' => array()),
+'cn' => array('ac' => array(),
+'com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array(),
+'mil' => array(),
+'公司' => array(),
+'网络' => array(),
+'網絡' => array(),
+'ah' => array(),
+'bj' => array(),
+'cq' => array(),
+'fj' => array(),
+'gd' => array(),
+'gs' => array(),
+'gz' => array(),
+'gx' => array(),
+'ha' => array(),
+'hb' => array(),
+'he' => array(),
+'hi' => array(),
+'hl' => array(),
+'hn' => array(),
+'jl' => array(),
+'js' => array(),
+'jx' => array(),
+'ln' => array(),
+'nm' => array(),
+'nx' => array(),
+'qh' => array(),
+'sc' => array(),
+'sd' => array(),
+'sh' => array(),
+'sn' => array(),
+'sx' => array(),
+'tj' => array(),
+'xj' => array(),
+'xz' => array(),
+'yn' => array(),
+'zj' => array(),
+'hk' => array(),
+'mo' => array(),
+'tw' => array(),
+'amazonaws' => array('compute' => array('cn-north-1' => array()))),
+'co' => array('arts' => array(),
+'com' => array(),
+'edu' => array(),
+'firm' => array(),
+'gov' => array(),
+'info' => array(),
+'int' => array(),
+'mil' => array(),
+'net' => array(),
+'nom' => array(),
+'org' => array(),
+'rec' => array(),
+'web' => array()),
+'com' => array('amazonaws' => array('compute' => array('ap-northeast-1' => array(),
+'ap-southeast-1' => array(),
+'ap-southeast-2' => array(),
+'eu-west-1' => array(),
+'sa-east-1' => array(),
+'us-gov-west-1' => array(),
+'us-west-1' => array(),
+'us-west-2' => array()),
+'compute-1' => array('z-1' => array(),
+'z-2' => array()),
+'us-east-1' => array(),
+'elb' => array(),
+'s3' => array(),
+'s3-us-west-2' => array(),
+'s3-us-west-1' => array(),
+'s3-eu-west-1' => array(),
+'s3-ap-southeast-1' => array(),
+'s3-ap-southeast-2' => array(),
+'s3-ap-northeast-1' => array(),
+'s3-sa-east-1' => array(),
+'s3-us-gov-west-1' => array(),
+'s3-fips-us-gov-west-1' => array(),
+'s3-website-us-east-1' => array(),
+'s3-website-us-west-2' => array(),
+'s3-website-us-west-1' => array(),
+'s3-website-eu-west-1' => array(),
+'s3-website-ap-southeast-1' => array(),
+'s3-website-ap-southeast-2' => array(),
+'s3-website-ap-northeast-1' => array(),
+'s3-website-sa-east-1' => array(),
+'s3-website-us-gov-west-1' => array()),
+'elasticbeanstalk' => array(),
+'betainabox' => array(),
+'ar' => array(),
+'br' => array(),
+'cn' => array(),
+'de' => array(),
+'eu' => array(),
+'gb' => array(),
+'hu' => array(),
+'jpn' => array(),
+'kr' => array(),
+'mex' => array(),
+'no' => array(),
+'qc' => array(),
+'ru' => array(),
+'sa' => array(),
+'se' => array(),
+'uk' => array(),
+'us' => array(),
+'uy' => array(),
+'za' => array(),
+'africa' => array(),
+'gr' => array(),
+'co' => array(),
+'cloudcontrolled' => array(),
+'cloudcontrolapp' => array(),
+'dreamhosters' => array(),
+'dyndns-at-home' => array(),
+'dyndns-at-work' => array(),
+'dyndns-blog' => array(),
+'dyndns-free' => array(),
+'dyndns-home' => array(),
+'dyndns-ip' => array(),
+'dyndns-mail' => array(),
+'dyndns-office' => array(),
+'dyndns-pics' => array(),
+'dyndns-remote' => array(),
+'dyndns-server' => array(),
+'dyndns-web' => array(),
+'dyndns-wiki' => array(),
+'dyndns-work' => array(),
+'blogdns' => array(),
+'cechire' => array(),
+'dnsalias' => array(),
+'dnsdojo' => array(),
+'doesntexist' => array(),
+'dontexist' => array(),
+'doomdns' => array(),
+'dyn-o-saur' => array(),
+'dynalias' => array(),
+'est-a-la-maison' => array(),
+'est-a-la-masion' => array(),
+'est-le-patron' => array(),
+'est-mon-blogueur' => array(),
+'from-ak' => array(),
+'from-al' => array(),
+'from-ar' => array(),
+'from-ca' => array(),
+'from-ct' => array(),
+'from-dc' => array(),
+'from-de' => array(),
+'from-fl' => array(),
+'from-ga' => array(),
+'from-hi' => array(),
+'from-ia' => array(),
+'from-id' => array(),
+'from-il' => array(),
+'from-in' => array(),
+'from-ks' => array(),
+'from-ky' => array(),
+'from-ma' => array(),
+'from-md' => array(),
+'from-mi' => array(),
+'from-mn' => array(),
+'from-mo' => array(),
+'from-ms' => array(),
+'from-mt' => array(),
+'from-nc' => array(),
+'from-nd' => array(),
+'from-ne' => array(),
+'from-nh' => array(),
+'from-nj' => array(),
+'from-nm' => array(),
+'from-nv' => array(),
+'from-oh' => array(),
+'from-ok' => array(),
+'from-or' => array(),
+'from-pa' => array(),
+'from-pr' => array(),
+'from-ri' => array(),
+'from-sc' => array(),
+'from-sd' => array(),
+'from-tn' => array(),
+'from-tx' => array(),
+'from-ut' => array(),
+'from-va' => array(),
+'from-vt' => array(),
+'from-wa' => array(),
+'from-wi' => array(),
+'from-wv' => array(),
+'from-wy' => array(),
+'getmyip' => array(),
+'gotdns' => array(),
+'hobby-site' => array(),
+'homelinux' => array(),
+'homeunix' => array(),
+'iamallama' => array(),
+'is-a-anarchist' => array(),
+'is-a-blogger' => array(),
+'is-a-bookkeeper' => array(),
+'is-a-bulls-fan' => array(),
+'is-a-caterer' => array(),
+'is-a-chef' => array(),
+'is-a-conservative' => array(),
+'is-a-cpa' => array(),
+'is-a-cubicle-slave' => array(),
+'is-a-democrat' => array(),
+'is-a-designer' => array(),
+'is-a-doctor' => array(),
+'is-a-financialadvisor' => array(),
+'is-a-geek' => array(),
+'is-a-green' => array(),
+'is-a-guru' => array(),
+'is-a-hard-worker' => array(),
+'is-a-hunter' => array(),
+'is-a-landscaper' => array(),
+'is-a-lawyer' => array(),
+'is-a-liberal' => array(),
+'is-a-libertarian' => array(),
+'is-a-llama' => array(),
+'is-a-musician' => array(),
+'is-a-nascarfan' => array(),
+'is-a-nurse' => array(),
+'is-a-painter' => array(),
+'is-a-personaltrainer' => array(),
+'is-a-photographer' => array(),
+'is-a-player' => array(),
+'is-a-republican' => array(),
+'is-a-rockstar' => array(),
+'is-a-socialist' => array(),
+'is-a-student' => array(),
+'is-a-teacher' => array(),
+'is-a-techie' => array(),
+'is-a-therapist' => array(),
+'is-an-accountant' => array(),
+'is-an-actor' => array(),
+'is-an-actress' => array(),
+'is-an-anarchist' => array(),
+'is-an-artist' => array(),
+'is-an-engineer' => array(),
+'is-an-entertainer' => array(),
+'is-certified' => array(),
+'is-gone' => array(),
+'is-into-anime' => array(),
+'is-into-cars' => array(),
+'is-into-cartoons' => array(),
+'is-into-games' => array(),
+'is-leet' => array(),
+'is-not-certified' => array(),
+'is-slick' => array(),
+'is-uberleet' => array(),
+'is-with-theband' => array(),
+'isa-geek' => array(),
+'isa-hockeynut' => array(),
+'issmarterthanyou' => array(),
+'likes-pie' => array(),
+'likescandy' => array(),
+'neat-url' => array(),
+'saves-the-whales' => array(),
+'selfip' => array(),
+'sells-for-less' => array(),
+'sells-for-u' => array(),
+'servebbs' => array(),
+'simple-url' => array(),
+'space-to-rent' => array(),
+'teaches-yoga' => array(),
+'writesthisblog' => array(),
+'firebaseapp' => array(),
+'flynnhub' => array(),
+'githubusercontent' => array(),
+'ro' => array(),
+'appspot' => array(),
+'blogspot' => array(),
+'codespot' => array(),
+'googleapis' => array(),
+'googlecode' => array(),
+'withgoogle' => array(),
+'herokuapp' => array(),
+'herokussl' => array(),
+'nfshost' => array(),
+'operaunite' => array(),
+'outsystemscloud' => array(),
+'rhcloud' => array(),
+'yolasite' => array()),
+'coop' => array(),
+'cr' => array('ac' => array(),
+'co' => array(),
+'ed' => array(),
+'fi' => array(),
+'go' => array(),
+'or' => array(),
+'sa' => array()),
+'cu' => array('com' => array(),
+'edu' => array(),
+'org' => array(),
+'net' => array(),
+'gov' => array(),
+'inf' => array()),
+'cv' => array('blogspot' => array()),
+'cw' => array('com' => array(),
+'edu' => array(),
+'net' => array(),
+'org' => array()),
+'cx' => array('gov' => array(),
+'ath' => array()),
+'cy' => array('*' => array()),
+'cz' => array('blogspot' => array()),
+'de' => array('com' => array(),
+'fuettertdasnetz' => array(),
+'isteingeek' => array(),
+'istmein' => array(),
+'lebtimnetz' => array(),
+'leitungsen' => array(),
+'traeumtgerade' => array(),
+'blogspot' => array()),
+'dj' => array(),
+'dk' => array('blogspot' => array()),
+'dm' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array()),
+'do' => array('art' => array(),
+'com' => array(),
+'edu' => array(),
+'gob' => array(),
+'gov' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array(),
+'sld' => array(),
+'web' => array()),
+'dz' => array('com' => array(),
+'org' => array(),
+'net' => array(),
+'gov' => array(),
+'edu' => array(),
+'asso' => array(),
+'pol' => array(),
+'art' => array()),
+'ec' => array('com' => array(),
+'info' => array(),
+'net' => array(),
+'fin' => array(),
+'k12' => array(),
+'med' => array(),
+'pro' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array(),
+'gob' => array(),
+'mil' => array()),
+'edu' => array(),
+'ee' => array('edu' => array(),
+'gov' => array(),
+'riik' => array(),
+'lib' => array(),
+'med' => array(),
+'com' => array(),
+'pri' => array(),
+'aip' => array(),
+'org' => array(),
+'fie' => array()),
+'eg' => array('com' => array(),
+'edu' => array(),
+'eun' => array(),
+'gov' => array(),
+'mil' => array(),
+'name' => array(),
+'net' => array(),
+'org' => array(),
+'sci' => array()),
+'er' => array('*' => array()),
+'es' => array('com' => array('blogspot' => array()),
+'nom' => array(),
+'org' => array(),
+'gob' => array(),
+'edu' => array()),
+'et' => array('com' => array(),
+'gov' => array(),
+'org' => array(),
+'edu' => array(),
+'biz' => array(),
+'name' => array(),
+'info' => array()),
+'eu' => array(),
+'fi' => array('aland' => array(),
+'blogspot' => array(),
+'iki' => array()),
+'fj' => array('*' => array()),
+'fk' => array('*' => array()),
+'fm' => array(),
+'fo' => array(),
+'fr' => array('com' => array(),
+'asso' => array(),
+'nom' => array(),
+'prd' => array(),
+'presse' => array(),
+'tm' => array(),
+'aeroport' => array(),
+'assedic' => array(),
+'avocat' => array(),
+'avoues' => array(),
+'cci' => array(),
+'chambagri' => array(),
+'chirurgiens-dentistes' => array(),
+'experts-comptables' => array(),
+'geometre-expert' => array(),
+'gouv' => array(),
+'greta' => array(),
+'huissier-justice' => array(),
+'medecin' => array(),
+'notaires' => array(),
+'pharmacien' => array(),
+'port' => array(),
+'veterinaire' => array(),
+'blogspot' => array()),
+'ga' => array(),
+'gb' => array(),
+'gd' => array(),
+'ge' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'mil' => array(),
+'net' => array(),
+'pvt' => array()),
+'gf' => array(),
+'gg' => array('co' => array(),
+'net' => array(),
+'org' => array()),
+'gh' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'mil' => array()),
+'gi' => array('com' => array(),
+'ltd' => array(),
+'gov' => array(),
+'mod' => array(),
+'edu' => array(),
+'org' => array()),
+'gl' => array(),
+'gm' => array(),
+'gn' => array('ac' => array(),
+'com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'net' => array()),
+'gov' => array(),
+'gp' => array('com' => array(),
+'net' => array(),
+'mobi' => array(),
+'edu' => array(),
+'org' => array(),
+'asso' => array()),
+'gq' => array(),
+'gr' => array('com' => array(),
+'edu' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'blogspot' => array()),
+'gs' => array(),
+'gt' => array('com' => array(),
+'edu' => array(),
+'gob' => array(),
+'ind' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array()),
+'gu' => array('*' => array()),
+'gw' => array(),
+'gy' => array('co' => array(),
+'com' => array(),
+'net' => array()),
+'hk' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'idv' => array(),
+'net' => array(),
+'org' => array(),
+'公司' => array(),
+'教育' => array(),
+'敎育' => array(),
+'政府' => array(),
+'個人' => array(),
+'个人' => array(),
+'箇人' => array(),
+'網络' => array(),
+'网络' => array(),
+'组織' => array(),
+'網絡' => array(),
+'网絡' => array(),
+'组织' => array(),
+'組織' => array(),
+'組织' => array(),
+'blogspot' => array()),
+'hm' => array(),
+'hn' => array('com' => array(),
+'edu' => array(),
+'org' => array(),
+'net' => array(),
+'mil' => array(),
+'gob' => array()),
+'hr' => array('iz' => array(),
+'from' => array(),
+'name' => array(),
+'com' => array()),
+'ht' => array('com' => array(),
+'shop' => array(),
+'firm' => array(),
+'info' => array(),
+'adult' => array(),
+'net' => array(),
+'pro' => array(),
+'org' => array(),
+'med' => array(),
+'art' => array(),
+'coop' => array(),
+'pol' => array(),
+'asso' => array(),
+'edu' => array(),
+'rel' => array(),
+'gouv' => array(),
+'perso' => array()),
+'hu' => array('co' => array(),
+'info' => array(),
+'org' => array(),
+'priv' => array(),
+'sport' => array(),
+'tm' => array(),
+'2000' => array(),
+'agrar' => array(),
+'bolt' => array(),
+'casino' => array(),
+'city' => array(),
+'erotica' => array(),
+'erotika' => array(),
+'film' => array(),
+'forum' => array(),
+'games' => array(),
+'hotel' => array(),
+'ingatlan' => array(),
+'jogasz' => array(),
+'konyvelo' => array(),
+'lakas' => array(),
+'media' => array(),
+'news' => array(),
+'reklam' => array(),
+'sex' => array(),
+'shop' => array(),
+'suli' => array(),
+'szex' => array(),
+'tozsde' => array(),
+'utazas' => array(),
+'video' => array(),
+'blogspot' => array()),
+'id' => array('ac' => array(),
+'biz' => array(),
+'co' => array(),
+'desa' => array(),
+'go' => array(),
+'mil' => array(),
+'my' => array(),
+'net' => array(),
+'or' => array(),
+'sch' => array(),
+'web' => array()),
+'ie' => array('gov' => array(),
+'blogspot' => array()),
+'il' => array('*' => array(),
+'co' => array('blogspot' => array())),
+'im' => array('ac' => array(),
+'co' => array('ltd' => array(),
+'plc' => array()),
+'com' => array(),
+'net' => array(),
+'org' => array(),
+'tt' => array(),
+'tv' => array()),
+'in' => array('co' => array(),
+'firm' => array(),
+'net' => array(),
+'org' => array(),
+'gen' => array(),
+'ind' => array(),
+'nic' => array(),
+'ac' => array(),
+'edu' => array(),
+'res' => array(),
+'gov' => array(),
+'mil' => array(),
+'blogspot' => array()),
+'info' => array('dyndns' => array(),
+'barrel-of-knowledge' => array(),
+'barrell-of-knowledge' => array(),
+'for-our' => array(),
+'groks-the' => array(),
+'groks-this' => array(),
+'here-for-more' => array(),
+'knowsitall' => array(),
+'selfip' => array(),
+'webhop' => array()),
+'int' => array('eu' => array()),
+'io' => array('com' => array(),
+'github' => array(),
+'nid' => array()),
+'iq' => array('gov' => array(),
+'edu' => array(),
+'mil' => array(),
+'com' => array(),
+'org' => array(),
+'net' => array()),
+'ir' => array('ac' => array(),
+'co' => array(),
+'gov' => array(),
+'id' => array(),
+'net' => array(),
+'org' => array(),
+'sch' => array(),
+'ایران' => array(),
+'ايران' => array()),
+'is' => array('net' => array(),
+'com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'int' => array(),
+'cupcake' => array()),
+'it' => array('gov' => array(),
+'edu' => array(),
+'abr' => array(),
+'abruzzo' => array(),
+'aosta-valley' => array(),
+'aostavalley' => array(),
+'bas' => array(),
+'basilicata' => array(),
+'cal' => array(),
+'calabria' => array(),
+'cam' => array(),
+'campania' => array(),
+'emilia-romagna' => array(),
+'emiliaromagna' => array(),
+'emr' => array(),
+'friuli-v-giulia' => array(),
+'friuli-ve-giulia' => array(),
+'friuli-vegiulia' => array(),
+'friuli-venezia-giulia' => array(),
+'friuli-veneziagiulia' => array(),
+'friuli-vgiulia' => array(),
+'friuliv-giulia' => array(),
+'friulive-giulia' => array(),
+'friulivegiulia' => array(),
+'friulivenezia-giulia' => array(),
+'friuliveneziagiulia' => array(),
+'friulivgiulia' => array(),
+'fvg' => array(),
+'laz' => array(),
+'lazio' => array(),
+'lig' => array(),
+'liguria' => array(),
+'lom' => array(),
+'lombardia' => array(),
+'lombardy' => array(),
+'lucania' => array(),
+'mar' => array(),
+'marche' => array(),
+'mol' => array(),
+'molise' => array(),
+'piedmont' => array(),
+'piemonte' => array(),
+'pmn' => array(),
+'pug' => array(),
+'puglia' => array(),
+'sar' => array(),
+'sardegna' => array(),
+'sardinia' => array(),
+'sic' => array(),
+'sicilia' => array(),
+'sicily' => array(),
+'taa' => array(),
+'tos' => array(),
+'toscana' => array(),
+'trentino-a-adige' => array(),
+'trentino-aadige' => array(),
+'trentino-alto-adige' => array(),
+'trentino-altoadige' => array(),
+'trentino-s-tirol' => array(),
+'trentino-stirol' => array(),
+'trentino-sud-tirol' => array(),
+'trentino-sudtirol' => array(),
+'trentino-sued-tirol' => array(),
+'trentino-suedtirol' => array(),
+'trentinoa-adige' => array(),
+'trentinoaadige' => array(),
+'trentinoalto-adige' => array(),
+'trentinoaltoadige' => array(),
+'trentinos-tirol' => array(),
+'trentinostirol' => array(),
+'trentinosud-tirol' => array(),
+'trentinosudtirol' => array(),
+'trentinosued-tirol' => array(),
+'trentinosuedtirol' => array(),
+'tuscany' => array(),
+'umb' => array(),
+'umbria' => array(),
+'val-d-aosta' => array(),
+'val-daosta' => array(),
+'vald-aosta' => array(),
+'valdaosta' => array(),
+'valle-aosta' => array(),
+'valle-d-aosta' => array(),
+'valle-daosta' => array(),
+'valleaosta' => array(),
+'valled-aosta' => array(),
+'valledaosta' => array(),
+'vallee-aoste' => array(),
+'valleeaoste' => array(),
+'vao' => array(),
+'vda' => array(),
+'ven' => array(),
+'veneto' => array(),
+'ag' => array(),
+'agrigento' => array(),
+'al' => array(),
+'alessandria' => array(),
+'alto-adige' => array(),
+'altoadige' => array(),
+'an' => array(),
+'ancona' => array(),
+'andria-barletta-trani' => array(),
+'andria-trani-barletta' => array(),
+'andriabarlettatrani' => array(),
+'andriatranibarletta' => array(),
+'ao' => array(),
+'aosta' => array(),
+'aoste' => array(),
+'ap' => array(),
+'aq' => array(),
+'aquila' => array(),
+'ar' => array(),
+'arezzo' => array(),
+'ascoli-piceno' => array(),
+'ascolipiceno' => array(),
+'asti' => array(),
+'at' => array(),
+'av' => array(),
+'avellino' => array(),
+'ba' => array(),
+'balsan' => array(),
+'bari' => array(),
+'barletta-trani-andria' => array(),
+'barlettatraniandria' => array(),
+'belluno' => array(),
+'benevento' => array(),
+'bergamo' => array(),
+'bg' => array(),
+'bi' => array(),
+'biella' => array(),
+'bl' => array(),
+'bn' => array(),
+'bo' => array(),
+'bologna' => array(),
+'bolzano' => array(),
+'bozen' => array(),
+'br' => array(),
+'brescia' => array(),
+'brindisi' => array(),
+'bs' => array(),
+'bt' => array(),
+'bz' => array(),
+'ca' => array(),
+'cagliari' => array(),
+'caltanissetta' => array(),
+'campidano-medio' => array(),
+'campidanomedio' => array(),
+'campobasso' => array(),
+'carbonia-iglesias' => array(),
+'carboniaiglesias' => array(),
+'carrara-massa' => array(),
+'carraramassa' => array(),
+'caserta' => array(),
+'catania' => array(),
+'catanzaro' => array(),
+'cb' => array(),
+'ce' => array(),
+'cesena-forli' => array(),
+'cesenaforli' => array(),
+'ch' => array(),
+'chieti' => array(),
+'ci' => array(),
+'cl' => array(),
+'cn' => array(),
+'co' => array(),
+'como' => array(),
+'cosenza' => array(),
+'cr' => array(),
+'cremona' => array(),
+'crotone' => array(),
+'cs' => array(),
+'ct' => array(),
+'cuneo' => array(),
+'cz' => array(),
+'dell-ogliastra' => array(),
+'dellogliastra' => array(),
+'en' => array(),
+'enna' => array(),
+'fc' => array(),
+'fe' => array(),
+'fermo' => array(),
+'ferrara' => array(),
+'fg' => array(),
+'fi' => array(),
+'firenze' => array(),
+'florence' => array(),
+'fm' => array(),
+'foggia' => array(),
+'forli-cesena' => array(),
+'forlicesena' => array(),
+'fr' => array(),
+'frosinone' => array(),
+'ge' => array(),
+'genoa' => array(),
+'genova' => array(),
+'go' => array(),
+'gorizia' => array(),
+'gr' => array(),
+'grosseto' => array(),
+'iglesias-carbonia' => array(),
+'iglesiascarbonia' => array(),
+'im' => array(),
+'imperia' => array(),
+'is' => array(),
+'isernia' => array(),
+'kr' => array(),
+'la-spezia' => array(),
+'laquila' => array(),
+'laspezia' => array(),
+'latina' => array(),
+'lc' => array(),
+'le' => array(),
+'lecce' => array(),
+'lecco' => array(),
+'li' => array(),
+'livorno' => array(),
+'lo' => array(),
+'lodi' => array(),
+'lt' => array(),
+'lu' => array(),
+'lucca' => array(),
+'macerata' => array(),
+'mantova' => array(),
+'massa-carrara' => array(),
+'massacarrara' => array(),
+'matera' => array(),
+'mb' => array(),
+'mc' => array(),
+'me' => array(),
+'medio-campidano' => array(),
+'mediocampidano' => array(),
+'messina' => array(),
+'mi' => array(),
+'milan' => array(),
+'milano' => array(),
+'mn' => array(),
+'mo' => array(),
+'modena' => array(),
+'monza-brianza' => array(),
+'monza-e-della-brianza' => array(),
+'monza' => array(),
+'monzabrianza' => array(),
+'monzaebrianza' => array(),
+'monzaedellabrianza' => array(),
+'ms' => array(),
+'mt' => array(),
+'na' => array(),
+'naples' => array(),
+'napoli' => array(),
+'no' => array(),
+'novara' => array(),
+'nu' => array(),
+'nuoro' => array(),
+'og' => array(),
+'ogliastra' => array(),
+'olbia-tempio' => array(),
+'olbiatempio' => array(),
+'or' => array(),
+'oristano' => array(),
+'ot' => array(),
+'pa' => array(),
+'padova' => array(),
+'padua' => array(),
+'palermo' => array(),
+'parma' => array(),
+'pavia' => array(),
+'pc' => array(),
+'pd' => array(),
+'pe' => array(),
+'perugia' => array(),
+'pesaro-urbino' => array(),
+'pesarourbino' => array(),
+'pescara' => array(),
+'pg' => array(),
+'pi' => array(),
+'piacenza' => array(),
+'pisa' => array(),
+'pistoia' => array(),
+'pn' => array(),
+'po' => array(),
+'pordenone' => array(),
+'potenza' => array(),
+'pr' => array(),
+'prato' => array(),
+'pt' => array(),
+'pu' => array(),
+'pv' => array(),
+'pz' => array(),
+'ra' => array(),
+'ragusa' => array(),
+'ravenna' => array(),
+'rc' => array(),
+'re' => array(),
+'reggio-calabria' => array(),
+'reggio-emilia' => array(),
+'reggiocalabria' => array(),
+'reggioemilia' => array(),
+'rg' => array(),
+'ri' => array(),
+'rieti' => array(),
+'rimini' => array(),
+'rm' => array(),
+'rn' => array(),
+'ro' => array(),
+'roma' => array(),
+'rome' => array(),
+'rovigo' => array(),
+'sa' => array(),
+'salerno' => array(),
+'sassari' => array(),
+'savona' => array(),
+'si' => array(),
+'siena' => array(),
+'siracusa' => array(),
+'so' => array(),
+'sondrio' => array(),
+'sp' => array(),
+'sr' => array(),
+'ss' => array(),
+'suedtirol' => array(),
+'sv' => array(),
+'ta' => array(),
+'taranto' => array(),
+'te' => array(),
+'tempio-olbia' => array(),
+'tempioolbia' => array(),
+'teramo' => array(),
+'terni' => array(),
+'tn' => array(),
+'to' => array(),
+'torino' => array(),
+'tp' => array(),
+'tr' => array(),
+'trani-andria-barletta' => array(),
+'trani-barletta-andria' => array(),
+'traniandriabarletta' => array(),
+'tranibarlettaandria' => array(),
+'trapani' => array(),
+'trentino' => array(),
+'trento' => array(),
+'treviso' => array(),
+'trieste' => array(),
+'ts' => array(),
+'turin' => array(),
+'tv' => array(),
+'ud' => array(),
+'udine' => array(),
+'urbino-pesaro' => array(),
+'urbinopesaro' => array(),
+'va' => array(),
+'varese' => array(),
+'vb' => array(),
+'vc' => array(),
+'ve' => array(),
+'venezia' => array(),
+'venice' => array(),
+'verbania' => array(),
+'vercelli' => array(),
+'verona' => array(),
+'vi' => array(),
+'vibo-valentia' => array(),
+'vibovalentia' => array(),
+'vicenza' => array(),
+'viterbo' => array(),
+'vr' => array(),
+'vs' => array(),
+'vt' => array(),
+'vv' => array(),
+'blogspot' => array()),
+'je' => array('co' => array(),
+'net' => array(),
+'org' => array()),
+'jm' => array('*' => array()),
+'jo' => array('com' => array(),
+'org' => array(),
+'net' => array(),
+'edu' => array(),
+'sch' => array(),
+'gov' => array(),
+'mil' => array(),
+'name' => array()),
+'jobs' => array(),
+'jp' => array('ac' => array(),
+'ad' => array(),
+'co' => array(),
+'ed' => array(),
+'go' => array(),
+'gr' => array(),
+'lg' => array(),
+'ne' => array(),
+'or' => array(),
+'aichi' => array('aisai' => array(),
+'ama' => array(),
+'anjo' => array(),
+'asuke' => array(),
+'chiryu' => array(),
+'chita' => array(),
+'fuso' => array(),
+'gamagori' => array(),
+'handa' => array(),
+'hazu' => array(),
+'hekinan' => array(),
+'higashiura' => array(),
+'ichinomiya' => array(),
+'inazawa' => array(),
+'inuyama' => array(),
+'isshiki' => array(),
+'iwakura' => array(),
+'kanie' => array(),
+'kariya' => array(),
+'kasugai' => array(),
+'kira' => array(),
+'kiyosu' => array(),
+'komaki' => array(),
+'konan' => array(),
+'kota' => array(),
+'mihama' => array(),
+'miyoshi' => array(),
+'nishio' => array(),
+'nisshin' => array(),
+'obu' => array(),
+'oguchi' => array(),
+'oharu' => array(),
+'okazaki' => array(),
+'owariasahi' => array(),
+'seto' => array(),
+'shikatsu' => array(),
+'shinshiro' => array(),
+'shitara' => array(),
+'tahara' => array(),
+'takahama' => array(),
+'tobishima' => array(),
+'toei' => array(),
+'togo' => array(),
+'tokai' => array(),
+'tokoname' => array(),
+'toyoake' => array(),
+'toyohashi' => array(),
+'toyokawa' => array(),
+'toyone' => array(),
+'toyota' => array(),
+'tsushima' => array(),
+'yatomi' => array()),
+'akita' => array('akita' => array(),
+'daisen' => array(),
+'fujisato' => array(),
+'gojome' => array(),
+'hachirogata' => array(),
+'happou' => array(),
+'higashinaruse' => array(),
+'honjo' => array(),
+'honjyo' => array(),
+'ikawa' => array(),
+'kamikoani' => array(),
+'kamioka' => array(),
+'katagami' => array(),
+'kazuno' => array(),
+'kitaakita' => array(),
+'kosaka' => array(),
+'kyowa' => array(),
+'misato' => array(),
+'mitane' => array(),
+'moriyoshi' => array(),
+'nikaho' => array(),
+'noshiro' => array(),
+'odate' => array(),
+'oga' => array(),
+'ogata' => array(),
+'semboku' => array(),
+'yokote' => array(),
+'yurihonjo' => array()),
+'aomori' => array('aomori' => array(),
+'gonohe' => array(),
+'hachinohe' => array(),
+'hashikami' => array(),
+'hiranai' => array(),
+'hirosaki' => array(),
+'itayanagi' => array(),
+'kuroishi' => array(),
+'misawa' => array(),
+'mutsu' => array(),
+'nakadomari' => array(),
+'noheji' => array(),
+'oirase' => array(),
+'owani' => array(),
+'rokunohe' => array(),
+'sannohe' => array(),
+'shichinohe' => array(),
+'shingo' => array(),
+'takko' => array(),
+'towada' => array(),
+'tsugaru' => array(),
+'tsuruta' => array()),
+'chiba' => array('abiko' => array(),
+'asahi' => array(),
+'chonan' => array(),
+'chosei' => array(),
+'choshi' => array(),
+'chuo' => array(),
+'funabashi' => array(),
+'futtsu' => array(),
+'hanamigawa' => array(),
+'ichihara' => array(),
+'ichikawa' => array(),
+'ichinomiya' => array(),
+'inzai' => array(),
+'isumi' => array(),
+'kamagaya' => array(),
+'kamogawa' => array(),
+'kashiwa' => array(),
+'katori' => array(),
+'katsuura' => array(),
+'kimitsu' => array(),
+'kisarazu' => array(),
+'kozaki' => array(),
+'kujukuri' => array(),
+'kyonan' => array(),
+'matsudo' => array(),
+'midori' => array(),
+'mihama' => array(),
+'minamiboso' => array(),
+'mobara' => array(),
+'mutsuzawa' => array(),
+'nagara' => array(),
+'nagareyama' => array(),
+'narashino' => array(),
+'narita' => array(),
+'noda' => array(),
+'oamishirasato' => array(),
+'omigawa' => array(),
+'onjuku' => array(),
+'otaki' => array(),
+'sakae' => array(),
+'sakura' => array(),
+'shimofusa' => array(),
+'shirako' => array(),
+'shiroi' => array(),
+'shisui' => array(),
+'sodegaura' => array(),
+'sosa' => array(),
+'tako' => array(),
+'tateyama' => array(),
+'togane' => array(),
+'tohnosho' => array(),
+'tomisato' => array(),
+'urayasu' => array(),
+'yachimata' => array(),
+'yachiyo' => array(),
+'yokaichiba' => array(),
+'yokoshibahikari' => array(),
+'yotsukaido' => array()),
+'ehime' => array('ainan' => array(),
+'honai' => array(),
+'ikata' => array(),
+'imabari' => array(),
+'iyo' => array(),
+'kamijima' => array(),
+'kihoku' => array(),
+'kumakogen' => array(),
+'masaki' => array(),
+'matsuno' => array(),
+'matsuyama' => array(),
+'namikata' => array(),
+'niihama' => array(),
+'ozu' => array(),
+'saijo' => array(),
+'seiyo' => array(),
+'shikokuchuo' => array(),
+'tobe' => array(),
+'toon' => array(),
+'uchiko' => array(),
+'uwajima' => array(),
+'yawatahama' => array()),
+'fukui' => array('echizen' => array(),
+'eiheiji' => array(),
+'fukui' => array(),
+'ikeda' => array(),
+'katsuyama' => array(),
+'mihama' => array(),
+'minamiechizen' => array(),
+'obama' => array(),
+'ohi' => array(),
+'ono' => array(),
+'sabae' => array(),
+'sakai' => array(),
+'takahama' => array(),
+'tsuruga' => array(),
+'wakasa' => array()),
+'fukuoka' => array('ashiya' => array(),
+'buzen' => array(),
+'chikugo' => array(),
+'chikuho' => array(),
+'chikujo' => array(),
+'chikushino' => array(),
+'chikuzen' => array(),
+'chuo' => array(),
+'dazaifu' => array(),
+'fukuchi' => array(),
+'hakata' => array(),
+'higashi' => array(),
+'hirokawa' => array(),
+'hisayama' => array(),
+'iizuka' => array(),
+'inatsuki' => array(),
+'kaho' => array(),
+'kasuga' => array(),
+'kasuya' => array(),
+'kawara' => array(),
+'keisen' => array(),
+'koga' => array(),
+'kurate' => array(),
+'kurogi' => array(),
+'kurume' => array(),
+'minami' => array(),
+'miyako' => array(),
+'miyama' => array(),
+'miyawaka' => array(),
+'mizumaki' => array(),
+'munakata' => array(),
+'nakagawa' => array(),
+'nakama' => array(),
+'nishi' => array(),
+'nogata' => array(),
+'ogori' => array(),
+'okagaki' => array(),
+'okawa' => array(),
+'oki' => array(),
+'omuta' => array(),
+'onga' => array(),
+'onojo' => array(),
+'oto' => array(),
+'saigawa' => array(),
+'sasaguri' => array(),
+'shingu' => array(),
+'shinyoshitomi' => array(),
+'shonai' => array(),
+'soeda' => array(),
+'sue' => array(),
+'tachiarai' => array(),
+'tagawa' => array(),
+'takata' => array(),
+'toho' => array(),
+'toyotsu' => array(),
+'tsuiki' => array(),
+'ukiha' => array(),
+'umi' => array(),
+'usui' => array(),
+'yamada' => array(),
+'yame' => array(),
+'yanagawa' => array(),
+'yukuhashi' => array()),
+'fukushima' => array('aizubange' => array(),
+'aizumisato' => array(),
+'aizuwakamatsu' => array(),
+'asakawa' => array(),
+'bandai' => array(),
+'date' => array(),
+'fukushima' => array(),
+'furudono' => array(),
+'futaba' => array(),
+'hanawa' => array(),
+'higashi' => array(),
+'hirata' => array(),
+'hirono' => array(),
+'iitate' => array(),
+'inawashiro' => array(),
+'ishikawa' => array(),
+'iwaki' => array(),
+'izumizaki' => array(),
+'kagamiishi' => array(),
+'kaneyama' => array(),
+'kawamata' => array(),
+'kitakata' => array(),
+'kitashiobara' => array(),
+'koori' => array(),
+'koriyama' => array(),
+'kunimi' => array(),
+'miharu' => array(),
+'mishima' => array(),
+'namie' => array(),
+'nango' => array(),
+'nishiaizu' => array(),
+'nishigo' => array(),
+'okuma' => array(),
+'omotego' => array(),
+'ono' => array(),
+'otama' => array(),
+'samegawa' => array(),
+'shimogo' => array(),
+'shirakawa' => array(),
+'showa' => array(),
+'soma' => array(),
+'sukagawa' => array(),
+'taishin' => array(),
+'tamakawa' => array(),
+'tanagura' => array(),
+'tenei' => array(),
+'yabuki' => array(),
+'yamato' => array(),
+'yamatsuri' => array(),
+'yanaizu' => array(),
+'yugawa' => array()),
+'gifu' => array('anpachi' => array(),
+'ena' => array(),
+'gifu' => array(),
+'ginan' => array(),
+'godo' => array(),
+'gujo' => array(),
+'hashima' => array(),
+'hichiso' => array(),
+'hida' => array(),
+'higashishirakawa' => array(),
+'ibigawa' => array(),
+'ikeda' => array(),
+'kakamigahara' => array(),
+'kani' => array(),
+'kasahara' => array(),
+'kasamatsu' => array(),
+'kawaue' => array(),
+'kitagata' => array(),
+'mino' => array(),
+'minokamo' => array(),
+'mitake' => array(),
+'mizunami' => array(),
+'motosu' => array(),
+'nakatsugawa' => array(),
+'ogaki' => array(),
+'sakahogi' => array(),
+'seki' => array(),
+'sekigahara' => array(),
+'shirakawa' => array(),
+'tajimi' => array(),
+'takayama' => array(),
+'tarui' => array(),
+'toki' => array(),
+'tomika' => array(),
+'wanouchi' => array(),
+'yamagata' => array(),
+'yaotsu' => array(),
+'yoro' => array()),
+'gunma' => array('annaka' => array(),
+'chiyoda' => array(),
+'fujioka' => array(),
+'higashiagatsuma' => array(),
+'isesaki' => array(),
+'itakura' => array(),
+'kanna' => array(),
+'kanra' => array(),
+'katashina' => array(),
+'kawaba' => array(),
+'kiryu' => array(),
+'kusatsu' => array(),
+'maebashi' => array(),
+'meiwa' => array(),
+'midori' => array(),
+'minakami' => array(),
+'naganohara' => array(),
+'nakanojo' => array(),
+'nanmoku' => array(),
+'numata' => array(),
+'oizumi' => array(),
+'ora' => array(),
+'ota' => array(),
+'shibukawa' => array(),
+'shimonita' => array(),
+'shinto' => array(),
+'showa' => array(),
+'takasaki' => array(),
+'takayama' => array(),
+'tamamura' => array(),
+'tatebayashi' => array(),
+'tomioka' => array(),
+'tsukiyono' => array(),
+'tsumagoi' => array(),
+'ueno' => array(),
+'yoshioka' => array()),
+'hiroshima' => array('asaminami' => array(),
+'daiwa' => array(),
+'etajima' => array(),
+'fuchu' => array(),
+'fukuyama' => array(),
+'hatsukaichi' => array(),
+'higashihiroshima' => array(),
+'hongo' => array(),
+'jinsekikogen' => array(),
+'kaita' => array(),
+'kui' => array(),
+'kumano' => array(),
+'kure' => array(),
+'mihara' => array(),
+'miyoshi' => array(),
+'naka' => array(),
+'onomichi' => array(),
+'osakikamijima' => array(),
+'otake' => array(),
+'saka' => array(),
+'sera' => array(),
+'seranishi' => array(),
+'shinichi' => array(),
+'shobara' => array(),
+'takehara' => array()),
+'hokkaido' => array('abashiri' => array(),
+'abira' => array(),
+'aibetsu' => array(),
+'akabira' => array(),
+'akkeshi' => array(),
+'asahikawa' => array(),
+'ashibetsu' => array(),
+'ashoro' => array(),
+'assabu' => array(),
+'atsuma' => array(),
+'bibai' => array(),
+'biei' => array(),
+'bifuka' => array(),
+'bihoro' => array(),
+'biratori' => array(),
+'chippubetsu' => array(),
+'chitose' => array(),
+'date' => array(),
+'ebetsu' => array(),
+'embetsu' => array(),
+'eniwa' => array(),
+'erimo' => array(),
+'esan' => array(),
+'esashi' => array(),
+'fukagawa' => array(),
+'fukushima' => array(),
+'furano' => array(),
+'furubira' => array(),
+'haboro' => array(),
+'hakodate' => array(),
+'hamatonbetsu' => array(),
+'hidaka' => array(),
+'higashikagura' => array(),
+'higashikawa' => array(),
+'hiroo' => array(),
+'hokuryu' => array(),
+'hokuto' => array(),
+'honbetsu' => array(),
+'horokanai' => array(),
+'horonobe' => array(),
+'ikeda' => array(),
+'imakane' => array(),
+'ishikari' => array(),
+'iwamizawa' => array(),
+'iwanai' => array(),
+'kamifurano' => array(),
+'kamikawa' => array(),
+'kamishihoro' => array(),
+'kamisunagawa' => array(),
+'kamoenai' => array(),
+'kayabe' => array(),
+'kembuchi' => array(),
+'kikonai' => array(),
+'kimobetsu' => array(),
+'kitahiroshima' => array(),
+'kitami' => array(),
+'kiyosato' => array(),
+'koshimizu' => array(),
+'kunneppu' => array(),
+'kuriyama' => array(),
+'kuromatsunai' => array(),
+'kushiro' => array(),
+'kutchan' => array(),
+'kyowa' => array(),
+'mashike' => array(),
+'matsumae' => array(),
+'mikasa' => array(),
+'minamifurano' => array(),
+'mombetsu' => array(),
+'moseushi' => array(),
+'mukawa' => array(),
+'muroran' => array(),
+'naie' => array(),
+'nakagawa' => array(),
+'nakasatsunai' => array(),
+'nakatombetsu' => array(),
+'nanae' => array(),
+'nanporo' => array(),
+'nayoro' => array(),
+'nemuro' => array(),
+'niikappu' => array(),
+'niki' => array(),
+'nishiokoppe' => array(),
+'noboribetsu' => array(),
+'numata' => array(),
+'obihiro' => array(),
+'obira' => array(),
+'oketo' => array(),
+'okoppe' => array(),
+'otaru' => array(),
+'otobe' => array(),
+'otofuke' => array(),
+'otoineppu' => array(),
+'oumu' => array(),
+'ozora' => array(),
+'pippu' => array(),
+'rankoshi' => array(),
+'rebun' => array(),
+'rikubetsu' => array(),
+'rishiri' => array(),
+'rishirifuji' => array(),
+'saroma' => array(),
+'sarufutsu' => array(),
+'shakotan' => array(),
+'shari' => array(),
+'shibecha' => array(),
+'shibetsu' => array(),
+'shikabe' => array(),
+'shikaoi' => array(),
+'shimamaki' => array(),
+'shimizu' => array(),
+'shimokawa' => array(),
+'shinshinotsu' => array(),
+'shintoku' => array(),
+'shiranuka' => array(),
+'shiraoi' => array(),
+'shiriuchi' => array(),
+'sobetsu' => array(),
+'sunagawa' => array(),
+'taiki' => array(),
+'takasu' => array(),
+'takikawa' => array(),
+'takinoue' => array(),
+'teshikaga' => array(),
+'tobetsu' => array(),
+'tohma' => array(),
+'tomakomai' => array(),
+'tomari' => array(),
+'toya' => array(),
+'toyako' => array(),
+'toyotomi' => array(),
+'toyoura' => array(),
+'tsubetsu' => array(),
+'tsukigata' => array(),
+'urakawa' => array(),
+'urausu' => array(),
+'uryu' => array(),
+'utashinai' => array(),
+'wakkanai' => array(),
+'wassamu' => array(),
+'yakumo' => array(),
+'yoichi' => array()),
+'hyogo' => array('aioi' => array(),
+'akashi' => array(),
+'ako' => array(),
+'amagasaki' => array(),
+'aogaki' => array(),
+'asago' => array(),
+'ashiya' => array(),
+'awaji' => array(),
+'fukusaki' => array(),
+'goshiki' => array(),
+'harima' => array(),
+'himeji' => array(),
+'ichikawa' => array(),
+'inagawa' => array(),
+'itami' => array(),
+'kakogawa' => array(),
+'kamigori' => array(),
+'kamikawa' => array(),
+'kasai' => array(),
+'kasuga' => array(),
+'kawanishi' => array(),
+'miki' => array(),
+'minamiawaji' => array(),
+'nishinomiya' => array(),
+'nishiwaki' => array(),
+'ono' => array(),
+'sanda' => array(),
+'sannan' => array(),
+'sasayama' => array(),
+'sayo' => array(),
+'shingu' => array(),
+'shinonsen' => array(),
+'shiso' => array(),
+'sumoto' => array(),
+'taishi' => array(),
+'taka' => array(),
+'takarazuka' => array(),
+'takasago' => array(),
+'takino' => array(),
+'tamba' => array(),
+'tatsuno' => array(),
+'toyooka' => array(),
+'yabu' => array(),
+'yashiro' => array(),
+'yoka' => array(),
+'yokawa' => array()),
+'ibaraki' => array('ami' => array(),
+'asahi' => array(),
+'bando' => array(),
+'chikusei' => array(),
+'daigo' => array(),
+'fujishiro' => array(),
+'hitachi' => array(),
+'hitachinaka' => array(),
+'hitachiomiya' => array(),
+'hitachiota' => array(),
+'ibaraki' => array(),
+'ina' => array(),
+'inashiki' => array(),
+'itako' => array(),
+'iwama' => array(),
+'joso' => array(),
+'kamisu' => array(),
+'kasama' => array(),
+'kashima' => array(),
+'kasumigaura' => array(),
+'koga' => array(),
+'miho' => array(),
+'mito' => array(),
+'moriya' => array(),
+'naka' => array(),
+'namegata' => array(),
+'oarai' => array(),
+'ogawa' => array(),
+'omitama' => array(),
+'ryugasaki' => array(),
+'sakai' => array(),
+'sakuragawa' => array(),
+'shimodate' => array(),
+'shimotsuma' => array(),
+'shirosato' => array(),
+'sowa' => array(),
+'suifu' => array(),
+'takahagi' => array(),
+'tamatsukuri' => array(),
+'tokai' => array(),
+'tomobe' => array(),
+'tone' => array(),
+'toride' => array(),
+'tsuchiura' => array(),
+'tsukuba' => array(),
+'uchihara' => array(),
+'ushiku' => array(),
+'yachiyo' => array(),
+'yamagata' => array(),
+'yawara' => array(),
+'yuki' => array()),
+'ishikawa' => array('anamizu' => array(),
+'hakui' => array(),
+'hakusan' => array(),
+'kaga' => array(),
+'kahoku' => array(),
+'kanazawa' => array(),
+'kawakita' => array(),
+'komatsu' => array(),
+'nakanoto' => array(),
+'nanao' => array(),
+'nomi' => array(),
+'nonoichi' => array(),
+'noto' => array(),
+'shika' => array(),
+'suzu' => array(),
+'tsubata' => array(),
+'tsurugi' => array(),
+'uchinada' => array(),
+'wajima' => array()),
+'iwate' => array('fudai' => array(),
+'fujisawa' => array(),
+'hanamaki' => array(),
+'hiraizumi' => array(),
+'hirono' => array(),
+'ichinohe' => array(),
+'ichinoseki' => array(),
+'iwaizumi' => array(),
+'iwate' => array(),
+'joboji' => array(),
+'kamaishi' => array(),
+'kanegasaki' => array(),
+'karumai' => array(),
+'kawai' => array(),
+'kitakami' => array(),
+'kuji' => array(),
+'kunohe' => array(),
+'kuzumaki' => array(),
+'miyako' => array(),
+'mizusawa' => array(),
+'morioka' => array(),
+'ninohe' => array(),
+'noda' => array(),
+'ofunato' => array(),
+'oshu' => array(),
+'otsuchi' => array(),
+'rikuzentakata' => array(),
+'shiwa' => array(),
+'shizukuishi' => array(),
+'sumita' => array(),
+'tanohata' => array(),
+'tono' => array(),
+'yahaba' => array(),
+'yamada' => array()),
+'kagawa' => array('ayagawa' => array(),
+'higashikagawa' => array(),
+'kanonji' => array(),
+'kotohira' => array(),
+'manno' => array(),
+'marugame' => array(),
+'mitoyo' => array(),
+'naoshima' => array(),
+'sanuki' => array(),
+'tadotsu' => array(),
+'takamatsu' => array(),
+'tonosho' => array(),
+'uchinomi' => array(),
+'utazu' => array(),
+'zentsuji' => array()),
+'kagoshima' => array('akune' => array(),
+'amami' => array(),
+'hioki' => array(),
+'isa' => array(),
+'isen' => array(),
+'izumi' => array(),
+'kagoshima' => array(),
+'kanoya' => array(),
+'kawanabe' => array(),
+'kinko' => array(),
+'kouyama' => array(),
+'makurazaki' => array(),
+'matsumoto' => array(),
+'minamitane' => array(),
+'nakatane' => array(),
+'nishinoomote' => array(),
+'satsumasendai' => array(),
+'soo' => array(),
+'tarumizu' => array(),
+'yusui' => array()),
+'kanagawa' => array('aikawa' => array(),
+'atsugi' => array(),
+'ayase' => array(),
+'chigasaki' => array(),
+'ebina' => array(),
+'fujisawa' => array(),
+'hadano' => array(),
+'hakone' => array(),
+'hiratsuka' => array(),
+'isehara' => array(),
+'kaisei' => array(),
+'kamakura' => array(),
+'kiyokawa' => array(),
+'matsuda' => array(),
+'minamiashigara' => array(),
+'miura' => array(),
+'nakai' => array(),
+'ninomiya' => array(),
+'odawara' => array(),
+'oi' => array(),
+'oiso' => array(),
+'sagamihara' => array(),
+'samukawa' => array(),
+'tsukui' => array(),
+'yamakita' => array(),
+'yamato' => array(),
+'yokosuka' => array(),
+'yugawara' => array(),
+'zama' => array(),
+'zushi' => array()),
+'kochi' => array('aki' => array(),
+'geisei' => array(),
+'hidaka' => array(),
+'higashitsuno' => array(),
+'ino' => array(),
+'kagami' => array(),
+'kami' => array(),
+'kitagawa' => array(),
+'kochi' => array(),
+'mihara' => array(),
+'motoyama' => array(),
+'muroto' => array(),
+'nahari' => array(),
+'nakamura' => array(),
+'nankoku' => array(),
+'nishitosa' => array(),
+'niyodogawa' => array(),
+'ochi' => array(),
+'okawa' => array(),
+'otoyo' => array(),
+'otsuki' => array(),
+'sakawa' => array(),
+'sukumo' => array(),
+'susaki' => array(),
+'tosa' => array(),
+'tosashimizu' => array(),
+'toyo' => array(),
+'tsuno' => array(),
+'umaji' => array(),
+'yasuda' => array(),
+'yusuhara' => array()),
+'kumamoto' => array('amakusa' => array(),
+'arao' => array(),
+'aso' => array(),
+'choyo' => array(),
+'gyokuto' => array(),
+'hitoyoshi' => array(),
+'kamiamakusa' => array(),
+'kashima' => array(),
+'kikuchi' => array(),
+'kosa' => array(),
+'kumamoto' => array(),
+'mashiki' => array(),
+'mifune' => array(),
+'minamata' => array(),
+'minamioguni' => array(),
+'nagasu' => array(),
+'nishihara' => array(),
+'oguni' => array(),
+'ozu' => array(),
+'sumoto' => array(),
+'takamori' => array(),
+'uki' => array(),
+'uto' => array(),
+'yamaga' => array(),
+'yamato' => array(),
+'yatsushiro' => array()),
+'kyoto' => array('ayabe' => array(),
+'fukuchiyama' => array(),
+'higashiyama' => array(),
+'ide' => array(),
+'ine' => array(),
+'joyo' => array(),
+'kameoka' => array(),
+'kamo' => array(),
+'kita' => array(),
+'kizu' => array(),
+'kumiyama' => array(),
+'kyotamba' => array(),
+'kyotanabe' => array(),
+'kyotango' => array(),
+'maizuru' => array(),
+'minami' => array(),
+'minamiyamashiro' => array(),
+'miyazu' => array(),
+'muko' => array(),
+'nagaokakyo' => array(),
+'nakagyo' => array(),
+'nantan' => array(),
+'oyamazaki' => array(),
+'sakyo' => array(),
+'seika' => array(),
+'tanabe' => array(),
+'uji' => array(),
+'ujitawara' => array(),
+'wazuka' => array(),
+'yamashina' => array(),
+'yawata' => array()),
+'mie' => array('asahi' => array(),
+'inabe' => array(),
+'ise' => array(),
+'kameyama' => array(),
+'kawagoe' => array(),
+'kiho' => array(),
+'kisosaki' => array(),
+'kiwa' => array(),
+'komono' => array(),
+'kumano' => array(),
+'kuwana' => array(),
+'matsusaka' => array(),
+'meiwa' => array(),
+'mihama' => array(),
+'minamiise' => array(),
+'misugi' => array(),
+'miyama' => array(),
+'nabari' => array(),
+'shima' => array(),
+'suzuka' => array(),
+'tado' => array(),
+'taiki' => array(),
+'taki' => array(),
+'tamaki' => array(),
+'toba' => array(),
+'tsu' => array(),
+'udono' => array(),
+'ureshino' => array(),
+'watarai' => array(),
+'yokkaichi' => array()),
+'miyagi' => array('furukawa' => array(),
+'higashimatsushima' => array(),
+'ishinomaki' => array(),
+'iwanuma' => array(),
+'kakuda' => array(),
+'kami' => array(),
+'kawasaki' => array(),
+'kesennuma' => array(),
+'marumori' => array(),
+'matsushima' => array(),
+'minamisanriku' => array(),
+'misato' => array(),
+'murata' => array(),
+'natori' => array(),
+'ogawara' => array(),
+'ohira' => array(),
+'onagawa' => array(),
+'osaki' => array(),
+'rifu' => array(),
+'semine' => array(),
+'shibata' => array(),
+'shichikashuku' => array(),
+'shikama' => array(),
+'shiogama' => array(),
+'shiroishi' => array(),
+'tagajo' => array(),
+'taiwa' => array(),
+'tome' => array(),
+'tomiya' => array(),
+'wakuya' => array(),
+'watari' => array(),
+'yamamoto' => array(),
+'zao' => array()),
+'miyazaki' => array('aya' => array(),
+'ebino' => array(),
+'gokase' => array(),
+'hyuga' => array(),
+'kadogawa' => array(),
+'kawaminami' => array(),
+'kijo' => array(),
+'kitagawa' => array(),
+'kitakata' => array(),
+'kitaura' => array(),
+'kobayashi' => array(),
+'kunitomi' => array(),
+'kushima' => array(),
+'mimata' => array(),
+'miyakonojo' => array(),
+'miyazaki' => array(),
+'morotsuka' => array(),
+'nichinan' => array(),
+'nishimera' => array(),
+'nobeoka' => array(),
+'saito' => array(),
+'shiiba' => array(),
+'shintomi' => array(),
+'takaharu' => array(),
+'takanabe' => array(),
+'takazaki' => array(),
+'tsuno' => array()),
+'nagano' => array('achi' => array(),
+'agematsu' => array(),
+'anan' => array(),
+'aoki' => array(),
+'asahi' => array(),
+'azumino' => array(),
+'chikuhoku' => array(),
+'chikuma' => array(),
+'chino' => array(),
+'fujimi' => array(),
+'hakuba' => array(),
+'hara' => array(),
+'hiraya' => array(),
+'iida' => array(),
+'iijima' => array(),
+'iiyama' => array(),
+'iizuna' => array(),
+'ikeda' => array(),
+'ikusaka' => array(),
+'ina' => array(),
+'karuizawa' => array(),
+'kawakami' => array(),
+'kiso' => array(),
+'kisofukushima' => array(),
+'kitaaiki' => array(),
+'komagane' => array(),
+'komoro' => array(),
+'matsukawa' => array(),
+'matsumoto' => array(),
+'miasa' => array(),
+'minamiaiki' => array(),
+'minamimaki' => array(),
+'minamiminowa' => array(),
+'minowa' => array(),
+'miyada' => array(),
+'miyota' => array(),
+'mochizuki' => array(),
+'nagano' => array(),
+'nagawa' => array(),
+'nagiso' => array(),
+'nakagawa' => array(),
+'nakano' => array(),
+'nozawaonsen' => array(),
+'obuse' => array(),
+'ogawa' => array(),
+'okaya' => array(),
+'omachi' => array(),
+'omi' => array(),
+'ookuwa' => array(),
+'ooshika' => array(),
+'otaki' => array(),
+'otari' => array(),
+'sakae' => array(),
+'sakaki' => array(),
+'saku' => array(),
+'sakuho' => array(),
+'shimosuwa' => array(),
+'shinanomachi' => array(),
+'shiojiri' => array(),
+'suwa' => array(),
+'suzaka' => array(),
+'takagi' => array(),
+'takamori' => array(),
+'takayama' => array(),
+'tateshina' => array(),
+'tatsuno' => array(),
+'togakushi' => array(),
+'togura' => array(),
+'tomi' => array(),
+'ueda' => array(),
+'wada' => array(),
+'yamagata' => array(),
+'yamanouchi' => array(),
+'yasaka' => array(),
+'yasuoka' => array()),
+'nagasaki' => array('chijiwa' => array(),
+'futsu' => array(),
+'goto' => array(),
+'hasami' => array(),
+'hirado' => array(),
+'iki' => array(),
+'isahaya' => array(),
+'kawatana' => array(),
+'kuchinotsu' => array(),
+'matsuura' => array(),
+'nagasaki' => array(),
+'obama' => array(),
+'omura' => array(),
+'oseto' => array(),
+'saikai' => array(),
+'sasebo' => array(),
+'seihi' => array(),
+'shimabara' => array(),
+'shinkamigoto' => array(),
+'togitsu' => array(),
+'tsushima' => array(),
+'unzen' => array()),
+'nara' => array('ando' => array(),
+'gose' => array(),
+'heguri' => array(),
+'higashiyoshino' => array(),
+'ikaruga' => array(),
+'ikoma' => array(),
+'kamikitayama' => array(),
+'kanmaki' => array(),
+'kashiba' => array(),
+'kashihara' => array(),
+'katsuragi' => array(),
+'kawai' => array(),
+'kawakami' => array(),
+'kawanishi' => array(),
+'koryo' => array(),
+'kurotaki' => array(),
+'mitsue' => array(),
+'miyake' => array(),
+'nara' => array(),
+'nosegawa' => array(),
+'oji' => array(),
+'ouda' => array(),
+'oyodo' => array(),
+'sakurai' => array(),
+'sango' => array(),
+'shimoichi' => array(),
+'shimokitayama' => array(),
+'shinjo' => array(),
+'soni' => array(),
+'takatori' => array(),
+'tawaramoto' => array(),
+'tenkawa' => array(),
+'tenri' => array(),
+'uda' => array(),
+'yamatokoriyama' => array(),
+'yamatotakada' => array(),
+'yamazoe' => array(),
+'yoshino' => array()),
+'niigata' => array('aga' => array(),
+'agano' => array(),
+'gosen' => array(),
+'itoigawa' => array(),
+'izumozaki' => array(),
+'joetsu' => array(),
+'kamo' => array(),
+'kariwa' => array(),
+'kashiwazaki' => array(),
+'minamiuonuma' => array(),
+'mitsuke' => array(),
+'muika' => array(),
+'murakami' => array(),
+'myoko' => array(),
+'nagaoka' => array(),
+'niigata' => array(),
+'ojiya' => array(),
+'omi' => array(),
+'sado' => array(),
+'sanjo' => array(),
+'seiro' => array(),
+'seirou' => array(),
+'sekikawa' => array(),
+'shibata' => array(),
+'tagami' => array(),
+'tainai' => array(),
+'tochio' => array(),
+'tokamachi' => array(),
+'tsubame' => array(),
+'tsunan' => array(),
+'uonuma' => array(),
+'yahiko' => array(),
+'yoita' => array(),
+'yuzawa' => array()),
+'oita' => array('beppu' => array(),
+'bungoono' => array(),
+'bungotakada' => array(),
+'hasama' => array(),
+'hiji' => array(),
+'himeshima' => array(),
+'hita' => array(),
+'kamitsue' => array(),
+'kokonoe' => array(),
+'kuju' => array(),
+'kunisaki' => array(),
+'kusu' => array(),
+'oita' => array(),
+'saiki' => array(),
+'taketa' => array(),
+'tsukumi' => array(),
+'usa' => array(),
+'usuki' => array(),
+'yufu' => array()),
+'okayama' => array('akaiwa' => array(),
+'asakuchi' => array(),
+'bizen' => array(),
+'hayashima' => array(),
+'ibara' => array(),
+'kagamino' => array(),
+'kasaoka' => array(),
+'kibichuo' => array(),
+'kumenan' => array(),
+'kurashiki' => array(),
+'maniwa' => array(),
+'misaki' => array(),
+'nagi' => array(),
+'niimi' => array(),
+'nishiawakura' => array(),
+'okayama' => array(),
+'satosho' => array(),
+'setouchi' => array(),
+'shinjo' => array(),
+'shoo' => array(),
+'soja' => array(),
+'takahashi' => array(),
+'tamano' => array(),
+'tsuyama' => array(),
+'wake' => array(),
+'yakage' => array()),
+'okinawa' => array('aguni' => array(),
+'ginowan' => array(),
+'ginoza' => array(),
+'gushikami' => array(),
+'haebaru' => array(),
+'higashi' => array(),
+'hirara' => array(),
+'iheya' => array(),
+'ishigaki' => array(),
+'ishikawa' => array(),
+'itoman' => array(),
+'izena' => array(),
+'kadena' => array(),
+'kin' => array(),
+'kitadaito' => array(),
+'kitanakagusuku' => array(),
+'kumejima' => array(),
+'kunigami' => array(),
+'minamidaito' => array(),
+'motobu' => array(),
+'nago' => array(),
+'naha' => array(),
+'nakagusuku' => array(),
+'nakijin' => array(),
+'nanjo' => array(),
+'nishihara' => array(),
+'ogimi' => array(),
+'okinawa' => array(),
+'onna' => array(),
+'shimoji' => array(),
+'taketomi' => array(),
+'tarama' => array(),
+'tokashiki' => array(),
+'tomigusuku' => array(),
+'tonaki' => array(),
+'urasoe' => array(),
+'uruma' => array(),
+'yaese' => array(),
+'yomitan' => array(),
+'yonabaru' => array(),
+'yonaguni' => array(),
+'zamami' => array()),
+'osaka' => array('abeno' => array(),
+'chihayaakasaka' => array(),
+'chuo' => array(),
+'daito' => array(),
+'fujiidera' => array(),
+'habikino' => array(),
+'hannan' => array(),
+'higashiosaka' => array(),
+'higashisumiyoshi' => array(),
+'higashiyodogawa' => array(),
+'hirakata' => array(),
+'ibaraki' => array(),
+'ikeda' => array(),
+'izumi' => array(),
+'izumiotsu' => array(),
+'izumisano' => array(),
+'kadoma' => array(),
+'kaizuka' => array(),
+'kanan' => array(),
+'kashiwara' => array(),
+'katano' => array(),
+'kawachinagano' => array(),
+'kishiwada' => array(),
+'kita' => array(),
+'kumatori' => array(),
+'matsubara' => array(),
+'minato' => array(),
+'minoh' => array(),
+'misaki' => array(),
+'moriguchi' => array(),
+'neyagawa' => array(),
+'nishi' => array(),
+'nose' => array(),
+'osakasayama' => array(),
+'sakai' => array(),
+'sayama' => array(),
+'sennan' => array(),
+'settsu' => array(),
+'shijonawate' => array(),
+'shimamoto' => array(),
+'suita' => array(),
+'tadaoka' => array(),
+'taishi' => array(),
+'tajiri' => array(),
+'takaishi' => array(),
+'takatsuki' => array(),
+'tondabayashi' => array(),
+'toyonaka' => array(),
+'toyono' => array(),
+'yao' => array()),
+'saga' => array('ariake' => array(),
+'arita' => array(),
+'fukudomi' => array(),
+'genkai' => array(),
+'hamatama' => array(),
+'hizen' => array(),
+'imari' => array(),
+'kamimine' => array(),
+'kanzaki' => array(),
+'karatsu' => array(),
+'kashima' => array(),
+'kitagata' => array(),
+'kitahata' => array(),
+'kiyama' => array(),
+'kouhoku' => array(),
+'kyuragi' => array(),
+'nishiarita' => array(),
+'ogi' => array(),
+'omachi' => array(),
+'ouchi' => array(),
+'saga' => array(),
+'shiroishi' => array(),
+'taku' => array(),
+'tara' => array(),
+'tosu' => array(),
+'yoshinogari' => array()),
+'saitama' => array('arakawa' => array(),
+'asaka' => array(),
+'chichibu' => array(),
+'fujimi' => array(),
+'fujimino' => array(),
+'fukaya' => array(),
+'hanno' => array(),
+'hanyu' => array(),
+'hasuda' => array(),
+'hatogaya' => array(),
+'hatoyama' => array(),
+'hidaka' => array(),
+'higashichichibu' => array(),
+'higashimatsuyama' => array(),
+'honjo' => array(),
+'ina' => array(),
+'iruma' => array(),
+'iwatsuki' => array(),
+'kamiizumi' => array(),
+'kamikawa' => array(),
+'kamisato' => array(),
+'kasukabe' => array(),
+'kawagoe' => array(),
+'kawaguchi' => array(),
+'kawajima' => array(),
+'kazo' => array(),
+'kitamoto' => array(),
+'koshigaya' => array(),
+'kounosu' => array(),
+'kuki' => array(),
+'kumagaya' => array(),
+'matsubushi' => array(),
+'minano' => array(),
+'misato' => array(),
+'miyashiro' => array(),
+'miyoshi' => array(),
+'moroyama' => array(),
+'nagatoro' => array(),
+'namegawa' => array(),
+'niiza' => array(),
+'ogano' => array(),
+'ogawa' => array(),
+'ogose' => array(),
+'okegawa' => array(),
+'omiya' => array(),
+'otaki' => array(),
+'ranzan' => array(),
+'ryokami' => array(),
+'saitama' => array(),
+'sakado' => array(),
+'satte' => array(),
+'sayama' => array(),
+'shiki' => array(),
+'shiraoka' => array(),
+'soka' => array(),
+'sugito' => array(),
+'toda' => array(),
+'tokigawa' => array(),
+'tokorozawa' => array(),
+'tsurugashima' => array(),
+'urawa' => array(),
+'warabi' => array(),
+'yashio' => array(),
+'yokoze' => array(),
+'yono' => array(),
+'yorii' => array(),
+'yoshida' => array(),
+'yoshikawa' => array(),
+'yoshimi' => array()),
+'shiga' => array('aisho' => array(),
+'gamo' => array(),
+'higashiomi' => array(),
+'hikone' => array(),
+'koka' => array(),
+'konan' => array(),
+'kosei' => array(),
+'koto' => array(),
+'kusatsu' => array(),
+'maibara' => array(),
+'moriyama' => array(),
+'nagahama' => array(),
+'nishiazai' => array(),
+'notogawa' => array(),
+'omihachiman' => array(),
+'otsu' => array(),
+'ritto' => array(),
+'ryuoh' => array(),
+'takashima' => array(),
+'takatsuki' => array(),
+'torahime' => array(),
+'toyosato' => array(),
+'yasu' => array()),
+'shimane' => array('akagi' => array(),
+'ama' => array(),
+'gotsu' => array(),
+'hamada' => array(),
+'higashiizumo' => array(),
+'hikawa' => array(),
+'hikimi' => array(),
+'izumo' => array(),
+'kakinoki' => array(),
+'masuda' => array(),
+'matsue' => array(),
+'misato' => array(),
+'nishinoshima' => array(),
+'ohda' => array(),
+'okinoshima' => array(),
+'okuizumo' => array(),
+'shimane' => array(),
+'tamayu' => array(),
+'tsuwano' => array(),
+'unnan' => array(),
+'yakumo' => array(),
+'yasugi' => array(),
+'yatsuka' => array()),
+'shizuoka' => array('arai' => array(),
+'atami' => array(),
+'fuji' => array(),
+'fujieda' => array(),
+'fujikawa' => array(),
+'fujinomiya' => array(),
+'fukuroi' => array(),
+'gotemba' => array(),
+'haibara' => array(),
+'hamamatsu' => array(),
+'higashiizu' => array(),
+'ito' => array(),
+'iwata' => array(),
+'izu' => array(),
+'izunokuni' => array(),
+'kakegawa' => array(),
+'kannami' => array(),
+'kawanehon' => array(),
+'kawazu' => array(),
+'kikugawa' => array(),
+'kosai' => array(),
+'makinohara' => array(),
+'matsuzaki' => array(),
+'minamiizu' => array(),
+'mishima' => array(),
+'morimachi' => array(),
+'nishiizu' => array(),
+'numazu' => array(),
+'omaezaki' => array(),
+'shimada' => array(),
+'shimizu' => array(),
+'shimoda' => array(),
+'shizuoka' => array(),
+'susono' => array(),
+'yaizu' => array(),
+'yoshida' => array()),
+'tochigi' => array('ashikaga' => array(),
+'bato' => array(),
+'haga' => array(),
+'ichikai' => array(),
+'iwafune' => array(),
+'kaminokawa' => array(),
+'kanuma' => array(),
+'karasuyama' => array(),
+'kuroiso' => array(),
+'mashiko' => array(),
+'mibu' => array(),
+'moka' => array(),
+'motegi' => array(),
+'nasu' => array(),
+'nasushiobara' => array(),
+'nikko' => array(),
+'nishikata' => array(),
+'nogi' => array(),
+'ohira' => array(),
+'ohtawara' => array(),
+'oyama' => array(),
+'sakura' => array(),
+'sano' => array(),
+'shimotsuke' => array(),
+'shioya' => array(),
+'takanezawa' => array(),
+'tochigi' => array(),
+'tsuga' => array(),
+'ujiie' => array(),
+'utsunomiya' => array(),
+'yaita' => array()),
+'tokushima' => array('aizumi' => array(),
+'anan' => array(),
+'ichiba' => array(),
+'itano' => array(),
+'kainan' => array(),
+'komatsushima' => array(),
+'matsushige' => array(),
+'mima' => array(),
+'minami' => array(),
+'miyoshi' => array(),
+'mugi' => array(),
+'nakagawa' => array(),
+'naruto' => array(),
+'sanagochi' => array(),
+'shishikui' => array(),
+'tokushima' => array(),
+'wajiki' => array()),
+'tokyo' => array('adachi' => array(),
+'akiruno' => array(),
+'akishima' => array(),
+'aogashima' => array(),
+'arakawa' => array(),
+'bunkyo' => array(),
+'chiyoda' => array(),
+'chofu' => array(),
+'chuo' => array(),
+'edogawa' => array(),
+'fuchu' => array(),
+'fussa' => array(),
+'hachijo' => array(),
+'hachioji' => array(),
+'hamura' => array(),
+'higashikurume' => array(),
+'higashimurayama' => array(),
+'higashiyamato' => array(),
+'hino' => array(),
+'hinode' => array(),
+'hinohara' => array(),
+'inagi' => array(),
+'itabashi' => array(),
+'katsushika' => array(),
+'kita' => array(),
+'kiyose' => array(),
+'kodaira' => array(),
+'koganei' => array(),
+'kokubunji' => array(),
+'komae' => array(),
+'koto' => array(),
+'kouzushima' => array(),
+'kunitachi' => array(),
+'machida' => array(),
+'meguro' => array(),
+'minato' => array(),
+'mitaka' => array(),
+'mizuho' => array(),
+'musashimurayama' => array(),
+'musashino' => array(),
+'nakano' => array(),
+'nerima' => array(),
+'ogasawara' => array(),
+'okutama' => array(),
+'ome' => array(),
+'oshima' => array(),
+'ota' => array(),
+'setagaya' => array(),
+'shibuya' => array(),
+'shinagawa' => array(),
+'shinjuku' => array(),
+'suginami' => array(),
+'sumida' => array(),
+'tachikawa' => array(),
+'taito' => array(),
+'tama' => array(),
+'toshima' => array()),
+'tottori' => array('chizu' => array(),
+'hino' => array(),
+'kawahara' => array(),
+'koge' => array(),
+'kotoura' => array(),
+'misasa' => array(),
+'nanbu' => array(),
+'nichinan' => array(),
+'sakaiminato' => array(),
+'tottori' => array(),
+'wakasa' => array(),
+'yazu' => array(),
+'yonago' => array()),
+'toyama' => array('asahi' => array(),
+'fuchu' => array(),
+'fukumitsu' => array(),
+'funahashi' => array(),
+'himi' => array(),
+'imizu' => array(),
+'inami' => array(),
+'johana' => array(),
+'kamiichi' => array(),
+'kurobe' => array(),
+'nakaniikawa' => array(),
+'namerikawa' => array(),
+'nanto' => array(),
+'nyuzen' => array(),
+'oyabe' => array(),
+'taira' => array(),
+'takaoka' => array(),
+'tateyama' => array(),
+'toga' => array(),
+'tonami' => array(),
+'toyama' => array(),
+'unazuki' => array(),
+'uozu' => array(),
+'yamada' => array()),
+'wakayama' => array('arida' => array(),
+'aridagawa' => array(),
+'gobo' => array(),
+'hashimoto' => array(),
+'hidaka' => array(),
+'hirogawa' => array(),
+'inami' => array(),
+'iwade' => array(),
+'kainan' => array(),
+'kamitonda' => array(),
+'katsuragi' => array(),
+'kimino' => array(),
+'kinokawa' => array(),
+'kitayama' => array(),
+'koya' => array(),
+'koza' => array(),
+'kozagawa' => array(),
+'kudoyama' => array(),
+'kushimoto' => array(),
+'mihama' => array(),
+'misato' => array(),
+'nachikatsuura' => array(),
+'shingu' => array(),
+'shirahama' => array(),
+'taiji' => array(),
+'tanabe' => array(),
+'wakayama' => array(),
+'yuasa' => array(),
+'yura' => array()),
+'yamagata' => array('asahi' => array(),
+'funagata' => array(),
+'higashine' => array(),
+'iide' => array(),
+'kahoku' => array(),
+'kaminoyama' => array(),
+'kaneyama' => array(),
+'kawanishi' => array(),
+'mamurogawa' => array(),
+'mikawa' => array(),
+'murayama' => array(),
+'nagai' => array(),
+'nakayama' => array(),
+'nanyo' => array(),
+'nishikawa' => array(),
+'obanazawa' => array(),
+'oe' => array(),
+'oguni' => array(),
+'ohkura' => array(),
+'oishida' => array(),
+'sagae' => array(),
+'sakata' => array(),
+'sakegawa' => array(),
+'shinjo' => array(),
+'shirataka' => array(),
+'shonai' => array(),
+'takahata' => array(),
+'tendo' => array(),
+'tozawa' => array(),
+'tsuruoka' => array(),
+'yamagata' => array(),
+'yamanobe' => array(),
+'yonezawa' => array(),
+'yuza' => array()),
+'yamaguchi' => array('abu' => array(),
+'hagi' => array(),
+'hikari' => array(),
+'hofu' => array(),
+'iwakuni' => array(),
+'kudamatsu' => array(),
+'mitou' => array(),
+'nagato' => array(),
+'oshima' => array(),
+'shimonoseki' => array(),
+'shunan' => array(),
+'tabuse' => array(),
+'tokuyama' => array(),
+'toyota' => array(),
+'ube' => array(),
+'yuu' => array()),
+'yamanashi' => array('chuo' => array(),
+'doshi' => array(),
+'fuefuki' => array(),
+'fujikawa' => array(),
+'fujikawaguchiko' => array(),
+'fujiyoshida' => array(),
+'hayakawa' => array(),
+'hokuto' => array(),
+'ichikawamisato' => array(),
+'kai' => array(),
+'kofu' => array(),
+'koshu' => array(),
+'kosuge' => array(),
+'minami-alps' => array(),
+'minobu' => array(),
+'nakamichi' => array(),
+'nanbu' => array(),
+'narusawa' => array(),
+'nirasaki' => array(),
+'nishikatsura' => array(),
+'oshino' => array(),
+'otsuki' => array(),
+'showa' => array(),
+'tabayama' => array(),
+'tsuru' => array(),
+'uenohara' => array(),
+'yamanakako' => array(),
+'yamanashi' => array()),
+'kawasaki' => array('*' => array(),
+'city' => array('!' => '')),
+'kitakyushu' => array('*' => array(),
+'city' => array('!' => '')),
+'kobe' => array('*' => array(),
+'city' => array('!' => '')),
+'nagoya' => array('*' => array(),
+'city' => array('!' => '')),
+'sapporo' => array('*' => array(),
+'city' => array('!' => '')),
+'sendai' => array('*' => array(),
+'city' => array('!' => '')),
+'yokohama' => array('*' => array(),
+'city' => array('!' => '')),
+'blogspot' => array()),
+'ke' => array('*' => array()),
+'kg' => array('org' => array(),
+'net' => array(),
+'com' => array(),
+'edu' => array(),
+'gov' => array(),
+'mil' => array()),
+'kh' => array('*' => array()),
+'ki' => array('edu' => array(),
+'biz' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'info' => array(),
+'com' => array()),
+'km' => array('org' => array(),
+'nom' => array(),
+'gov' => array(),
+'prd' => array(),
+'tm' => array(),
+'edu' => array(),
+'mil' => array(),
+'ass' => array(),
+'com' => array(),
+'coop' => array(),
+'asso' => array(),
+'presse' => array(),
+'medecin' => array(),
+'notaires' => array(),
+'pharmaciens' => array(),
+'veterinaire' => array(),
+'gouv' => array()),
+'kn' => array('net' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array()),
+'kp' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'rep' => array(),
+'tra' => array()),
+'kr' => array('ac' => array(),
+'co' => array(),
+'es' => array(),
+'go' => array(),
+'hs' => array(),
+'kg' => array(),
+'mil' => array(),
+'ms' => array(),
+'ne' => array(),
+'or' => array(),
+'pe' => array(),
+'re' => array(),
+'sc' => array(),
+'busan' => array(),
+'chungbuk' => array(),
+'chungnam' => array(),
+'daegu' => array(),
+'daejeon' => array(),
+'gangwon' => array(),
+'gwangju' => array(),
+'gyeongbuk' => array(),
+'gyeonggi' => array(),
+'gyeongnam' => array(),
+'incheon' => array(),
+'jeju' => array(),
+'jeonbuk' => array(),
+'jeonnam' => array(),
+'seoul' => array(),
+'ulsan' => array(),
+'blogspot' => array()),
+'kw' => array('*' => array()),
+'ky' => array('edu' => array(),
+'gov' => array(),
+'com' => array(),
+'org' => array(),
+'net' => array()),
+'kz' => array('org' => array(),
+'edu' => array(),
+'net' => array(),
+'gov' => array(),
+'mil' => array(),
+'com' => array()),
+'la' => array('int' => array(),
+'net' => array(),
+'info' => array(),
+'edu' => array(),
+'gov' => array(),
+'per' => array(),
+'com' => array(),
+'org' => array(),
+'c' => array()),
+'lb' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array()),
+'lc' => array('com' => array(),
+'net' => array(),
+'co' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array()),
+'li' => array(),
+'lk' => array('gov' => array(),
+'sch' => array(),
+'net' => array(),
+'int' => array(),
+'com' => array(),
+'org' => array(),
+'edu' => array(),
+'ngo' => array(),
+'soc' => array(),
+'web' => array(),
+'ltd' => array(),
+'assn' => array(),
+'grp' => array(),
+'hotel' => array()),
+'lr' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'net' => array()),
+'ls' => array('co' => array(),
+'org' => array()),
+'lt' => array('gov' => array()),
+'lu' => array(),
+'lv' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array(),
+'mil' => array(),
+'id' => array(),
+'net' => array(),
+'asn' => array(),
+'conf' => array()),
+'ly' => array('com' => array(),
+'net' => array(),
+'gov' => array(),
+'plc' => array(),
+'edu' => array(),
+'sch' => array(),
+'med' => array(),
+'org' => array(),
+'id' => array()),
+'ma' => array('co' => array(),
+'net' => array(),
+'gov' => array(),
+'org' => array(),
+'ac' => array(),
+'press' => array()),
+'mc' => array('tm' => array(),
+'asso' => array()),
+'md' => array(),
+'me' => array('co' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'ac' => array(),
+'gov' => array(),
+'its' => array(),
+'priv' => array()),
+'mg' => array('org' => array(),
+'nom' => array(),
+'gov' => array(),
+'prd' => array(),
+'tm' => array(),
+'edu' => array(),
+'mil' => array(),
+'com' => array()),
+'mh' => array(),
+'mil' => array(),
+'mk' => array('com' => array(),
+'org' => array(),
+'net' => array(),
+'edu' => array(),
+'gov' => array(),
+'inf' => array(),
+'name' => array()),
+'ml' => array('com' => array(),
+'edu' => array(),
+'gouv' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array(),
+'presse' => array()),
+'mm' => array('*' => array()),
+'mn' => array('gov' => array(),
+'edu' => array(),
+'org' => array(),
+'nyc' => array()),
+'mo' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array()),
+'mobi' => array(),
+'mp' => array(),
+'mq' => array(),
+'mr' => array('gov' => array(),
+'blogspot' => array()),
+'ms' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array()),
+'mt' => array('com' => array(),
+'edu' => array(),
+'net' => array(),
+'org' => array()),
+'mu' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'ac' => array(),
+'co' => array(),
+'or' => array()),
+'museum' => array('academy' => array(),
+'agriculture' => array(),
+'air' => array(),
+'airguard' => array(),
+'alabama' => array(),
+'alaska' => array(),
+'amber' => array(),
+'ambulance' => array(),
+'american' => array(),
+'americana' => array(),
+'americanantiques' => array(),
+'americanart' => array(),
+'amsterdam' => array(),
+'and' => array(),
+'annefrank' => array(),
+'anthro' => array(),
+'anthropology' => array(),
+'antiques' => array(),
+'aquarium' => array(),
+'arboretum' => array(),
+'archaeological' => array(),
+'archaeology' => array(),
+'architecture' => array(),
+'art' => array(),
+'artanddesign' => array(),
+'artcenter' => array(),
+'artdeco' => array(),
+'arteducation' => array(),
+'artgallery' => array(),
+'arts' => array(),
+'artsandcrafts' => array(),
+'asmatart' => array(),
+'assassination' => array(),
+'assisi' => array(),
+'association' => array(),
+'astronomy' => array(),
+'atlanta' => array(),
+'austin' => array(),
+'australia' => array(),
+'automotive' => array(),
+'aviation' => array(),
+'axis' => array(),
+'badajoz' => array(),
+'baghdad' => array(),
+'bahn' => array(),
+'bale' => array(),
+'baltimore' => array(),
+'barcelona' => array(),
+'baseball' => array(),
+'basel' => array(),
+'baths' => array(),
+'bauern' => array(),
+'beauxarts' => array(),
+'beeldengeluid' => array(),
+'bellevue' => array(),
+'bergbau' => array(),
+'berkeley' => array(),
+'berlin' => array(),
+'bern' => array(),
+'bible' => array(),
+'bilbao' => array(),
+'bill' => array(),
+'birdart' => array(),
+'birthplace' => array(),
+'bonn' => array(),
+'boston' => array(),
+'botanical' => array(),
+'botanicalgarden' => array(),
+'botanicgarden' => array(),
+'botany' => array(),
+'brandywinevalley' => array(),
+'brasil' => array(),
+'bristol' => array(),
+'british' => array(),
+'britishcolumbia' => array(),
+'broadcast' => array(),
+'brunel' => array(),
+'brussel' => array(),
+'brussels' => array(),
+'bruxelles' => array(),
+'building' => array(),
+'burghof' => array(),
+'bus' => array(),
+'bushey' => array(),
+'cadaques' => array(),
+'california' => array(),
+'cambridge' => array(),
+'can' => array(),
+'canada' => array(),
+'capebreton' => array(),
+'carrier' => array(),
+'cartoonart' => array(),
+'casadelamoneda' => array(),
+'castle' => array(),
+'castres' => array(),
+'celtic' => array(),
+'center' => array(),
+'chattanooga' => array(),
+'cheltenham' => array(),
+'chesapeakebay' => array(),
+'chicago' => array(),
+'children' => array(),
+'childrens' => array(),
+'childrensgarden' => array(),
+'chiropractic' => array(),
+'chocolate' => array(),
+'christiansburg' => array(),
+'cincinnati' => array(),
+'cinema' => array(),
+'circus' => array(),
+'civilisation' => array(),
+'civilization' => array(),
+'civilwar' => array(),
+'clinton' => array(),
+'clock' => array(),
+'coal' => array(),
+'coastaldefence' => array(),
+'cody' => array(),
+'coldwar' => array(),
+'collection' => array(),
+'colonialwilliamsburg' => array(),
+'coloradoplateau' => array(),
+'columbia' => array(),
+'columbus' => array(),
+'communication' => array(),
+'communications' => array(),
+'community' => array(),
+'computer' => array(),
+'computerhistory' => array(),
+'comunicações' => array(),
+'contemporary' => array(),
+'contemporaryart' => array(),
+'convent' => array(),
+'copenhagen' => array(),
+'corporation' => array(),
+'correios-e-telecomunicações' => array(),
+'corvette' => array(),
+'costume' => array(),
+'countryestate' => array(),
+'county' => array(),
+'crafts' => array(),
+'cranbrook' => array(),
+'creation' => array(),
+'cultural' => array(),
+'culturalcenter' => array(),
+'culture' => array(),
+'cyber' => array(),
+'cymru' => array(),
+'dali' => array(),
+'dallas' => array(),
+'database' => array(),
+'ddr' => array(),
+'decorativearts' => array(),
+'delaware' => array(),
+'delmenhorst' => array(),
+'denmark' => array(),
+'depot' => array(),
+'design' => array(),
+'detroit' => array(),
+'dinosaur' => array(),
+'discovery' => array(),
+'dolls' => array(),
+'donostia' => array(),
+'durham' => array(),
+'eastafrica' => array(),
+'eastcoast' => array(),
+'education' => array(),
+'educational' => array(),
+'egyptian' => array(),
+'eisenbahn' => array(),
+'elburg' => array(),
+'elvendrell' => array(),
+'embroidery' => array(),
+'encyclopedic' => array(),
+'england' => array(),
+'entomology' => array(),
+'environment' => array(),
+'environmentalconservation' => array(),
+'epilepsy' => array(),
+'essex' => array(),
+'estate' => array(),
+'ethnology' => array(),
+'exeter' => array(),
+'exhibition' => array(),
+'family' => array(),
+'farm' => array(),
+'farmequipment' => array(),
+'farmers' => array(),
+'farmstead' => array(),
+'field' => array(),
+'figueres' => array(),
+'filatelia' => array(),
+'film' => array(),
+'fineart' => array(),
+'finearts' => array(),
+'finland' => array(),
+'flanders' => array(),
+'florida' => array(),
+'force' => array(),
+'fortmissoula' => array(),
+'fortworth' => array(),
+'foundation' => array(),
+'francaise' => array(),
+'frankfurt' => array(),
+'franziskaner' => array(),
+'freemasonry' => array(),
+'freiburg' => array(),
+'fribourg' => array(),
+'frog' => array(),
+'fundacio' => array(),
+'furniture' => array(),
+'gallery' => array(),
+'garden' => array(),
+'gateway' => array(),
+'geelvinck' => array(),
+'gemological' => array(),
+'geology' => array(),
+'georgia' => array(),
+'giessen' => array(),
+'glas' => array(),
+'glass' => array(),
+'gorge' => array(),
+'grandrapids' => array(),
+'graz' => array(),
+'guernsey' => array(),
+'halloffame' => array(),
+'hamburg' => array(),
+'handson' => array(),
+'harvestcelebration' => array(),
+'hawaii' => array(),
+'health' => array(),
+'heimatunduhren' => array(),
+'hellas' => array(),
+'helsinki' => array(),
+'hembygdsforbund' => array(),
+'heritage' => array(),
+'histoire' => array(),
+'historical' => array(),
+'historicalsociety' => array(),
+'historichouses' => array(),
+'historisch' => array(),
+'historisches' => array(),
+'history' => array(),
+'historyofscience' => array(),
+'horology' => array(),
+'house' => array(),
+'humanities' => array(),
+'illustration' => array(),
+'imageandsound' => array(),
+'indian' => array(),
+'indiana' => array(),
+'indianapolis' => array(),
+'indianmarket' => array(),
+'intelligence' => array(),
+'interactive' => array(),
+'iraq' => array(),
+'iron' => array(),
+'isleofman' => array(),
+'jamison' => array(),
+'jefferson' => array(),
+'jerusalem' => array(),
+'jewelry' => array(),
+'jewish' => array(),
+'jewishart' => array(),
+'jfk' => array(),
+'journalism' => array(),
+'judaica' => array(),
+'judygarland' => array(),
+'juedisches' => array(),
+'juif' => array(),
+'karate' => array(),
+'karikatur' => array(),
+'kids' => array(),
+'koebenhavn' => array(),
+'koeln' => array(),
+'kunst' => array(),
+'kunstsammlung' => array(),
+'kunstunddesign' => array(),
+'labor' => array(),
+'labour' => array(),
+'lajolla' => array(),
+'lancashire' => array(),
+'landes' => array(),
+'lans' => array(),
+'läns' => array(),
+'larsson' => array(),
+'lewismiller' => array(),
+'lincoln' => array(),
+'linz' => array(),
+'living' => array(),
+'livinghistory' => array(),
+'localhistory' => array(),
+'london' => array(),
+'losangeles' => array(),
+'louvre' => array(),
+'loyalist' => array(),
+'lucerne' => array(),
+'luxembourg' => array(),
+'luzern' => array(),
+'mad' => array(),
+'madrid' => array(),
+'mallorca' => array(),
+'manchester' => array(),
+'mansion' => array(),
+'mansions' => array(),
+'manx' => array(),
+'marburg' => array(),
+'maritime' => array(),
+'maritimo' => array(),
+'maryland' => array(),
+'marylhurst' => array(),
+'media' => array(),
+'medical' => array(),
+'medizinhistorisches' => array(),
+'meeres' => array(),
+'memorial' => array(),
+'mesaverde' => array(),
+'michigan' => array(),
+'midatlantic' => array(),
+'military' => array(),
+'mill' => array(),
+'miners' => array(),
+'mining' => array(),
+'minnesota' => array(),
+'missile' => array(),
+'missoula' => array(),
+'modern' => array(),
+'moma' => array(),
+'money' => array(),
+'monmouth' => array(),
+'monticello' => array(),
+'montreal' => array(),
+'moscow' => array(),
+'motorcycle' => array(),
+'muenchen' => array(),
+'muenster' => array(),
+'mulhouse' => array(),
+'muncie' => array(),
+'museet' => array(),
+'museumcenter' => array(),
+'museumvereniging' => array(),
+'music' => array(),
+'national' => array(),
+'nationalfirearms' => array(),
+'nationalheritage' => array(),
+'nativeamerican' => array(),
+'naturalhistory' => array(),
+'naturalhistorymuseum' => array(),
+'naturalsciences' => array(),
+'nature' => array(),
+'naturhistorisches' => array(),
+'natuurwetenschappen' => array(),
+'naumburg' => array(),
+'naval' => array(),
+'nebraska' => array(),
+'neues' => array(),
+'newhampshire' => array(),
+'newjersey' => array(),
+'newmexico' => array(),
+'newport' => array(),
+'newspaper' => array(),
+'newyork' => array(),
+'niepce' => array(),
+'norfolk' => array(),
+'north' => array(),
+'nrw' => array(),
+'nuernberg' => array(),
+'nuremberg' => array(),
+'nyc' => array(),
+'nyny' => array(),
+'oceanographic' => array(),
+'oceanographique' => array(),
+'omaha' => array(),
+'online' => array(),
+'ontario' => array(),
+'openair' => array(),
+'oregon' => array(),
+'oregontrail' => array(),
+'otago' => array(),
+'oxford' => array(),
+'pacific' => array(),
+'paderborn' => array(),
+'palace' => array(),
+'paleo' => array(),
+'palmsprings' => array(),
+'panama' => array(),
+'paris' => array(),
+'pasadena' => array(),
+'pharmacy' => array(),
+'philadelphia' => array(),
+'philadelphiaarea' => array(),
+'philately' => array(),
+'phoenix' => array(),
+'photography' => array(),
+'pilots' => array(),
+'pittsburgh' => array(),
+'planetarium' => array(),
+'plantation' => array(),
+'plants' => array(),
+'plaza' => array(),
+'portal' => array(),
+'portland' => array(),
+'portlligat' => array(),
+'posts-and-telecommunications' => array(),
+'preservation' => array(),
+'presidio' => array(),
+'press' => array(),
+'project' => array(),
+'public' => array(),
+'pubol' => array(),
+'quebec' => array(),
+'railroad' => array(),
+'railway' => array(),
+'research' => array(),
+'resistance' => array(),
+'riodejaneiro' => array(),
+'rochester' => array(),
+'rockart' => array(),
+'roma' => array(),
+'russia' => array(),
+'saintlouis' => array(),
+'salem' => array(),
+'salvadordali' => array(),
+'salzburg' => array(),
+'sandiego' => array(),
+'sanfrancisco' => array(),
+'santabarbara' => array(),
+'santacruz' => array(),
+'santafe' => array(),
+'saskatchewan' => array(),
+'satx' => array(),
+'savannahga' => array(),
+'schlesisches' => array(),
+'schoenbrunn' => array(),
+'schokoladen' => array(),
+'school' => array(),
+'schweiz' => array(),
+'science' => array(),
+'scienceandhistory' => array(),
+'scienceandindustry' => array(),
+'sciencecenter' => array(),
+'sciencecenters' => array(),
+'science-fiction' => array(),
+'sciencehistory' => array(),
+'sciences' => array(),
+'sciencesnaturelles' => array(),
+'scotland' => array(),
+'seaport' => array(),
+'settlement' => array(),
+'settlers' => array(),
+'shell' => array(),
+'sherbrooke' => array(),
+'sibenik' => array(),
+'silk' => array(),
+'ski' => array(),
+'skole' => array(),
+'society' => array(),
+'sologne' => array(),
+'soundandvision' => array(),
+'southcarolina' => array(),
+'southwest' => array(),
+'space' => array(),
+'spy' => array(),
+'square' => array(),
+'stadt' => array(),
+'stalbans' => array(),
+'starnberg' => array(),
+'state' => array(),
+'stateofdelaware' => array(),
+'station' => array(),
+'steam' => array(),
+'steiermark' => array(),
+'stjohn' => array(),
+'stockholm' => array(),
+'stpetersburg' => array(),
+'stuttgart' => array(),
+'suisse' => array(),
+'surgeonshall' => array(),
+'surrey' => array(),
+'svizzera' => array(),
+'sweden' => array(),
+'sydney' => array(),
+'tank' => array(),
+'tcm' => array(),
+'technology' => array(),
+'telekommunikation' => array(),
+'television' => array(),
+'texas' => array(),
+'textile' => array(),
+'theater' => array(),
+'time' => array(),
+'timekeeping' => array(),
+'topology' => array(),
+'torino' => array(),
+'touch' => array(),
+'town' => array(),
+'transport' => array(),
+'tree' => array(),
+'trolley' => array(),
+'trust' => array(),
+'trustee' => array(),
+'uhren' => array(),
+'ulm' => array(),
+'undersea' => array(),
+'university' => array(),
+'usa' => array(),
+'usantiques' => array(),
+'usarts' => array(),
+'uscountryestate' => array(),
+'usculture' => array(),
+'usdecorativearts' => array(),
+'usgarden' => array(),
+'ushistory' => array(),
+'ushuaia' => array(),
+'uslivinghistory' => array(),
+'utah' => array(),
+'uvic' => array(),
+'valley' => array(),
+'vantaa' => array(),
+'versailles' => array(),
+'viking' => array(),
+'village' => array(),
+'virginia' => array(),
+'virtual' => array(),
+'virtuel' => array(),
+'vlaanderen' => array(),
+'volkenkunde' => array(),
+'wales' => array(),
+'wallonie' => array(),
+'war' => array(),
+'washingtondc' => array(),
+'watchandclock' => array(),
+'watch-and-clock' => array(),
+'western' => array(),
+'westfalen' => array(),
+'whaling' => array(),
+'wildlife' => array(),
+'williamsburg' => array(),
+'windmill' => array(),
+'workshop' => array(),
+'york' => array(),
+'yorkshire' => array(),
+'yosemite' => array(),
+'youth' => array(),
+'zoological' => array(),
+'zoology' => array(),
+'ירושלים' => array(),
+'иком' => array()),
+'mv' => array('aero' => array(),
+'biz' => array(),
+'com' => array(),
+'coop' => array(),
+'edu' => array(),
+'gov' => array(),
+'info' => array(),
+'int' => array(),
+'mil' => array(),
+'museum' => array(),
+'name' => array(),
+'net' => array(),
+'org' => array(),
+'pro' => array()),
+'mw' => array('ac' => array(),
+'biz' => array(),
+'co' => array(),
+'com' => array(),
+'coop' => array(),
+'edu' => array(),
+'gov' => array(),
+'int' => array(),
+'museum' => array(),
+'net' => array(),
+'org' => array()),
+'mx' => array('com' => array(),
+'org' => array(),
+'gob' => array(),
+'edu' => array(),
+'net' => array(),
+'blogspot' => array()),
+'my' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'edu' => array(),
+'mil' => array(),
+'name' => array()),
+'mz' => array('*' => array(),
+'teledata' => array('!' => '')),
+'na' => array('info' => array(),
+'pro' => array(),
+'name' => array(),
+'school' => array(),
+'or' => array(),
+'dr' => array(),
+'us' => array(),
+'mx' => array(),
+'ca' => array(),
+'in' => array(),
+'cc' => array(),
+'tv' => array(),
+'ws' => array(),
+'mobi' => array(),
+'co' => array(),
+'com' => array(),
+'org' => array()),
+'name' => array('her' => array('forgot' => array()),
+'his' => array('forgot' => array())),
+'nc' => array('asso' => array()),
+'ne' => array(),
+'net' => array('cloudfront' => array(),
+'gb' => array(),
+'hu' => array(),
+'jp' => array(),
+'se' => array(),
+'uk' => array(),
+'in' => array(),
+'at-band-camp' => array(),
+'blogdns' => array(),
+'broke-it' => array(),
+'buyshouses' => array(),
+'dnsalias' => array(),
+'dnsdojo' => array(),
+'does-it' => array(),
+'dontexist' => array(),
+'dynalias' => array(),
+'dynathome' => array(),
+'endofinternet' => array(),
+'from-az' => array(),
+'from-co' => array(),
+'from-la' => array(),
+'from-ny' => array(),
+'gets-it' => array(),
+'ham-radio-op' => array(),
+'homeftp' => array(),
+'homeip' => array(),
+'homelinux' => array(),
+'homeunix' => array(),
+'in-the-band' => array(),
+'is-a-chef' => array(),
+'is-a-geek' => array(),
+'isa-geek' => array(),
+'kicks-ass' => array(),
+'office-on-the' => array(),
+'podzone' => array(),
+'scrapper-site' => array(),
+'selfip' => array(),
+'sells-it' => array(),
+'servebbs' => array(),
+'serveftp' => array(),
+'thruhere' => array(),
+'webhop' => array(),
+'fastly' => array('ssl' => array('a' => array(),
+'b' => array(),
+'global' => array()),
+'prod' => array('a' => array(),
+'global' => array())),
+'azurewebsites' => array(),
+'azure-mobile' => array(),
+'cloudapp' => array(),
+'za' => array()),
+'nf' => array('com' => array(),
+'net' => array(),
+'per' => array(),
+'rec' => array(),
+'web' => array(),
+'arts' => array(),
+'firm' => array(),
+'info' => array(),
+'other' => array(),
+'store' => array()),
+'ng' => array('com' => array(),
+'edu' => array(),
+'name' => array(),
+'net' => array(),
+'org' => array(),
+'sch' => array(),
+'gov' => array(),
+'mil' => array(),
+'mobi' => array()),
+'ni' => array('*' => array()),
+'nl' => array('bv' => array(),
+'co' => array(),
+'blogspot' => array()),
+'no' => array('fhs' => array(),
+'vgs' => array(),
+'fylkesbibl' => array(),
+'folkebibl' => array(),
+'museum' => array(),
+'idrett' => array(),
+'priv' => array(),
+'mil' => array(),
+'stat' => array(),
+'dep' => array(),
+'kommune' => array(),
+'herad' => array(),
+'aa' => array('gs' => array()),
+'ah' => array('gs' => array()),
+'bu' => array('gs' => array()),
+'fm' => array('gs' => array()),
+'hl' => array('gs' => array()),
+'hm' => array('gs' => array()),
+'jan-mayen' => array('gs' => array()),
+'mr' => array('gs' => array()),
+'nl' => array('gs' => array()),
+'nt' => array('gs' => array()),
+'of' => array('gs' => array()),
+'ol' => array('gs' => array()),
+'oslo' => array('gs' => array()),
+'rl' => array('gs' => array()),
+'sf' => array('gs' => array()),
+'st' => array('gs' => array()),
+'svalbard' => array('gs' => array()),
+'tm' => array('gs' => array()),
+'tr' => array('gs' => array()),
+'va' => array('gs' => array()),
+'vf' => array('gs' => array()),
+'akrehamn' => array(),
+'åkrehamn' => array(),
+'algard' => array(),
+'ålgård' => array(),
+'arna' => array(),
+'brumunddal' => array(),
+'bryne' => array(),
+'bronnoysund' => array(),
+'brønnøysund' => array(),
+'drobak' => array(),
+'drøbak' => array(),
+'egersund' => array(),
+'fetsund' => array(),
+'floro' => array(),
+'florø' => array(),
+'fredrikstad' => array(),
+'hokksund' => array(),
+'honefoss' => array(),
+'hønefoss' => array(),
+'jessheim' => array(),
+'jorpeland' => array(),
+'jørpeland' => array(),
+'kirkenes' => array(),
+'kopervik' => array(),
+'krokstadelva' => array(),
+'langevag' => array(),
+'langevåg' => array(),
+'leirvik' => array(),
+'mjondalen' => array(),
+'mjøndalen' => array(),
+'mo-i-rana' => array(),
+'mosjoen' => array(),
+'mosjøen' => array(),
+'nesoddtangen' => array(),
+'orkanger' => array(),
+'osoyro' => array(),
+'osøyro' => array(),
+'raholt' => array(),
+'råholt' => array(),
+'sandnessjoen' => array(),
+'sandnessjøen' => array(),
+'skedsmokorset' => array(),
+'slattum' => array(),
+'spjelkavik' => array(),
+'stathelle' => array(),
+'stavern' => array(),
+'stjordalshalsen' => array(),
+'stjørdalshalsen' => array(),
+'tananger' => array(),
+'tranby' => array(),
+'vossevangen' => array(),
+'afjord' => array(),
+'åfjord' => array(),
+'agdenes' => array(),
+'al' => array(),
+'ål' => array(),
+'alesund' => array(),
+'ålesund' => array(),
+'alstahaug' => array(),
+'alta' => array(),
+'áltá' => array(),
+'alaheadju' => array(),
+'álaheadju' => array(),
+'alvdal' => array(),
+'amli' => array(),
+'åmli' => array(),
+'amot' => array(),
+'åmot' => array(),
+'andebu' => array(),
+'andoy' => array(),
+'andøy' => array(),
+'andasuolo' => array(),
+'ardal' => array(),
+'årdal' => array(),
+'aremark' => array(),
+'arendal' => array(),
+'ås' => array(),
+'aseral' => array(),
+'åseral' => array(),
+'asker' => array(),
+'askim' => array(),
+'askvoll' => array(),
+'askoy' => array(),
+'askøy' => array(),
+'asnes' => array(),
+'åsnes' => array(),
+'audnedaln' => array(),
+'aukra' => array(),
+'aure' => array(),
+'aurland' => array(),
+'aurskog-holand' => array(),
+'aurskog-høland' => array(),
+'austevoll' => array(),
+'austrheim' => array(),
+'averoy' => array(),
+'averøy' => array(),
+'balestrand' => array(),
+'ballangen' => array(),
+'balat' => array(),
+'bálát' => array(),
+'balsfjord' => array(),
+'bahccavuotna' => array(),
+'báhccavuotna' => array(),
+'bamble' => array(),
+'bardu' => array(),
+'beardu' => array(),
+'beiarn' => array(),
+'bajddar' => array(),
+'bájddar' => array(),
+'baidar' => array(),
+'báidár' => array(),
+'berg' => array(),
+'bergen' => array(),
+'berlevag' => array(),
+'berlevåg' => array(),
+'bearalvahki' => array(),
+'bearalváhki' => array(),
+'bindal' => array(),
+'birkenes' => array(),
+'bjarkoy' => array(),
+'bjarkøy' => array(),
+'bjerkreim' => array(),
+'bjugn' => array(),
+'bodo' => array(),
+'bodø' => array(),
+'badaddja' => array(),
+'bådåddjå' => array(),
+'budejju' => array(),
+'bokn' => array(),
+'bremanger' => array(),
+'bronnoy' => array(),
+'brønnøy' => array(),
+'bygland' => array(),
+'bykle' => array(),
+'barum' => array(),
+'bærum' => array(),
+'telemark' => array('bo' => array(),
+'bø' => array()),
+'nordland' => array('bo' => array(),
+'bø' => array(),
+'heroy' => array(),
+'herøy' => array()),
+'bievat' => array(),
+'bievát' => array(),
+'bomlo' => array(),
+'bømlo' => array(),
+'batsfjord' => array(),
+'båtsfjord' => array(),
+'bahcavuotna' => array(),
+'báhcavuotna' => array(),
+'dovre' => array(),
+'drammen' => array(),
+'drangedal' => array(),
+'dyroy' => array(),
+'dyrøy' => array(),
+'donna' => array(),
+'dønna' => array(),
+'eid' => array(),
+'eidfjord' => array(),
+'eidsberg' => array(),
+'eidskog' => array(),
+'eidsvoll' => array(),
+'eigersund' => array(),
+'elverum' => array(),
+'enebakk' => array(),
+'engerdal' => array(),
+'etne' => array(),
+'etnedal' => array(),
+'evenes' => array(),
+'evenassi' => array(),
+'evenášši' => array(),
+'evje-og-hornnes' => array(),
+'farsund' => array(),
+'fauske' => array(),
+'fuossko' => array(),
+'fuoisku' => array(),
+'fedje' => array(),
+'fet' => array(),
+'finnoy' => array(),
+'finnøy' => array(),
+'fitjar' => array(),
+'fjaler' => array(),
+'fjell' => array(),
+'flakstad' => array(),
+'flatanger' => array(),
+'flekkefjord' => array(),
+'flesberg' => array(),
+'flora' => array(),
+'fla' => array(),
+'flå' => array(),
+'folldal' => array(),
+'forsand' => array(),
+'fosnes' => array(),
+'frei' => array(),
+'frogn' => array(),
+'froland' => array(),
+'frosta' => array(),
+'frana' => array(),
+'fræna' => array(),
+'froya' => array(),
+'frøya' => array(),
+'fusa' => array(),
+'fyresdal' => array(),
+'forde' => array(),
+'førde' => array(),
+'gamvik' => array(),
+'gangaviika' => array(),
+'gáŋgaviika' => array(),
+'gaular' => array(),
+'gausdal' => array(),
+'gildeskal' => array(),
+'gildeskål' => array(),
+'giske' => array(),
+'gjemnes' => array(),
+'gjerdrum' => array(),
+'gjerstad' => array(),
+'gjesdal' => array(),
+'gjovik' => array(),
+'gjøvik' => array(),
+'gloppen' => array(),
+'gol' => array(),
+'gran' => array(),
+'grane' => array(),
+'granvin' => array(),
+'gratangen' => array(),
+'grimstad' => array(),
+'grong' => array(),
+'kraanghke' => array(),
+'kråanghke' => array(),
+'grue' => array(),
+'gulen' => array(),
+'hadsel' => array(),
+'halden' => array(),
+'halsa' => array(),
+'hamar' => array(),
+'hamaroy' => array(),
+'habmer' => array(),
+'hábmer' => array(),
+'hapmir' => array(),
+'hápmir' => array(),
+'hammerfest' => array(),
+'hammarfeasta' => array(),
+'hámmárfeasta' => array(),
+'haram' => array(),
+'hareid' => array(),
+'harstad' => array(),
+'hasvik' => array(),
+'aknoluokta' => array(),
+'ákŋoluokta' => array(),
+'hattfjelldal' => array(),
+'aarborte' => array(),
+'haugesund' => array(),
+'hemne' => array(),
+'hemnes' => array(),
+'hemsedal' => array(),
+'more-og-romsdal' => array('heroy' => array(),
+'sande' => array()),
+'møre-og-romsdal' => array('herøy' => array(),
+'sande' => array()),
+'hitra' => array(),
+'hjartdal' => array(),
+'hjelmeland' => array(),
+'hobol' => array(),
+'hobøl' => array(),
+'hof' => array(),
+'hol' => array(),
+'hole' => array(),
+'holmestrand' => array(),
+'holtalen' => array(),
+'holtålen' => array(),
+'hornindal' => array(),
+'horten' => array(),
+'hurdal' => array(),
+'hurum' => array(),
+'hvaler' => array(),
+'hyllestad' => array(),
+'hagebostad' => array(),
+'hægebostad' => array(),
+'hoyanger' => array(),
+'høyanger' => array(),
+'hoylandet' => array(),
+'høylandet' => array(),
+'ha' => array(),
+'hå' => array(),
+'ibestad' => array(),
+'inderoy' => array(),
+'inderøy' => array(),
+'iveland' => array(),
+'jevnaker' => array(),
+'jondal' => array(),
+'jolster' => array(),
+'jølster' => array(),
+'karasjok' => array(),
+'karasjohka' => array(),
+'kárášjohka' => array(),
+'karlsoy' => array(),
+'galsa' => array(),
+'gálsá' => array(),
+'karmoy' => array(),
+'karmøy' => array(),
+'kautokeino' => array(),
+'guovdageaidnu' => array(),
+'klepp' => array(),
+'klabu' => array(),
+'klæbu' => array(),
+'kongsberg' => array(),
+'kongsvinger' => array(),
+'kragero' => array(),
+'kragerø' => array(),
+'kristiansand' => array(),
+'kristiansund' => array(),
+'krodsherad' => array(),
+'krødsherad' => array(),
+'kvalsund' => array(),
+'rahkkeravju' => array(),
+'ráhkkerávju' => array(),
+'kvam' => array(),
+'kvinesdal' => array(),
+'kvinnherad' => array(),
+'kviteseid' => array(),
+'kvitsoy' => array(),
+'kvitsøy' => array(),
+'kvafjord' => array(),
+'kvæfjord' => array(),
+'giehtavuoatna' => array(),
+'kvanangen' => array(),
+'kvænangen' => array(),
+'navuotna' => array(),
+'návuotna' => array(),
+'kafjord' => array(),
+'kåfjord' => array(),
+'gaivuotna' => array(),
+'gáivuotna' => array(),
+'larvik' => array(),
+'lavangen' => array(),
+'lavagis' => array(),
+'loabat' => array(),
+'loabát' => array(),
+'lebesby' => array(),
+'davvesiida' => array(),
+'leikanger' => array(),
+'leirfjord' => array(),
+'leka' => array(),
+'leksvik' => array(),
+'lenvik' => array(),
+'leangaviika' => array(),
+'leaŋgaviika' => array(),
+'lesja' => array(),
+'levanger' => array(),
+'lier' => array(),
+'lierne' => array(),
+'lillehammer' => array(),
+'lillesand' => array(),
+'lindesnes' => array(),
+'lindas' => array(),
+'lindås' => array(),
+'lom' => array(),
+'loppa' => array(),
+'lahppi' => array(),
+'láhppi' => array(),
+'lund' => array(),
+'lunner' => array(),
+'luroy' => array(),
+'lurøy' => array(),
+'luster' => array(),
+'lyngdal' => array(),
+'lyngen' => array(),
+'ivgu' => array(),
+'lardal' => array(),
+'lerdal' => array(),
+'lærdal' => array(),
+'lodingen' => array(),
+'lødingen' => array(),
+'lorenskog' => array(),
+'lørenskog' => array(),
+'loten' => array(),
+'løten' => array(),
+'malvik' => array(),
+'masoy' => array(),
+'måsøy' => array(),
+'muosat' => array(),
+'muosát' => array(),
+'mandal' => array(),
+'marker' => array(),
+'marnardal' => array(),
+'masfjorden' => array(),
+'meland' => array(),
+'meldal' => array(),
+'melhus' => array(),
+'meloy' => array(),
+'meløy' => array(),
+'meraker' => array(),
+'meråker' => array(),
+'moareke' => array(),
+'moåreke' => array(),
+'midsund' => array(),
+'midtre-gauldal' => array(),
+'modalen' => array(),
+'modum' => array(),
+'molde' => array(),
+'moskenes' => array(),
+'moss' => array(),
+'mosvik' => array(),
+'malselv' => array(),
+'målselv' => array(),
+'malatvuopmi' => array(),
+'málatvuopmi' => array(),
+'namdalseid' => array(),
+'aejrie' => array(),
+'namsos' => array(),
+'namsskogan' => array(),
+'naamesjevuemie' => array(),
+'nååmesjevuemie' => array(),
+'laakesvuemie' => array(),
+'nannestad' => array(),
+'narvik' => array(),
+'narviika' => array(),
+'naustdal' => array(),
+'nedre-eiker' => array(),
+'akershus' => array('nes' => array()),
+'buskerud' => array('nes' => array()),
+'nesna' => array(),
+'nesodden' => array(),
+'nesseby' => array(),
+'unjarga' => array(),
+'unjárga' => array(),
+'nesset' => array(),
+'nissedal' => array(),
+'nittedal' => array(),
+'nord-aurdal' => array(),
+'nord-fron' => array(),
+'nord-odal' => array(),
+'norddal' => array(),
+'nordkapp' => array(),
+'davvenjarga' => array(),
+'davvenjárga' => array(),
+'nordre-land' => array(),
+'nordreisa' => array(),
+'raisa' => array(),
+'ráisa' => array(),
+'nore-og-uvdal' => array(),
+'notodden' => array(),
+'naroy' => array(),
+'nærøy' => array(),
+'notteroy' => array(),
+'nøtterøy' => array(),
+'odda' => array(),
+'oksnes' => array(),
+'øksnes' => array(),
+'oppdal' => array(),
+'oppegard' => array(),
+'oppegård' => array(),
+'orkdal' => array(),
+'orland' => array(),
+'ørland' => array(),
+'orskog' => array(),
+'ørskog' => array(),
+'orsta' => array(),
+'ørsta' => array(),
+'hedmark' => array('os' => array(),
+'valer' => array(),
+'våler' => array()),
+'hordaland' => array('os' => array()),
+'osen' => array(),
+'osteroy' => array(),
+'osterøy' => array(),
+'ostre-toten' => array(),
+'østre-toten' => array(),
+'overhalla' => array(),
+'ovre-eiker' => array(),
+'øvre-eiker' => array(),
+'oyer' => array(),
+'øyer' => array(),
+'oygarden' => array(),
+'øygarden' => array(),
+'oystre-slidre' => array(),
+'øystre-slidre' => array(),
+'porsanger' => array(),
+'porsangu' => array(),
+'porsáŋgu' => array(),
+'porsgrunn' => array(),
+'radoy' => array(),
+'radøy' => array(),
+'rakkestad' => array(),
+'rana' => array(),
+'ruovat' => array(),
+'randaberg' => array(),
+'rauma' => array(),
+'rendalen' => array(),
+'rennebu' => array(),
+'rennesoy' => array(),
+'rennesøy' => array(),
+'rindal' => array(),
+'ringebu' => array(),
+'ringerike' => array(),
+'ringsaker' => array(),
+'rissa' => array(),
+'risor' => array(),
+'risør' => array(),
+'roan' => array(),
+'rollag' => array(),
+'rygge' => array(),
+'ralingen' => array(),
+'rælingen' => array(),
+'rodoy' => array(),
+'rødøy' => array(),
+'romskog' => array(),
+'rømskog' => array(),
+'roros' => array(),
+'røros' => array(),
+'rost' => array(),
+'røst' => array(),
+'royken' => array(),
+'røyken' => array(),
+'royrvik' => array(),
+'røyrvik' => array(),
+'rade' => array(),
+'råde' => array(),
+'salangen' => array(),
+'siellak' => array(),
+'saltdal' => array(),
+'salat' => array(),
+'sálát' => array(),
+'sálat' => array(),
+'samnanger' => array(),
+'vestfold' => array('sande' => array()),
+'sandefjord' => array(),
+'sandnes' => array(),
+'sandoy' => array(),
+'sandøy' => array(),
+'sarpsborg' => array(),
+'sauda' => array(),
+'sauherad' => array(),
+'sel' => array(),
+'selbu' => array(),
+'selje' => array(),
+'seljord' => array(),
+'sigdal' => array(),
+'siljan' => array(),
+'sirdal' => array(),
+'skaun' => array(),
+'skedsmo' => array(),
+'ski' => array(),
+'skien' => array(),
+'skiptvet' => array(),
+'skjervoy' => array(),
+'skjervøy' => array(),
+'skierva' => array(),
+'skiervá' => array(),
+'skjak' => array(),
+'skjåk' => array(),
+'skodje' => array(),
+'skanland' => array(),
+'skånland' => array(),
+'skanit' => array(),
+'skánit' => array(),
+'smola' => array(),
+'smøla' => array(),
+'snillfjord' => array(),
+'snasa' => array(),
+'snåsa' => array(),
+'snoasa' => array(),
+'snaase' => array(),
+'snåase' => array(),
+'sogndal' => array(),
+'sokndal' => array(),
+'sola' => array(),
+'solund' => array(),
+'songdalen' => array(),
+'sortland' => array(),
+'spydeberg' => array(),
+'stange' => array(),
+'stavanger' => array(),
+'steigen' => array(),
+'steinkjer' => array(),
+'stjordal' => array(),
+'stjørdal' => array(),
+'stokke' => array(),
+'stor-elvdal' => array(),
+'stord' => array(),
+'stordal' => array(),
+'storfjord' => array(),
+'omasvuotna' => array(),
+'strand' => array(),
+'stranda' => array(),
+'stryn' => array(),
+'sula' => array(),
+'suldal' => array(),
+'sund' => array(),
+'sunndal' => array(),
+'surnadal' => array(),
+'sveio' => array(),
+'svelvik' => array(),
+'sykkylven' => array(),
+'sogne' => array(),
+'søgne' => array(),
+'somna' => array(),
+'sømna' => array(),
+'sondre-land' => array(),
+'søndre-land' => array(),
+'sor-aurdal' => array(),
+'sør-aurdal' => array(),
+'sor-fron' => array(),
+'sør-fron' => array(),
+'sor-odal' => array(),
+'sør-odal' => array(),
+'sor-varanger' => array(),
+'sør-varanger' => array(),
+'matta-varjjat' => array(),
+'mátta-várjjat' => array(),
+'sorfold' => array(),
+'sørfold' => array(),
+'sorreisa' => array(),
+'sørreisa' => array(),
+'sorum' => array(),
+'sørum' => array(),
+'tana' => array(),
+'deatnu' => array(),
+'time' => array(),
+'tingvoll' => array(),
+'tinn' => array(),
+'tjeldsund' => array(),
+'dielddanuorri' => array(),
+'tjome' => array(),
+'tjøme' => array(),
+'tokke' => array(),
+'tolga' => array(),
+'torsken' => array(),
+'tranoy' => array(),
+'tranøy' => array(),
+'tromso' => array(),
+'tromsø' => array(),
+'tromsa' => array(),
+'romsa' => array(),
+'trondheim' => array(),
+'troandin' => array(),
+'trysil' => array(),
+'trana' => array(),
+'træna' => array(),
+'trogstad' => array(),
+'trøgstad' => array(),
+'tvedestrand' => array(),
+'tydal' => array(),
+'tynset' => array(),
+'tysfjord' => array(),
+'divtasvuodna' => array(),
+'divttasvuotna' => array(),
+'tysnes' => array(),
+'tysvar' => array(),
+'tysvær' => array(),
+'tonsberg' => array(),
+'tønsberg' => array(),
+'ullensaker' => array(),
+'ullensvang' => array(),
+'ulvik' => array(),
+'utsira' => array(),
+'vadso' => array(),
+'vadsø' => array(),
+'cahcesuolo' => array(),
+'čáhcesuolo' => array(),
+'vaksdal' => array(),
+'valle' => array(),
+'vang' => array(),
+'vanylven' => array(),
+'vardo' => array(),
+'vardø' => array(),
+'varggat' => array(),
+'várggát' => array(),
+'vefsn' => array(),
+'vaapste' => array(),
+'vega' => array(),
+'vegarshei' => array(),
+'vegårshei' => array(),
+'vennesla' => array(),
+'verdal' => array(),
+'verran' => array(),
+'vestby' => array(),
+'vestnes' => array(),
+'vestre-slidre' => array(),
+'vestre-toten' => array(),
+'vestvagoy' => array(),
+'vestvågøy' => array(),
+'vevelstad' => array(),
+'vik' => array(),
+'vikna' => array(),
+'vindafjord' => array(),
+'volda' => array(),
+'voss' => array(),
+'varoy' => array(),
+'værøy' => array(),
+'vagan' => array(),
+'vågan' => array(),
+'voagat' => array(),
+'vagsoy' => array(),
+'vågsøy' => array(),
+'vaga' => array(),
+'vågå' => array(),
+'ostfold' => array('valer' => array()),
+'østfold' => array('våler' => array()),
+'co' => array(),
+'blogspot' => array()),
+'np' => array('*' => array()),
+'nr' => array('biz' => array(),
+'info' => array(),
+'gov' => array(),
+'edu' => array(),
+'org' => array(),
+'net' => array(),
+'com' => array()),
+'nu' => array('merseine' => array(),
+'mine' => array(),
+'shacknet' => array()),
+'nz' => array('ac' => array(),
+'co' => array('blogspot' => array()),
+'cri' => array(),
+'geek' => array(),
+'gen' => array(),
+'govt' => array(),
+'health' => array(),
+'iwi' => array(),
+'kiwi' => array(),
+'maori' => array(),
+'mil' => array(),
+'māori' => array(),
+'net' => array(),
+'org' => array(),
+'parliament' => array(),
+'school' => array()),
+'om' => array('co' => array(),
+'com' => array(),
+'edu' => array(),
+'gov' => array(),
+'med' => array(),
+'museum' => array(),
+'net' => array(),
+'org' => array(),
+'pro' => array()),
+'org' => array('ae' => array(),
+'us' => array(),
+'dyndns' => array('go' => array(),
+'home' => array()),
+'blogdns' => array(),
+'blogsite' => array(),
+'boldlygoingnowhere' => array(),
+'dnsalias' => array(),
+'dnsdojo' => array(),
+'doesntexist' => array(),
+'dontexist' => array(),
+'doomdns' => array(),
+'dvrdns' => array(),
+'dynalias' => array(),
+'endofinternet' => array(),
+'endoftheinternet' => array(),
+'from-me' => array(),
+'game-host' => array(),
+'gotdns' => array(),
+'hobby-site' => array(),
+'homedns' => array(),
+'homeftp' => array(),
+'homelinux' => array(),
+'homeunix' => array(),
+'is-a-bruinsfan' => array(),
+'is-a-candidate' => array(),
+'is-a-celticsfan' => array(),
+'is-a-chef' => array(),
+'is-a-geek' => array(),
+'is-a-knight' => array(),
+'is-a-linux-user' => array(),
+'is-a-patsfan' => array(),
+'is-a-soxfan' => array(),
+'is-found' => array(),
+'is-lost' => array(),
+'is-saved' => array(),
+'is-very-bad' => array(),
+'is-very-evil' => array(),
+'is-very-good' => array(),
+'is-very-nice' => array(),
+'is-very-sweet' => array(),
+'isa-geek' => array(),
+'kicks-ass' => array(),
+'misconfused' => array(),
+'podzone' => array(),
+'readmyblog' => array(),
+'selfip' => array(),
+'sellsyourhome' => array(),
+'servebbs' => array(),
+'serveftp' => array(),
+'servegame' => array(),
+'stuff-4-sale' => array(),
+'webhop' => array(),
+'za' => array()),
+'pa' => array('ac' => array(),
+'gob' => array(),
+'com' => array(),
+'org' => array(),
+'sld' => array(),
+'edu' => array(),
+'net' => array(),
+'ing' => array(),
+'abo' => array(),
+'med' => array(),
+'nom' => array()),
+'pe' => array('edu' => array(),
+'gob' => array(),
+'nom' => array(),
+'mil' => array(),
+'org' => array(),
+'com' => array(),
+'net' => array()),
+'pf' => array('com' => array(),
+'org' => array(),
+'edu' => array()),
+'pg' => array('*' => array()),
+'ph' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'edu' => array(),
+'ngo' => array(),
+'mil' => array(),
+'i' => array()),
+'pk' => array('com' => array(),
+'net' => array(),
+'edu' => array(),
+'org' => array(),
+'fam' => array(),
+'biz' => array(),
+'web' => array(),
+'gov' => array(),
+'gob' => array(),
+'gok' => array(),
+'gon' => array(),
+'gop' => array(),
+'gos' => array(),
+'info' => array()),
+'pl' => array('aid' => array(),
+'agro' => array(),
+'atm' => array(),
+'auto' => array(),
+'biz' => array(),
+'com' => array(),
+'edu' => array(),
+'gmina' => array(),
+'gsm' => array(),
+'info' => array(),
+'mail' => array(),
+'miasta' => array(),
+'media' => array(),
+'mil' => array(),
+'net' => array(),
+'nieruchomosci' => array(),
+'nom' => array(),
+'org' => array(),
+'pc' => array(),
+'powiat' => array(),
+'priv' => array(),
+'realestate' => array(),
+'rel' => array(),
+'sex' => array(),
+'shop' => array(),
+'sklep' => array(),
+'sos' => array(),
+'szkola' => array(),
+'targi' => array(),
+'tm' => array(),
+'tourism' => array(),
+'travel' => array(),
+'turystyka' => array(),
+'6bone' => array(),
+'art' => array(),
+'mbone' => array(),
+'gov' => array('uw' => array(),
+'um' => array(),
+'ug' => array(),
+'upow' => array(),
+'starostwo' => array(),
+'so' => array(),
+'sr' => array(),
+'po' => array(),
+'pa' => array()),
+'ngo' => array(),
+'irc' => array(),
+'usenet' => array(),
+'augustow' => array(),
+'babia-gora' => array(),
+'bedzin' => array(),
+'beskidy' => array(),
+'bialowieza' => array(),
+'bialystok' => array(),
+'bielawa' => array(),
+'bieszczady' => array(),
+'boleslawiec' => array(),
+'bydgoszcz' => array(),
+'bytom' => array(),
+'cieszyn' => array(),
+'czeladz' => array(),
+'czest' => array(),
+'dlugoleka' => array(),
+'elblag' => array(),
+'elk' => array(),
+'glogow' => array(),
+'gniezno' => array(),
+'gorlice' => array(),
+'grajewo' => array(),
+'ilawa' => array(),
+'jaworzno' => array(),
+'jelenia-gora' => array(),
+'jgora' => array(),
+'kalisz' => array(),
+'kazimierz-dolny' => array(),
+'karpacz' => array(),
+'kartuzy' => array(),
+'kaszuby' => array(),
+'katowice' => array(),
+'kepno' => array(),
+'ketrzyn' => array(),
+'klodzko' => array(),
+'kobierzyce' => array(),
+'kolobrzeg' => array(),
+'konin' => array(),
+'konskowola' => array(),
+'kutno' => array(),
+'lapy' => array(),
+'lebork' => array(),
+'legnica' => array(),
+'lezajsk' => array(),
+'limanowa' => array(),
+'lomza' => array(),
+'lowicz' => array(),
+'lubin' => array(),
+'lukow' => array(),
+'malbork' => array(),
+'malopolska' => array(),
+'mazowsze' => array(),
+'mazury' => array(),
+'mielec' => array(),
+'mielno' => array(),
+'mragowo' => array(),
+'naklo' => array(),
+'nowaruda' => array(),
+'nysa' => array(),
+'olawa' => array(),
+'olecko' => array(),
+'olkusz' => array(),
+'olsztyn' => array(),
+'opoczno' => array(),
+'opole' => array(),
+'ostroda' => array(),
+'ostroleka' => array(),
+'ostrowiec' => array(),
+'ostrowwlkp' => array(),
+'pila' => array(),
+'pisz' => array(),
+'podhale' => array(),
+'podlasie' => array(),
+'polkowice' => array(),
+'pomorze' => array(),
+'pomorskie' => array(),
+'prochowice' => array(),
+'pruszkow' => array(),
+'przeworsk' => array(),
+'pulawy' => array(),
+'radom' => array(),
+'rawa-maz' => array(),
+'rybnik' => array(),
+'rzeszow' => array(),
+'sanok' => array(),
+'sejny' => array(),
+'siedlce' => array(),
+'slask' => array(),
+'slupsk' => array(),
+'sosnowiec' => array(),
+'stalowa-wola' => array(),
+'skoczow' => array(),
+'starachowice' => array(),
+'stargard' => array(),
+'suwalki' => array(),
+'swidnica' => array(),
+'swiebodzin' => array(),
+'swinoujscie' => array(),
+'szczecin' => array(),
+'szczytno' => array(),
+'tarnobrzeg' => array(),
+'tgory' => array(),
+'turek' => array(),
+'tychy' => array(),
+'ustka' => array(),
+'walbrzych' => array(),
+'warmia' => array(),
+'warszawa' => array(),
+'waw' => array(),
+'wegrow' => array(),
+'wielun' => array(),
+'wlocl' => array(),
+'wloclawek' => array(),
+'wodzislaw' => array(),
+'wolomin' => array(),
+'wroclaw' => array(),
+'zachpomor' => array(),
+'zagan' => array(),
+'zarow' => array(),
+'zgora' => array(),
+'zgorzelec' => array(),
+'gda' => array(),
+'gdansk' => array(),
+'gdynia' => array(),
+'med' => array(),
+'sopot' => array(),
+'gliwice' => array(),
+'krakow' => array(),
+'poznan' => array(),
+'wroc' => array(),
+'zakopane' => array(),
+'co' => array()),
+'pm' => array(),
+'pn' => array('gov' => array(),
+'co' => array(),
+'org' => array(),
+'edu' => array(),
+'net' => array()),
+'post' => array(),
+'pr' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'edu' => array(),
+'isla' => array(),
+'pro' => array(),
+'biz' => array(),
+'info' => array(),
+'name' => array(),
+'est' => array(),
+'prof' => array(),
+'ac' => array()),
+'pro' => array('aca' => array(),
+'bar' => array(),
+'cpa' => array(),
+'jur' => array(),
+'law' => array(),
+'med' => array(),
+'eng' => array()),
+'ps' => array('edu' => array(),
+'gov' => array(),
+'sec' => array(),
+'plo' => array(),
+'com' => array(),
+'org' => array(),
+'net' => array()),
+'pt' => array('net' => array(),
+'gov' => array(),
+'org' => array(),
+'edu' => array(),
+'int' => array(),
+'publ' => array(),
+'com' => array(),
+'nome' => array(),
+'blogspot' => array()),
+'pw' => array('co' => array(),
+'ne' => array(),
+'or' => array(),
+'ed' => array(),
+'go' => array(),
+'belau' => array()),
+'py' => array('com' => array(),
+'coop' => array(),
+'edu' => array(),
+'gov' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array()),
+'qa' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'mil' => array(),
+'name' => array(),
+'net' => array(),
+'org' => array(),
+'sch' => array()),
+'re' => array('com' => array(),
+'asso' => array(),
+'nom' => array(),
+'blogspot' => array()),
+'ro' => array('com' => array(),
+'org' => array(),
+'tm' => array(),
+'nt' => array(),
+'nom' => array(),
+'info' => array(),
+'rec' => array(),
+'arts' => array(),
+'firm' => array(),
+'store' => array(),
+'www' => array(),
+'blogspot' => array()),
+'rs' => array('co' => array(),
+'org' => array(),
+'edu' => array(),
+'ac' => array(),
+'gov' => array(),
+'in' => array()),
+'ru' => array('ac' => array(),
+'com' => array(),
+'edu' => array(),
+'int' => array(),
+'net' => array(),
+'org' => array(),
+'pp' => array(),
+'adygeya' => array(),
+'altai' => array(),
+'amur' => array(),
+'arkhangelsk' => array(),
+'astrakhan' => array(),
+'bashkiria' => array(),
+'belgorod' => array(),
+'bir' => array(),
+'bryansk' => array(),
+'buryatia' => array(),
+'cbg' => array(),
+'chel' => array(),
+'chelyabinsk' => array(),
+'chita' => array(),
+'chukotka' => array(),
+'chuvashia' => array(),
+'dagestan' => array(),
+'dudinka' => array(),
+'e-burg' => array(),
+'grozny' => array(),
+'irkutsk' => array(),
+'ivanovo' => array(),
+'izhevsk' => array(),
+'jar' => array(),
+'joshkar-ola' => array(),
+'kalmykia' => array(),
+'kaluga' => array(),
+'kamchatka' => array(),
+'karelia' => array(),
+'kazan' => array(),
+'kchr' => array(),
+'kemerovo' => array(),
+'khabarovsk' => array(),
+'khakassia' => array(),
+'khv' => array(),
+'kirov' => array(),
+'koenig' => array(),
+'komi' => array(),
+'kostroma' => array(),
+'krasnoyarsk' => array(),
+'kuban' => array(),
+'kurgan' => array(),
+'kursk' => array(),
+'lipetsk' => array(),
+'magadan' => array(),
+'mari' => array(),
+'mari-el' => array(),
+'marine' => array(),
+'mordovia' => array(),
+'mosreg' => array(),
+'msk' => array(),
+'murmansk' => array(),
+'nalchik' => array(),
+'nnov' => array(),
+'nov' => array(),
+'novosibirsk' => array(),
+'nsk' => array(),
+'omsk' => array(),
+'orenburg' => array(),
+'oryol' => array(),
+'palana' => array(),
+'penza' => array(),
+'perm' => array(),
+'ptz' => array(),
+'rnd' => array(),
+'ryazan' => array(),
+'sakhalin' => array(),
+'samara' => array(),
+'saratov' => array(),
+'simbirsk' => array(),
+'smolensk' => array(),
+'spb' => array(),
+'stavropol' => array(),
+'stv' => array(),
+'surgut' => array(),
+'tambov' => array(),
+'tatarstan' => array(),
+'tom' => array(),
+'tomsk' => array(),
+'tsaritsyn' => array(),
+'tsk' => array(),
+'tula' => array(),
+'tuva' => array(),
+'tver' => array(),
+'tyumen' => array(),
+'udm' => array(),
+'udmurtia' => array(),
+'ulan-ude' => array(),
+'vladikavkaz' => array(),
+'vladimir' => array(),
+'vladivostok' => array(),
+'volgograd' => array(),
+'vologda' => array(),
+'voronezh' => array(),
+'vrn' => array(),
+'vyatka' => array(),
+'yakutia' => array(),
+'yamal' => array(),
+'yaroslavl' => array(),
+'yekaterinburg' => array(),
+'yuzhno-sakhalinsk' => array(),
+'amursk' => array(),
+'baikal' => array(),
+'cmw' => array(),
+'fareast' => array(),
+'jamal' => array(),
+'kms' => array(),
+'k-uralsk' => array(),
+'kustanai' => array(),
+'kuzbass' => array(),
+'magnitka' => array(),
+'mytis' => array(),
+'nakhodka' => array(),
+'nkz' => array(),
+'norilsk' => array(),
+'oskol' => array(),
+'pyatigorsk' => array(),
+'rubtsovsk' => array(),
+'snz' => array(),
+'syzran' => array(),
+'vdonsk' => array(),
+'zgrad' => array(),
+'gov' => array(),
+'mil' => array(),
+'test' => array()),
+'rw' => array('gov' => array(),
+'net' => array(),
+'edu' => array(),
+'ac' => array(),
+'com' => array(),
+'co' => array(),
+'int' => array(),
+'mil' => array(),
+'gouv' => array()),
+'sa' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'med' => array(),
+'pub' => array(),
+'edu' => array(),
+'sch' => array()),
+'sb' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array()),
+'sc' => array('com' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array()),
+'sd' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'med' => array(),
+'tv' => array(),
+'gov' => array(),
+'info' => array()),
+'se' => array('a' => array(),
+'ac' => array(),
+'b' => array(),
+'bd' => array(),
+'brand' => array(),
+'c' => array(),
+'d' => array(),
+'e' => array(),
+'f' => array(),
+'fh' => array(),
+'fhsk' => array(),
+'fhv' => array(),
+'g' => array(),
+'h' => array(),
+'i' => array(),
+'k' => array(),
+'komforb' => array(),
+'kommunalforbund' => array(),
+'komvux' => array(),
+'l' => array(),
+'lanbib' => array(),
+'m' => array(),
+'n' => array(),
+'naturbruksgymn' => array(),
+'o' => array(),
+'org' => array(),
+'p' => array(),
+'parti' => array(),
+'pp' => array(),
+'press' => array(),
+'r' => array(),
+'s' => array(),
+'t' => array(),
+'tm' => array(),
+'u' => array(),
+'w' => array(),
+'x' => array(),
+'y' => array(),
+'z' => array(),
+'com' => array(),
+'blogspot' => array()),
+'sg' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'edu' => array(),
+'per' => array(),
+'blogspot' => array()),
+'sh' => array('com' => array(),
+'net' => array(),
+'gov' => array(),
+'org' => array(),
+'mil' => array()),
+'si' => array(),
+'sj' => array(),
+'sk' => array('blogspot' => array()),
+'sl' => array('com' => array(),
+'net' => array(),
+'edu' => array(),
+'gov' => array(),
+'org' => array()),
+'sm' => array(),
+'sn' => array('art' => array(),
+'com' => array(),
+'edu' => array(),
+'gouv' => array(),
+'org' => array(),
+'perso' => array(),
+'univ' => array()),
+'so' => array('com' => array(),
+'net' => array(),
+'org' => array()),
+'sr' => array(),
+'st' => array('co' => array(),
+'com' => array(),
+'consulado' => array(),
+'edu' => array(),
+'embaixada' => array(),
+'gov' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array(),
+'principe' => array(),
+'saotome' => array(),
+'store' => array()),
+'su' => array(),
+'sv' => array('com' => array(),
+'edu' => array(),
+'gob' => array(),
+'org' => array(),
+'red' => array()),
+'sx' => array('gov' => array()),
+'sy' => array('edu' => array(),
+'gov' => array(),
+'net' => array(),
+'mil' => array(),
+'com' => array(),
+'org' => array()),
+'sz' => array('co' => array(),
+'ac' => array(),
+'org' => array()),
+'tc' => array(),
+'td' => array('blogspot' => array()),
+'tel' => array(),
+'tf' => array(),
+'tg' => array(),
+'th' => array('ac' => array(),
+'co' => array(),
+'go' => array(),
+'in' => array(),
+'mi' => array(),
+'net' => array(),
+'or' => array()),
+'tj' => array('ac' => array(),
+'biz' => array(),
+'co' => array(),
+'com' => array(),
+'edu' => array(),
+'go' => array(),
+'gov' => array(),
+'int' => array(),
+'mil' => array(),
+'name' => array(),
+'net' => array(),
+'nic' => array(),
+'org' => array(),
+'test' => array(),
+'web' => array()),
+'tk' => array(),
+'tl' => array('gov' => array()),
+'tm' => array('com' => array(),
+'co' => array(),
+'org' => array(),
+'net' => array(),
+'nom' => array(),
+'gov' => array(),
+'mil' => array(),
+'edu' => array()),
+'tn' => array('com' => array(),
+'ens' => array(),
+'fin' => array(),
+'gov' => array(),
+'ind' => array(),
+'intl' => array(),
+'nat' => array(),
+'net' => array(),
+'org' => array(),
+'info' => array(),
+'perso' => array(),
+'tourism' => array(),
+'edunet' => array(),
+'rnrt' => array(),
+'rns' => array(),
+'rnu' => array(),
+'mincom' => array(),
+'agrinet' => array(),
+'defense' => array(),
+'turen' => array()),
+'to' => array('com' => array(),
+'gov' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'mil' => array()),
+'tp' => array(),
+'tr' => array('com' => array(),
+'info' => array(),
+'biz' => array(),
+'net' => array(),
+'org' => array(),
+'web' => array(),
+'gen' => array(),
+'tv' => array(),
+'av' => array(),
+'dr' => array(),
+'bbs' => array(),
+'name' => array(),
+'tel' => array(),
+'gov' => array(),
+'bel' => array(),
+'pol' => array(),
+'mil' => array(),
+'k12' => array(),
+'edu' => array(),
+'kep' => array(),
+'nc' => array('gov' => array())),
+'travel' => array(),
+'tt' => array('co' => array(),
+'com' => array(),
+'org' => array(),
+'net' => array(),
+'biz' => array(),
+'info' => array(),
+'pro' => array(),
+'int' => array(),
+'coop' => array(),
+'jobs' => array(),
+'mobi' => array(),
+'travel' => array(),
+'museum' => array(),
+'aero' => array(),
+'name' => array(),
+'gov' => array(),
+'edu' => array()),
+'tv' => array('dyndns' => array(),
+'better-than' => array(),
+'on-the-web' => array(),
+'worse-than' => array()),
+'tw' => array('edu' => array(),
+'gov' => array(),
+'mil' => array(),
+'com' => array(),
+'net' => array(),
+'org' => array(),
+'idv' => array(),
+'game' => array(),
+'ebiz' => array(),
+'club' => array(),
+'網路' => array(),
+'組織' => array(),
+'商業' => array(),
+'blogspot' => array()),
+'tz' => array('ac' => array(),
+'co' => array(),
+'go' => array(),
+'hotel' => array(),
+'info' => array(),
+'me' => array(),
+'mil' => array(),
+'mobi' => array(),
+'ne' => array(),
+'or' => array(),
+'sc' => array(),
+'tv' => array()),
+'ua' => array('com' => array(),
+'edu' => array(),
+'gov' => array(),
+'in' => array(),
+'net' => array(),
+'org' => array(),
+'cherkassy' => array(),
+'cherkasy' => array(),
+'chernigov' => array(),
+'chernihiv' => array(),
+'chernivtsi' => array(),
+'chernovtsy' => array(),
+'ck' => array(),
+'cn' => array(),
+'cr' => array(),
+'crimea' => array(),
+'cv' => array(),
+'dn' => array(),
+'dnepropetrovsk' => array(),
+'dnipropetrovsk' => array(),
+'dominic' => array(),
+'donetsk' => array(),
+'dp' => array(),
+'if' => array(),
+'ivano-frankivsk' => array(),
+'kh' => array(),
+'kharkiv' => array(),
+'kharkov' => array(),
+'kherson' => array(),
+'khmelnitskiy' => array(),
+'khmelnytskyi' => array(),
+'kiev' => array(),
+'kirovograd' => array(),
+'km' => array(),
+'kr' => array(),
+'krym' => array(),
+'ks' => array(),
+'kv' => array(),
+'kyiv' => array(),
+'lg' => array(),
+'lt' => array(),
+'lugansk' => array(),
+'lutsk' => array(),
+'lv' => array(),
+'lviv' => array(),
+'mk' => array(),
+'mykolaiv' => array(),
+'nikolaev' => array(),
+'od' => array(),
+'odesa' => array(),
+'odessa' => array(),
+'pl' => array(),
+'poltava' => array(),
+'rivne' => array(),
+'rovno' => array(),
+'rv' => array(),
+'sb' => array(),
+'sebastopol' => array(),
+'sevastopol' => array(),
+'sm' => array(),
+'sumy' => array(),
+'te' => array(),
+'ternopil' => array(),
+'uz' => array(),
+'uzhgorod' => array(),
+'vinnica' => array(),
+'vinnytsia' => array(),
+'vn' => array(),
+'volyn' => array(),
+'yalta' => array(),
+'zaporizhzhe' => array(),
+'zaporizhzhia' => array(),
+'zhitomir' => array(),
+'zhytomyr' => array(),
+'zp' => array(),
+'zt' => array(),
+'co' => array(),
+'pp' => array()),
+'ug' => array('co' => array(),
+'or' => array(),
+'ac' => array(),
+'sc' => array(),
+'go' => array(),
+'ne' => array(),
+'com' => array(),
+'org' => array()),
+'uk' => array('ac' => array(),
+'co' => array('blogspot' => array()),
+'gov' => array('service' => array()),
+'ltd' => array(),
+'me' => array(),
+'net' => array(),
+'nhs' => array(),
+'org' => array(),
+'plc' => array(),
+'police' => array(),
+'sch' => array('*' => array())),
+'us' => array('dni' => array(),
+'fed' => array(),
+'isa' => array(),
+'kids' => array(),
+'nsn' => array(),
+'ak' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'al' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ar' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'as' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'az' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ca' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'co' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ct' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'dc' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'de' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'fl' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ga' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'gu' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'hi' => array('cc' => array(),
+'lib' => array()),
+'ia' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'id' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'il' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'in' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ks' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ky' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'la' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ma' => array('k12' => array('pvt' => array(),
+'chtr' => array(),
+'paroch' => array()),
+'cc' => array(),
+'lib' => array()),
+'md' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'me' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'mi' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'mn' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'mo' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ms' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'mt' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'nc' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'nd' => array('cc' => array(),
+'lib' => array()),
+'ne' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'nh' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'nj' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'nm' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'nv' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ny' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'oh' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ok' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'or' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'pa' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'pr' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ri' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'sc' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'sd' => array('cc' => array(),
+'lib' => array()),
+'tn' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'tx' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'ut' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'vi' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'vt' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'va' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'wa' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'wi' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'wv' => array('cc' => array()),
+'wy' => array('k12' => array(),
+'cc' => array(),
+'lib' => array()),
+'is-by' => array(),
+'land-4-sale' => array(),
+'stuff-4-sale' => array()),
+'uy' => array('com' => array(),
+'edu' => array(),
+'gub' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array()),
+'uz' => array('co' => array(),
+'com' => array(),
+'net' => array(),
+'org' => array()),
+'va' => array(),
+'vc' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'mil' => array(),
+'edu' => array()),
+'ve' => array('arts' => array(),
+'co' => array(),
+'com' => array(),
+'e12' => array(),
+'edu' => array(),
+'firm' => array(),
+'gob' => array(),
+'gov' => array(),
+'info' => array(),
+'int' => array(),
+'mil' => array(),
+'net' => array(),
+'org' => array(),
+'rec' => array(),
+'store' => array(),
+'tec' => array(),
+'web' => array()),
+'vg' => array(),
+'vi' => array('co' => array(),
+'com' => array(),
+'k12' => array(),
+'net' => array(),
+'org' => array()),
+'vn' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'edu' => array(),
+'gov' => array(),
+'int' => array(),
+'ac' => array(),
+'biz' => array(),
+'info' => array(),
+'name' => array(),
+'pro' => array(),
+'health' => array()),
+'vu' => array('com' => array(),
+'edu' => array(),
+'net' => array(),
+'org' => array()),
+'wf' => array(),
+'ws' => array('com' => array(),
+'net' => array(),
+'org' => array(),
+'gov' => array(),
+'edu' => array(),
+'dyndns' => array(),
+'mypets' => array()),
+'yt' => array(),
+'امارات' => array(),
+'বাংলা' => array(),
+'中国' => array(),
+'中國' => array(),
+'الجزائر' => array(),
+'مصر' => array(),
+'გე' => array(),
+'香港' => array(),
+'भारत' => array(),
+'بھارت' => array(),
+'భారత్' => array(),
+'ભારત' => array(),
+'ਭਾਰਤ' => array(),
+'ভারত' => array(),
+'இந்தியா' => array(),
+'ایران' => array(),
+'ايران' => array(),
+'الاردن' => array(),
+'한국' => array(),
+'қаз' => array(),
+'ලංකා' => array(),
+'இலங்கை' => array(),
+'المغرب' => array(),
+'мон' => array(),
+'مليسيا' => array(),
+'عمان' => array(),
+'فلسطين' => array(),
+'срб' => array('пр' => array(),
+'орг' => array(),
+'обр' => array(),
+'од' => array(),
+'упр' => array(),
+'ак' => array()),
+'рф' => array(),
+'قطر' => array(),
+'السعودية' => array(),
+'السعودیة' => array(),
+'السعودیۃ' => array(),
+'السعوديه' => array(),
+'سورية' => array(),
+'سوريا' => array(),
+'新加坡' => array(),
+'சிங்கப்பூர்' => array(),
+'ไทย' => array(),
+'تونس' => array(),
+'台灣' => array(),
+'台湾' => array(),
+'臺灣' => array(),
+'укр' => array(),
+'اليمن' => array(),
+'xxx' => array(),
+'ye' => array('*' => array()),
+'za' => array('*' => array()),
+'zm' => array('*' => array()),
+'zw' => array('*' => array()),
+'abbott' => array(),
+'abogado' => array(),
+'academy' => array(),
+'accenture' => array(),
+'accountants' => array(),
+'active' => array(),
+'actor' => array(),
+'africa' => array(),
+'agency' => array(),
+'airforce' => array(),
+'allfinanz' => array(),
+'alsace' => array(),
+'amsterdam' => array(),
+'android' => array(),
+'aquarelle' => array(),
+'archi' => array(),
+'army' => array(),
+'associates' => array(),
+'attorney' => array(),
+'auction' => array(),
+'audio' => array(),
+'autos' => array(),
+'axa' => array(),
+'band' => array(),
+'bar' => array(),
+'barcelona' => array(),
+'bargains' => array(),
+'bauhaus' => array(),
+'bayern' => array(),
+'bcn' => array(),
+'beer' => array(),
+'berlin' => array(),
+'best' => array(),
+'bharti' => array(),
+'bible' => array(),
+'bid' => array(),
+'bike' => array(),
+'bio' => array(),
+'black' => array(),
+'blackfriday' => array(),
+'bloomberg' => array(),
+'blue' => array(),
+'bmw' => array(),
+'bnl' => array(),
+'bnpparibas' => array(),
+'bond' => array(),
+'boo' => array(),
+'boutique' => array(),
+'brussels' => array(),
+'budapest' => array(),
+'build' => array(),
+'builders' => array(),
+'business' => array(),
+'buzz' => array(),
+'bzh' => array(),
+'cab' => array(),
+'cal' => array(),
+'camera' => array(),
+'camp' => array(),
+'cancerresearch' => array(),
+'capetown' => array(),
+'capital' => array(),
+'caravan' => array(),
+'cards' => array(),
+'care' => array(),
+'career' => array(),
+'careers' => array(),
+'cartier' => array(),
+'casa' => array(),
+'cash' => array(),
+'catering' => array(),
+'cba' => array(),
+'cbn' => array(),
+'center' => array(),
+'ceo' => array(),
+'cern' => array(),
+'cfa' => array(),
+'channel' => array(),
+'cheap' => array(),
+'christmas' => array(),
+'chrome' => array(),
+'church' => array(),
+'citic' => array(),
+'city' => array(),
+'claims' => array(),
+'cleaning' => array(),
+'click' => array(),
+'clinic' => array(),
+'clothing' => array(),
+'club' => array(),
+'codes' => array(),
+'coffee' => array(),
+'college' => array(),
+'cologne' => array(),
+'commbank' => array(),
+'community' => array(),
+'company' => array(),
+'computer' => array(),
+'condos' => array(),
+'construction' => array(),
+'consulting' => array(),
+'contractors' => array(),
+'cooking' => array(),
+'cool' => array(),
+'country' => array(),
+'credit' => array(),
+'creditcard' => array(),
+'crs' => array(),
+'cruises' => array(),
+'cuisinella' => array(),
+'cymru' => array(),
+'dabur' => array(),
+'dad' => array(),
+'dance' => array(),
+'dating' => array(),
+'datsun' => array(),
+'day' => array(),
+'deals' => array(),
+'degree' => array(),
+'democrat' => array(),
+'dental' => array(),
+'dentist' => array(),
+'desi' => array(),
+'diamonds' => array(),
+'diet' => array(),
+'digital' => array(),
+'direct' => array(),
+'directory' => array(),
+'discount' => array(),
+'dnp' => array(),
+'domains' => array(),
+'doosan' => array(),
+'durban' => array(),
+'dvag' => array(),
+'eat' => array(),
+'education' => array(),
+'email' => array(),
+'emerck' => array(),
+'engineer' => array(),
+'engineering' => array(),
+'enterprises' => array(),
+'equipment' => array(),
+'erni' => array(),
+'esq' => array(),
+'estate' => array(),
+'eurovision' => array(),
+'eus' => array(),
+'events' => array(),
+'everbank' => array(),
+'exchange' => array(),
+'expert' => array(),
+'exposed' => array(),
+'fail' => array(),
+'fan' => array(),
+'farm' => array(),
+'fashion' => array(),
+'feedback' => array(),
+'finance' => array(),
+'financial' => array(),
+'firmdale' => array(),
+'fish' => array(),
+'fishing' => array(),
+'fitness' => array(),
+'flights' => array(),
+'florist' => array(),
+'flsmidth' => array(),
+'fly' => array(),
+'foo' => array(),
+'forsale' => array(),
+'foundation' => array(),
+'frl' => array(),
+'frogans' => array(),
+'fund' => array(),
+'furniture' => array(),
+'futbol' => array(),
+'gal' => array(),
+'gallery' => array(),
+'garden' => array(),
+'gbiz' => array(),
+'gdn' => array(),
+'gent' => array(),
+'ggee' => array(),
+'gift' => array(),
+'gifts' => array(),
+'gives' => array(),
+'glass' => array(),
+'gle' => array(),
+'global' => array(),
+'globo' => array(),
+'gmail' => array(),
+'gmo' => array(),
+'gmx' => array(),
+'google' => array(),
+'gop' => array(),
+'graphics' => array(),
+'gratis' => array(),
+'green' => array(),
+'gripe' => array(),
+'group' => array(),
+'guge' => array(),
+'guide' => array(),
+'guitars' => array(),
+'guru' => array(),
+'hamburg' => array(),
+'haus' => array(),
+'healthcare' => array(),
+'help' => array(),
+'here' => array(),
+'hermes' => array(),
+'hiphop' => array(),
+'hiv' => array(),
+'holdings' => array(),
+'holiday' => array(),
+'homes' => array(),
+'horse' => array(),
+'host' => array(),
+'hosting' => array(),
+'house' => array(),
+'how' => array(),
+'ibm' => array(),
+'ifm' => array(),
+'iinet' => array(),
+'immo' => array(),
+'immobilien' => array(),
+'industries' => array(),
+'infiniti' => array(),
+'ing' => array(),
+'ink' => array(),
+'institute' => array(),
+'insure' => array(),
+'international' => array(),
+'investments' => array(),
+'ipiranga' => array(),
+'irish' => array(),
+'ist' => array(),
+'istanbul' => array(),
+'iwc' => array(),
+'java' => array(),
+'jetzt' => array(),
+'joburg' => array(),
+'juegos' => array(),
+'kaufen' => array(),
+'kim' => array(),
+'kitchen' => array(),
+'kiwi' => array(),
+'koeln' => array(),
+'krd' => array(),
+'kred' => array(),
+'lacaixa' => array(),
+'land' => array(),
+'latrobe' => array(),
+'lawyer' => array(),
+'lds' => array(),
+'lease' => array(),
+'leclerc' => array(),
+'lgbt' => array(),
+'life' => array(),
+'lighting' => array(),
+'limited' => array(),
+'limo' => array(),
+'link' => array(),
+'loans' => array(),
+'london' => array(),
+'lotto' => array(),
+'ltda' => array(),
+'luxe' => array(),
+'luxury' => array(),
+'madrid' => array(),
+'maison' => array(),
+'management' => array(),
+'mango' => array(),
+'market' => array(),
+'marketing' => array(),
+'media' => array(),
+'meet' => array(),
+'melbourne' => array(),
+'meme' => array(),
+'menu' => array(),
+'miami' => array(),
+'mini' => array(),
+'moda' => array(),
+'moe' => array(),
+'monash' => array(),
+'montblanc' => array(),
+'mormon' => array(),
+'mortgage' => array(),
+'moscow' => array(),
+'motorcycles' => array(),
+'mov' => array(),
+'nagoya' => array(),
+'navy' => array(),
+'netbank' => array(),
+'network' => array(),
+'neustar' => array(),
+'new' => array(),
+'nexus' => array(),
+'ngo' => array(),
+'nhk' => array(),
+'ninja' => array(),
+'nissan' => array(),
+'nra' => array(),
+'nrw' => array(),
+'nyc' => array(),
+'okinawa' => array(),
+'ong' => array(),
+'onl' => array(),
+'ooo' => array(),
+'oracle' => array(),
+'organic' => array(),
+'otsuka' => array(),
+'ovh' => array(),
+'paris' => array(),
+'partners' => array(),
+'parts' => array(),
+'pharmacy' => array(),
+'photo' => array(),
+'photography' => array(),
+'photos' => array(),
+'physio' => array(),
+'pics' => array(),
+'pictet' => array(),
+'pictures' => array(),
+'pink' => array(),
+'pizza' => array(),
+'place' => array(),
+'plumbing' => array(),
+'pohl' => array(),
+'poker' => array(),
+'praxi' => array(),
+'press' => array(),
+'prod' => array(),
+'productions' => array(),
+'prof' => array(),
+'properties' => array(),
+'property' => array(),
+'pub' => array(),
+'qpon' => array(),
+'quebec' => array(),
+'realtor' => array(),
+'recipes' => array(),
+'red' => array(),
+'rehab' => array(),
+'reise' => array(),
+'reisen' => array(),
+'ren' => array(),
+'rentals' => array(),
+'repair' => array(),
+'report' => array(),
+'republican' => array(),
+'rest' => array(),
+'restaurant' => array(),
+'reviews' => array(),
+'rich' => array(),
+'rio' => array(),
+'rip' => array(),
+'rocks' => array(),
+'rodeo' => array(),
+'rsvp' => array(),
+'ruhr' => array(),
+'ryukyu' => array(),
+'saarland' => array(),
+'samsung' => array(),
+'sap' => array(),
+'sarl' => array(),
+'sca' => array(),
+'scb' => array(),
+'schmidt' => array(),
+'scholarships' => array(),
+'schule' => array(),
+'scot' => array(),
+'seat' => array(),
+'services' => array(),
+'sew' => array(),
+'sexy' => array(),
+'sharp' => array(),
+'shiksha' => array(),
+'shoes' => array(),
+'shriram' => array(),
+'singles' => array(),
+'sky' => array(),
+'social' => array(),
+'software' => array(),
+'sohu' => array(),
+'solar' => array(),
+'solutions' => array(),
+'soy' => array(),
+'space' => array(),
+'spiegel' => array(),
+'supplies' => array(),
+'supply' => array(),
+'support' => array(),
+'surf' => array(),
+'surgery' => array(),
+'suzuki' => array(),
+'systems' => array(),
+'taipei' => array(),
+'tatar' => array(),
+'tattoo' => array(),
+'tax' => array(),
+'technology' => array(),
+'temasek' => array(),
+'tienda' => array(),
+'tips' => array(),
+'tirol' => array(),
+'today' => array(),
+'tokyo' => array(),
+'tools' => array(),
+'top' => array(),
+'toshiba' => array(),
+'town' => array(),
+'toys' => array(),
+'trade' => array(),
+'training' => array(),
+'tui' => array(),
+'university' => array(),
+'uno' => array(),
+'uol' => array(),
+'vacations' => array(),
+'vegas' => array(),
+'ventures' => array(),
+'versicherung' => array(),
+'vet' => array(),
+'viajes' => array(),
+'villas' => array(),
+'vision' => array(),
+'vlaanderen' => array(),
+'vodka' => array(),
+'vote' => array(),
+'voting' => array(),
+'voto' => array(),
+'voyage' => array(),
+'wales' => array(),
+'wang' => array(),
+'watch' => array(),
+'webcam' => array(),
+'website' => array(),
+'wed' => array(),
+'wedding' => array(),
+'whoswho' => array(),
+'wien' => array(),
+'wiki' => array(),
+'williamhill' => array(),
+'wme' => array(),
+'work' => array(),
+'works' => array(),
+'world' => array(),
+'wtc' => array(),
+'wtf' => array(),
+'佛山' => array(),
+'慈善' => array(),
+'集团' => array(),
+'在线' => array(),
+'八卦' => array(),
+'موقع' => array(),
+'公益' => array(),
+'公司' => array(),
+'移动' => array(),
+'我爱你' => array(),
+'москва' => array(),
+'онлайн' => array(),
+'сайт' => array(),
+'时尚' => array(),
+'淡马锡' => array(),
+'орг' => array(),
+'삼성' => array(),
+'商标' => array(),
+'商店' => array(),
+'商城' => array(),
+'дети' => array(),
+'新闻' => array(),
+'中文网' => array(),
+'中信' => array(),
+'娱乐' => array(),
+'谷歌' => array(),
+'网店' => array(),
+'संगठन' => array(),
+'网络' => array(),
+'手机' => array(),
+'بازار' => array(),
+'政府' => array(),
+'شبكة' => array(),
+'机构' => array(),
+'组织机构' => array(),
+'рус' => array(),
+'みんな' => array(),
+'グーグル' => array(),
+'世界' => array(),
+'网址' => array(),
+'游戏' => array(),
+'vermögensberater' => array(),
+'vermögensberatung' => array(),
+'企业' => array(),
+'广东' => array(),
+'政务' => array(),
+'xyz' => array(),
+'yachts' => array(),
+'yandex' => array(),
+'yoga' => array(),
+'yokohama' => array(),
+'youtube' => array(),
+'zip' => array(),
+'zone' => array());
diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php
new file mode 100644
index 0000000..ffe492e
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php
@@ -0,0 +1,120 @@
+<?php
+
+/*
+ * Calculate the effective registered domain of a fully qualified domain name.
+ *
+ * <@LICENSE>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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.
+ * </@LICENSE>
+ *
+ * Florian Sager, 25.07.2008, sager@agitos.de, http://www.agitos.de
+ */
+
+/*
+ * Remove subdomains from a signing domain to get the registered domain.
+ *
+ * dkim-reputation.org blocks signing domains on the level of registered domains
+ * to rate senders who use e.g. a.spamdomain.tld, b.spamdomain.tld, ... under
+ * the most common identifier - the registered domain - finally.
+ *
+ * This function returns NULL if $signingDomain is TLD itself
+ *
+ * $signingDomain has to be provided lowercase (!)
+ */
+
+class regDomain {
+ /* tld tree */
+ protected $tldTree = array();
+
+ /* main function */
+ public function getRegisteredDomain($signingDomain, $fallback = TRUE) {
+ $signingDomainParts = explode('.', $signingDomain);
+
+ $result = $this->findRegisteredDomain($signingDomainParts, $this->tldTree);
+
+ if ($result===NULL || $result=="") {
+ // this is an invalid domain name
+ return NULL;
+ }
+
+ // assure there is at least 1 TLD in the stripped signing domain
+ if (!strpos($result, '.')) {
+ if ($fallback===FALSE) {
+ return NULL;
+ }
+ $cnt = count($signingDomainParts);
+ if ($cnt==1 || $signingDomainParts[$cnt-2]=="") return NULL;
+ if (!$this->validDomainPart($signingDomainParts[$cnt-2]) || !$this->validDomainPart($signingDomainParts[$cnt-1])) return NULL;
+ return $signingDomainParts[$cnt-2].'.'.$signingDomainParts[$cnt-1];
+ }
+ return $result;
+ }
+
+ /* validate parts */
+ public function validDomainPart($domPart) {
+ // see http://www.register.com/domain-extension-rules.rcmx
+ $len = strlen($domPart);
+
+ // not more than 63 characters
+ if ($len>63) return FALSE;
+
+ // not less than 1 characters --> there are TLD-specific rules that could be considered additionally
+ if ($len<1) return FALSE;
+
+ // Use only letters, numbers, or hyphen ("-")
+ // not beginning or ending with a hypen (this is TLD specific, be aware!)
+ if (!preg_match("/^([a-z0-9])(([a-z0-9-])*([a-z0-9]))*$/", $domPart)) return FALSE;
+
+ return TRUE;
+ }
+
+ /* recursive helper method */
+ public function findRegisteredDomain($remainingSigningDomainParts, &$treeNode) {
+ $sub = array_pop($remainingSigningDomainParts);
+
+ $result = NULL;
+ if (isset($treeNode['!'])) {
+ return '#';
+ }
+
+ if (!$this->validDomainPart($sub)) {
+ return NULL;
+ }
+
+ if (is_array($treeNode) && array_key_exists($sub, $treeNode)) {
+ $result = $this->findRegisteredDomain($remainingSigningDomainParts, $treeNode[$sub]);
+ } else if (is_array($treeNode) && array_key_exists('*', $treeNode)) {
+ $result = $this->findRegisteredDomain($remainingSigningDomainParts, $treeNode['*']);
+ } else {
+ return $sub;
+ }
+
+ // this is a hack 'cause PHP interpretes '' as NULL
+ if ($result == '#') {
+ return $sub;
+ } else if (strlen($result)>0) {
+ return $result.'.'.$sub;
+ }
+ return NULL;
+ }
+
+ /* load tld tree into object */
+ function __construct() {
+ /* include tld tree data */
+ include(dirname(__FILE__) . '/effectiveTLDs.inc.php');
+ }
+
+}
diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php
new file mode 100644
index 0000000..e6b7a2a
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * Calculate the effective registered domain of a fully qualified domain name.
+ *
+ * <@LICENSE>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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.
+ * </@LICENSE>
+ *
+ * Florian Sager, 25.07.2008, sager@agitos.de, http://www.agitos.de
+ */
+
+/*
+ * Remove subdomains from a signing domain to get the registered domain.
+ *
+ * dkim-reputation.org blocks signing domains on the level of registered domains
+ * to rate senders who use e.g. a.spamdomain.tld, b.spamdomain.tld, ... under
+ * the most common identifier - the registered domain - finally.
+ *
+ * This function returns NULL if $signingDomain is TLD itself
+ *
+ * $signingDomain has to be provided lowercase (!)
+ */
+
+/* pull in class */
+require_once (dirname ( __FILE__ ) . '/regDomain.class.php');
+
+/* create global object */
+;
+function getRegisteredDomain($signingDomain, $fallback = TRUE) {
+ /* pull in object */
+ $regDomainObj = new regDomain ();
+ /* return object method */
+ return $regDomainObj->getRegisteredDomain ( $signingDomain, $fallback );
+}
+function validDomainPart($domPart) {
+ /* pull in object */
+ $regDomainObj = new regDomain ();
+ /* return object method */
+ return $regDomainObj->validDomainPart ( $domPart );
+}
+
+// recursive helper method
+function findRegisteredDomain($remainingSigningDomainParts, &$treeNode) {
+ /* pull in object */
+ $regDomainObj = new regDomain ();
+ /* return object method */
+ return $regDomainObj->findRegisteredDomain ( $remainingSigningDomainParts, $treeNode );
+}
diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php
new file mode 100644
index 0000000..d1cc47c
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * Calculate the effective registered domain of a fully qualified domain name.
+ *
+ * <@LICENSE>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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.
+ * </@LICENSE>
+ *
+ * Florian Sager, 25.07.2008, sager@agitos.de, http://www.agitos.de
+ */
+
+require_once("effectiveTLDs.inc.php");
+require_once("regDomain.inc.php");
+
+if ($_SERVER["argc"]<2) {
+ print("test-regDomain.php <(fully-qualified-domain-name )+>\n");
+ exit;
+}
+
+// strip subdomains from every signing domain
+// char dom[] = "sub2.sub.registered.nom.ad";
+
+$argc = $_SERVER["argc"];
+$argv = $_SERVER["argv"];
+
+for ($i=1; $i<$argc; $i++) {
+
+ $registeredDomain = getRegisteredDomain($argv[$i], $tldTree);
+
+ if ( $registeredDomain === NULL ) {
+ printf("error: %s\n", $argv[$i]);
+ } else {
+ printf("%s\n", $registeredDomain);
+ }
+}
+
+?>
diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt
new file mode 100644
index 0000000..9199c9f
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt
@@ -0,0 +1,56 @@
+===============================================
+Detection of registered domains by reg-dom libs
+===============================================
+
+The reg-dom libs are available in C, Perl and PHP so far.
+
+They include recent representations of the effective TLD list available at
+http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
+and help to convert an arbitrary domain name to the registered domain name.
+
+Sample use:
+dkim-reputation.org blocks signing domains on the level of registered domains
+to rate senders who use e.g. a.spamdomain.tld, b.spamdomain.tld, ... under
+the most common identifier - the registered domain - finally.
+Project page: http://www.dkim-reputation.org/regdom-libs/
+
+Pseudo code:
+registeredDomain = getRegisteredDomain(ingoingDomain);
+
+Return values:
+1) NULL if ingoingDomain is a TLD
+2) the registered domain name if TLD is known
+3) just <domain>.<tld> if <tld> is unknown
+ This case was added to support new TLDs in outdated reg-dom libs
+ by a certain likelihood. This fallback method is implemented in the
+ last conversion step and can be simply commented out.
+
+---
+
+If you like to regenerate the effective TLD tree structure by yourself
+you can use the script generateEffectiveTLDs.php with the following parameters:
+
+php generateEffectiveTLDs.php php > PHP/effectiveTLDs.inc.php
+php generateEffectiveTLDs.php perl > Perl/effectiveTLDs.pm
+php generateEffectiveTLDs.php c > C/tld-canon.h
+
+
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you 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.
+# </@LICENSE>
+
+
+Florian Sager, 2009-02-05, sager@agitos.de, http://www.agitos.de
diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php
new file mode 100644
index 0000000..63acb79
--- /dev/null
+++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php
@@ -0,0 +1,213 @@
+<?php
+
+/*
+ * Florian Sager, 06.08.2008, sager@agitos.de, http://www.agitos.de
+ *
+ * Auto-Generate PHP array tree that contains all TLDs from the URL (see below);
+ * The output has to be copied to reputation-libs/effectiveTLDs.inc.php
+ *
+ *
+ */
+
+header('Content-Type: text/html; charset=utf-8');
+
+DEFINE('URL', 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1');
+
+$format = "php";
+if ($_SERVER['argc']>1) {
+ if ($_SERVER['argv'][1] == "perl") {
+ $format = "perl";
+ } else if ($_SERVER['argv'][1] == "c") {
+ $format = "c";
+ }
+}
+
+/*
+ * Does $search start with $startstring?
+ */
+function startsWith($search, $startstring) {
+ return (substr($search, 0, strlen($startstring))==$startstring);
+}
+
+/*
+ * Does $search end with $endstring?
+ */
+function endsWith($search, $endstring) {
+ return (substr($search, -strlen($endstring))==$endstring);
+}
+
+
+function buildSubdomain(&$node, $tldParts) {
+
+ $dom = trim(array_pop($tldParts));
+
+ $isNotDomain = FALSE;
+ if (startsWith($dom, "!")) {
+ $dom = substr($dom, 1);
+ $isNotDomain = TRUE;
+ }
+
+ if (!array_key_exists($dom, $node)) {
+ if ($isNotDomain) {
+ $node[$dom] = array("!" => "");
+ } else {
+ $node[$dom] = array();
+ }
+ }
+
+ if (!$isNotDomain && count($tldParts)>0) {
+ buildSubdomain($node[$dom], $tldParts);
+ }
+}
+
+function printNode($key, $valueTree, $isAssignment = false) {
+
+ global $format;
+
+ if ($isAssignment) {
+ if ($format == "perl") {
+ echo "$key = {";
+ } else {
+ echo "$key = array(";
+ }
+ } else {
+ if (strcmp($key, "!")==0) {
+ if ($format == "perl") {
+ echo "'!' => {}";
+ } else {
+ echo "'!' => ''";
+ }
+ return;
+ } else {
+ if ($format == "perl") {
+ echo "'$key' => {";
+ } else {
+ echo "'$key' => array(";
+ }
+ }
+ }
+
+ $keys = array_keys($valueTree);
+
+ for ($i=0; $i<count($keys); $i++) {
+
+ $key = $keys[$i];
+
+ printNode($key, $valueTree[$key]);
+
+ if ($i+1 != count($valueTree)) {
+ echo ",\n";
+ } else {
+ "\n";
+ }
+ }
+
+ if ($format == "perl") {
+ echo '}';
+ } else {
+ echo ')';
+ }
+}
+
+// sample: root(3:ac(5:com,edu,gov,net,ad(3:nom,co!,*)),de,com)
+
+function printNode_C($key, $valueTree) {
+
+ echo "$key";
+
+ $keys = array_keys($valueTree);
+
+ if (count($keys)>0) {
+
+ if (strcmp($keys['!'], "!")==0) {
+ echo "!";
+ } else {
+
+ echo "(".count($keys).":";
+
+ for ($i=0; $i<count($keys); $i++) {
+
+ $key = $keys[$i];
+
+ // if (count($valueTree[$key])>0) {
+ printNode_C($key, $valueTree[$key]);
+ // }
+
+ if ($i+1 != count($valueTree)) {
+ echo ",";
+ }
+ }
+
+ echo ')';
+ }
+ }
+}
+
+// --- main ---
+
+error_reporting(E_ERROR);
+
+$tldTree = array();
+$list = file_get_contents(URL);
+// $list = "bg\na.bg\n0.bg\n!c.bg\n";
+$lines = explode("\n", $list);
+$licence = TRUE;
+
+if ($format == "php") echo "<?php\n";
+
+foreach ($lines as $line) {
+ $line = trim($line);
+ if ($line == "") {
+ if ($licence) {
+ $licence = FALSE;
+ echo "\n";
+ }
+ continue;
+ }
+ if (startsWith($line, "//")) {
+ if ($licence) {
+ if ($format == "perl") {
+ echo "# ".substr($line, 2)."\n";
+ } else {
+ echo $line."\n";
+ }
+ }
+ continue;
+ }
+
+ // this must be a TLD
+ $tldParts = preg_split('\.', $line);
+ buildSubdomain($tldTree, $tldParts);
+}
+
+// print_r($tldTree);
+
+/*
+$tldTree = array(
+ 'de' => array(), // test.agitos.de --> agitos.de
+ 'uk' => array(
+ 'co' => array(), // test.agitos.co.uk --> agitos.co.uk
+ 'xy' => array('!'), // test.agitos.xy.uk --> xy.uk
+ '*' => array() // test.agitos.ab.uk --> agitos.ab.uk
+ )
+);
+*/
+
+if ($format == "c") {
+
+ echo "static const char tldString[] = \"";
+ printNode_C("root", $tldTree);
+ echo "\";\n\n";
+
+} else {
+
+ if ($format == "perl") {
+ print "package effectiveTLDs;\n\n";
+ }
+ printNode("\$tldTree", $tldTree, TRUE);
+ echo ";\n";
+ if ($format == "php") echo '?>' . "\n";
+
+}
+
+?>