diff --git a/CHANGELOG.md b/CHANGELOG.md
index 609cca5e4939d3df0234b18bf15c2b032e42ba0e..2cf95ce4168fcdde6022f3425b55d7447db45abd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -144,6 +144,11 @@ The folder containing expected screenshots was renamed from `expected-ui-screens
  * Tracking API: by default, when tracking a Page URL, Piwik will now remove the URL query string parameter `sid` if it is found. 
  * In the JavaScript tracker, the function `setDomains` will not anymore attempt to set a cookie path. Learn more about [configuring the tracker correctly](http://developer.piwik.org/guides/tracking-javascript-guide#tracking-one-domain) when tracking one or several domains and/or paths.
 
+## Piwik 2.16.1
+
+### Internal change
+ * The setting `[General]enable_marketplace=0/1` was removed, instead the new plugin Marketplace can be disabled/enabled. The updater should automatically migrate an existing setting.
+
 ## Piwik 2.16.0
 
 ### New features
diff --git a/composer.json b/composer.json
index c6f15b0b677cb947ff584dbf66f641e218beac1e..ef6b953aaf731e0e2c922b9568a2e1d80605835d 100644
--- a/composer.json
+++ b/composer.json
@@ -44,7 +44,8 @@
         "piwik/referrer-spam-blacklist": "~1.0",
         "piwik/searchengine-and-social-list": "~1.0",
         "tecnickcom/tcpdf": "~6.0",
-        "piwik/piwik-php-tracker": "^1.0"
+        "piwik/piwik-php-tracker": "^1.0",
+        "composer/semver": "~1.3.0"
     },
     "require-dev": {
         "aws/aws-sdk-php": "2.7.1",
diff --git a/composer.lock b/composer.lock
index d1164b4d32d89d3f7e8effa2734100ec86a190ba..79ce5d3c014d6187de73565a4321d78b1d682425 100644
--- a/composer.lock
+++ b/composer.lock
@@ -7,6 +7,68 @@
     "hash": "75544710dc04491e5d39085ee8b7ae05",
     "content-hash": "6c07c2bb4f82daef6519c9ac18c642c4",
     "packages": [
+        {
+            "name": "composer/semver",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/semver.git",
+                "reference": "df4463baa9f44fe6cf0a6da4fde2934d4c0a2747"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/semver/zipball/df4463baa9f44fe6cf0a6da4fde2934d4c0a2747",
+                "reference": "df4463baa9f44fe6cf0a6da4fde2934d4c0a2747",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.2 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.5 || ^5.0.5",
+                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Semver\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de"
+                },
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                },
+                {
+                    "name": "Rob Bast",
+                    "email": "rob.bast@gmail.com",
+                    "homepage": "http://robbast.nl"
+                }
+            ],
+            "description": "Semver library that offers utilities, version constraint parsing and validation.",
+            "keywords": [
+                "semantic",
+                "semver",
+                "validation",
+                "versioning"
+            ],
+            "time": "2016-02-25 22:23:39"
+        },
         {
             "name": "container-interop/container-interop",
             "version": "1.1.0",
@@ -1443,7 +1505,7 @@
                 "performance",
                 "profiling"
             ],
-            "time": "2015-02-26 14:37:51"
+            "time": "2014-08-28 17:34:52"
         },
         {
             "name": "guzzle/guzzle",
diff --git a/config/global.ini.php b/config/global.ini.php
index 761e05945929cda116d0ed7b1cc70c62ec247c66..8d8312173978f7568191b2049f66d6f881431938 100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -441,6 +441,12 @@ multisites_refresh_after_seconds = 300
 ; set the HTTPS environment variable.
 assume_secure_protocol = 0
 
+; Set to 1 if you're using more than one server for your Piwik installation. For example if you are using Piwik in a
+; load balanced environment, if you have configured failover or if you're just using multiple servers in general.
+; By enabling this flag we will for example not allow the installation of a plugin via the UI as a plugin would be only
+; installed on one server or a config one change would be only made on one server instead of all servers.
+multi_server_environment = 0
+
 ; List of proxy headers for client IP addresses
 ; Piwik will determine the user IP by extracting the first IP address found in this proxy header.
 ;
@@ -526,14 +532,9 @@ absolute_chroot_path =
 ; This may for example be useful when doing Mysql AWS replication
 enable_load_data_infile = 1
 
-; By setting this option to 0, you can disable the Piwik marketplace. This is useful to prevent giving the Super user
-; the access to disk and install custom PHP code (Piwik plugins).
-enable_marketplace = 1
-
 ; By setting this option to 0:
 ; - links to Enable/Disable/Uninstall plugins will be hidden and disabled
 ; - links to Uninstall themes will be disabled (but user can still enable/disable themes)
-; - as well as disabling plugins admin actions (such as "Upload new plugin"), setting this to 1 will have same effect as setting enable_marketplace=1
 enable_plugins_admin = 1
 
 ; By setting this option to 0, you can prevent Super User from editing the Geolocation settings.
@@ -805,6 +806,7 @@ Plugins[] = Resolution
 Plugins[] = DevicePlugins
 Plugins[] = Heartbeat
 Plugins[] = Intl
+Plugins[] = Marketplace
 Plugins[] = ProfessionalServices
 Plugins[] = UserId
 Plugins[] = CustomPiwikJs
diff --git a/core/API/DocumentationGenerator.php b/core/API/DocumentationGenerator.php
index 456e487f00062e70753abe36877084e58861a059..e738c6c4c86fa038b0191f74ddcc45ffedbaef9b 100644
--- a/core/API/DocumentationGenerator.php
+++ b/core/API/DocumentationGenerator.php
@@ -285,6 +285,8 @@ class DocumentationGenerator
             'addGoal',
             'updateGoal',
             'deleteGoal',
+            //Marketplace
+            'deleteLicenseKey'
         );
 
         if (in_array($methodName, $doNotPrintExampleForTheseMethods)) {
diff --git a/core/Http.php b/core/Http.php
index 7e7602c20e74d8a17d957bb5e1876d33c37f92af..373c4815d97dd6d7e6e1a4e991045cfd8d700792 100644
--- a/core/Http.php
+++ b/core/Http.php
@@ -94,17 +94,24 @@ class Http
                                            $httpPassword = null)
     {
         // create output file
-        $file = null;
+        $file = self::ensureDestinationDirectoryExists($destinationPath);
+
+        $acceptLanguage = $acceptLanguage ? 'Accept-Language: ' . $acceptLanguage : '';
+        return self::sendHttpRequestBy(self::getTransportMethod(), $aUrl, $timeout, $userAgent, $destinationPath, $file, $followDepth, $acceptLanguage, $acceptInvalidSslCertificate = false, $byteRange, $getExtendedInfo, $httpMethod, $httpUsername, $httpPassword);
+    }
+
+    public static function ensureDestinationDirectoryExists($destinationPath)
+    {
         if ($destinationPath) {
-            // Ensure destination directory exists
             Filesystem::mkdir(dirname($destinationPath));
             if (($file = @fopen($destinationPath, 'wb')) === false || !is_resource($file)) {
                 throw new Exception('Error while creating the file: ' . $destinationPath);
             }
+
+            return $file;
         }
 
-        $acceptLanguage = $acceptLanguage ? 'Accept-Language: ' . $acceptLanguage : '';
-        return self::sendHttpRequestBy(self::getTransportMethod(), $aUrl, $timeout, $userAgent, $destinationPath, $file, $followDepth, $acceptLanguage, $acceptInvalidSslCertificate = false, $byteRange, $getExtendedInfo, $httpMethod, $httpUsername, $httpPassword);
+        return null;
     }
 
     /**
diff --git a/core/Notification.php b/core/Notification.php
index b7c576eba0674925ac1222eb739501d7a01ebde2..7672263ab3786e66bfb46f19d9d96b50c05dc0ba 100644
--- a/core/Notification.php
+++ b/core/Notification.php
@@ -80,6 +80,13 @@ class Notification
      */
     const FLAG_NO_CLEAR   = 1;
 
+    /**
+     * If this flag is applied, a close icon will be displayed.
+     *
+     * See {@link $flags}.
+     */
+    const FLAG_CLEAR  = 0;
+
     /**
      * Notifications of this type will be displayed for a few seconds and then faded out.
      */
diff --git a/core/Plugin.php b/core/Plugin.php
index 82ef4f2fec72c00a40840d340fa26a8ad3a6618a..949895b70edad58a93e085fb4fdd0c014f2d0ec1 100644
--- a/core/Plugin.php
+++ b/core/Plugin.php
@@ -42,7 +42,6 @@ require_once PIWIK_INCLUDE_PATH . '/core/Plugin/MetadataLoader.php';
  * - **homepage**: The URL to the plugin's website.
  * - **authors**: A list of author arrays with keys for 'name', 'email' and 'homepage'
  * - **license**: The license the code uses (eg, GPL, MIT, etc.).
- * - **license_homepage**: URL to website describing the license used.
  * - **version**: The plugin version (eg, 1.0.1).
  * - **theme**: `true` or `false`. If `true`, the plugin will be treated as a theme.
  *
@@ -184,7 +183,6 @@ class Plugin
      * - 'author_homepage' => string    // author homepage URL (or email "mailto:youremail@example.org")
      * - 'homepage' => string           // plugin homepage URL
      * - 'license' => string            // plugin license
-     * - 'license_homepage' => string   // license homepage URL
      * - 'version' => string            // plugin version number; examples and 3rd party plugins must not use Version::VERSION; 3rd party plugins must increment the version number with each plugin release
      * - 'theme' => bool                // Whether this plugin is a theme (a theme is a plugin, but a plugin is not necessarily a theme)
      *
diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php
index 092a963b8adf7406d4513bc3153a0667a31af036..73bf47d32b7398d37c99c08cd2561da34480dbdf 100644
--- a/core/Plugin/ControllerAdmin.php
+++ b/core/Plugin/ControllerAdmin.php
@@ -10,12 +10,14 @@ namespace Piwik\Plugin;
 
 use Piwik\Config as PiwikConfig;
 use Piwik\Config;
+use Piwik\Container\StaticContainer;
 use Piwik\Development;
 use Piwik\Menu\MenuAdmin;
 use Piwik\Menu\MenuTop;
 use Piwik\Notification;
 use Piwik\Notification\Manager as NotificationManager;
 use Piwik\Piwik;
+use Piwik\Plugins\Marketplace\Marketplace;
 use Piwik\Tracker\TrackerConfig;
 use Piwik\Url;
 use Piwik\Version;
@@ -40,6 +42,50 @@ abstract class ControllerAdmin extends Controller
         }
     }
 
+    private static function notifyAnyInvalidLicense()
+    {
+        if (!Marketplace::isMarketplaceEnabled()) {
+            return;
+        }
+
+        if (Piwik::isUserIsAnonymous()) {
+            return;
+        }
+
+        if (!Piwik::isUserHasSomeAdminAccess()) {
+            return;
+        }
+
+        $expired = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins\InvalidLicenses');
+
+        $messageLicenseMissing = $expired->getMessageNoLicense();
+        if (!empty($messageLicenseMissing)) {
+            $notification = new Notification($messageLicenseMissing);
+            $notification->raw = true;
+            $notification->context = Notification::CONTEXT_ERROR;
+            $notification->title = Piwik::translate('Marketplace_LicenseMissing');
+            Notification\Manager::notify('ControllerAdmin_LicenseMissingWarning', $notification);
+        }
+
+        $messageExceeded = $expired->getMessageExceededLicenses();
+        if (!empty($messageExceeded)) {
+            $notification = new Notification($messageExceeded);
+            $notification->raw = true;
+            $notification->context = Notification::CONTEXT_WARNING;
+            $notification->title = Piwik::translate('Marketplace_LicenseExceeded');
+            Notification\Manager::notify('ControllerAdmin_LicenseExceededWarning', $notification);
+        }
+
+        $messageExpired = $expired->getMessageExpiredLicenses();
+        if (!empty($messageExpired)) {
+            $notification = new Notification($messageExpired);
+            $notification->raw = true;
+            $notification->context = Notification::CONTEXT_WARNING;
+            $notification->title = Piwik::translate('Marketplace_LicenseExpired');
+            Notification\Manager::notify('ControllerAdmin_LicenseExpiredWarning', $notification);
+        }
+    }
+
     private static function notifyAnyInvalidPlugin()
     {
         $missingPlugins = \Piwik\Plugin\Manager::getInstance()->getMissingPlugins();
@@ -272,6 +318,7 @@ abstract class ControllerAdmin extends Controller
 
         $view->isSuperUser = Piwik::hasUserSuperUserAccess();
 
+        self::notifyAnyInvalidLicense();
         self::notifyAnyInvalidPlugin();
         self::notifyWhenPhpVersionIsEOL();
         self::notifyWhenPhpVersionIsNotCompatibleWithNextMajorPiwik();
diff --git a/core/Plugin/Dependency.php b/core/Plugin/Dependency.php
index e1ccc1c92c5b2c5af0a8a99b3f2b2f3149d69e8f..127d32eabf3e473ffe4758aafcdaed924fa4ea23 100644
--- a/core/Plugin/Dependency.php
+++ b/core/Plugin/Dependency.php
@@ -8,7 +8,9 @@
  */
 namespace Piwik\Plugin;
 
+use Composer\Semver\VersionParser;
 use Piwik\Plugin\Manager as PluginManager;
+use Piwik\Plugins\Marketplace\Environment;
 use Piwik\Version;
 
 /**
@@ -17,10 +19,18 @@ use Piwik\Version;
 class Dependency
 {
     private $piwikVersion;
+    private $phpVersion;
 
     public function __construct()
     {
         $this->setPiwikVersion(Version::VERSION);
+        $this->setPhpVersion(PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION);
+    }
+
+    public function setEnvironment(Environment $environment)
+    {
+        $this->setPiwikVersion($environment->getPiwikVersion());
+        $this->setPhpVersion($environment->getPhpVersion());
     }
 
     public function getMissingDependencies($requires)
@@ -50,40 +60,91 @@ class Dependency
 
     public function getMissingVersions($currentVersion, $requiredVersion)
     {
-        $currentVersion   = trim($currentVersion);
-        $requiredVersions = explode(',', (string) $requiredVersion);
+        $currentVersion = trim($currentVersion);
 
         $missingVersions = array();
 
+        if (empty($currentVersion)) {
+            if (!empty($requiredVersion)) {
+                $missingVersions[] = (string) $requiredVersion;
+            }
+
+            return $missingVersions;
+        }
+
+        $requiredVersion = $this->makeVersionBackwardsCompatibleIfNoComparisonDefined($requiredVersion);
+
+        $version = new VersionParser();
+        $constraintsExisting = $version->parseConstraints($currentVersion);
+
+        $requiredVersions = explode(',', (string) $requiredVersion);
+
         foreach ($requiredVersions as $required) {
-            $comparison = '>=';
-            $required   = trim($required);
+            $required = trim($required);
 
-            if (preg_match('{^(<>|!=|>=?|<=?|==?)\s*(.*)}', $required, $matches)) {
-                $required   = $matches[2];
-                $comparison = trim($matches[1]);
+            if (empty($required)) {
+                continue;
             }
 
-            if (false === version_compare($currentVersion, $required, $comparison)) {
-                $missingVersions[] = $comparison . $required;
+            $required = $this->makeVersionBackwardsCompatibleIfNoComparisonDefined($required);
+            $constraintRequired = $version->parseConstraints($required);
+
+            if (!$constraintRequired->matches($constraintsExisting)) {
+                $missingVersions[] = $required;
             }
         }
 
         return $missingVersions;
     }
 
+    private function makeVersionBackwardsCompatibleIfNoComparisonDefined($version)
+    {
+        if (!empty($version) && preg_match('/^(\d+)\.(\d+)/', $version)) {
+            // TODO: we should remove this from piwik 3. To stay BC we add >= if no >= is defined yet
+            $version = '>=' . $version;
+        }
+
+        return $version;
+    }
+
     public function setPiwikVersion($piwikVersion)
     {
         $this->piwikVersion = $piwikVersion;
     }
 
+    public function setPhpVersion($phpVersion)
+    {
+        $this->phpVersion = $phpVersion;
+    }
+
+    public function hasDependencyToDisabledPlugin($requires)
+    {
+        if (empty($requires)) {
+            return false;
+        }
+
+        foreach ($requires as $name => $requiredVersion) {
+            $nameLower = strtolower($name);
+            $isPluginRequire = !in_array($nameLower, array('piwik', 'php'));
+            if ($isPluginRequire) {
+                // we do not check version, only whether it's activated. Everything that is not piwik or php is assumed
+                // a plugin so far.
+                if (!PluginManager::getInstance()->isPluginActivated($name)) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
     private function getCurrentVersion($name)
     {
         switch (strtolower($name)) {
             case 'piwik':
                 return $this->piwikVersion;
             case 'php':
-                return PHP_VERSION;
+                return $this->phpVersion;
             default:
                 try {
                     $pluginNames = PluginManager::getAllPluginsNames();
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 9455f06c0b519fe33dbad6578d1afd79a0d427af..846de60086285663dbf27d68ef46d4c80c979f72 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -658,7 +658,12 @@ class Manager
         || $name == self::DEFAULT_THEME;
     }
 
-    protected function isPluginThirdPartyAndBogus($pluginName)
+    /**
+     * @param $pluginName
+     * @return bool
+     * @ignore
+     */
+    public function isPluginThirdPartyAndBogus($pluginName)
     {
         if ($this->isPluginBundledWithCore($pluginName)) {
             return false;
@@ -915,7 +920,7 @@ class Manager
 
     public function isValidPluginName($pluginName)
     {
-        return (bool) preg_match('/^[a-zA-Z]([a-zA-Z0-9]*)$/D', $pluginName);
+        return (bool) preg_match('/^[a-zA-Z]([a-zA-Z0-9_]*)$/D', $pluginName);
     }
 
     /**
diff --git a/core/Plugin/MetadataLoader.php b/core/Plugin/MetadataLoader.php
index 5a6b2617e6827a42c37674cb81639c092f301712..bde849ff7eeb2387cc77596e56741d11044fd433 100644
--- a/core/Plugin/MetadataLoader.php
+++ b/core/Plugin/MetadataLoader.php
@@ -57,6 +57,12 @@ class MetadataLoader
             unset($plugin['description']);
         }
 
+        // look for a license file
+        $licenseFile = $this->getPathToLicenseFile();
+        if(!empty($licenseFile)) {
+            $plugin['license_file'] = $licenseFile;
+        }
+
         return array_merge(
             $defaults,
             $plugin
@@ -78,7 +84,6 @@ class MetadataLoader
             'homepage'         => 'http://piwik.org/',
             'authors'          => array(array('name' => 'Piwik', 'homepage'  => 'http://piwik.org/')),
             'license'          => 'GPL v3+',
-            'license_homepage' => 'http://www.gnu.org/licenses/gpl.html',
             'version'          => Version::VERSION,
             'theme'            => false,
             'require'          => array()
@@ -87,7 +92,7 @@ class MetadataLoader
 
     private function loadPluginInfoJson()
     {
-        $path = \Piwik\Plugin\Manager::getPluginsDirectory() . $this->pluginName . '/' . self::PLUGIN_JSON_FILENAME;
+        $path = $this->getPathToPluginFolder() . '/' . self::PLUGIN_JSON_FILENAME;
         return $this->loadJsonMetadata($path);
     }
 
@@ -111,4 +116,32 @@ class MetadataLoader
 
         return $info;
     }
+
+    /**
+     * @return string
+     */
+    private function getPathToPluginFolder()
+    {
+        return \Piwik\Plugin\Manager::getPluginsDirectory() . $this->pluginName;
+    }
+
+    /**
+     * @return null|string
+     */
+    public function getPathToLicenseFile()
+    {
+        $prefixPath = $this->getPathToPluginFolder() . '/';
+        $licenseFiles = array(
+            'LICENSE',
+            'LICENSE.md',
+            'LICENSE.txt'
+        );
+        foreach ($licenseFiles as $licenseFile) {
+            $pathToLicense = $prefixPath . $licenseFile;
+            if (is_file($pathToLicense) && is_readable($pathToLicense)) {
+                return $pathToLicense;
+            }
+        }
+        return null;
+    }
 }
diff --git a/core/Plugin/ReleaseChannels.php b/core/Plugin/ReleaseChannels.php
index f108a32cdf6a2160c34a0ba0f57829783fe5e1a1..08d95d9bb2ade3eeca64a57dc54a637fa2fe4c33 100644
--- a/core/Plugin/ReleaseChannels.php
+++ b/core/Plugin/ReleaseChannels.php
@@ -68,6 +68,18 @@ class ReleaseChannels
         return reset($channels);
     }
 
+    /**
+     * Sets the given release channel in config but does not save id. $config->forceSave() still needs to be called
+     * @internal tests only
+     * @param string $channel
+     */
+    public function setActiveReleaseChannelId($channel)
+    {
+        $general = Config::getInstance()->General;
+        $general['release_channel'] = $channel;
+        Config::getInstance()->General = $general;
+    }
+
     public function isValidReleaseChannelId($releaseChannelId)
     {
         $channel = $this->factory($releaseChannelId);
diff --git a/core/ProxyHttp.php b/core/ProxyHttp.php
index 790d62229d6b47a9d6f6ad3df90f8ce00fb6a993..bf3bbf43e34aedb1d429a86cd028d1db7c79c082 100644
--- a/core/ProxyHttp.php
+++ b/core/ProxyHttp.php
@@ -60,9 +60,12 @@ class ProxyHttp
      *                             of the file will be served.
      * @param int|false $byteEnd The ending byte in the file to serve. If false, the data from $byteStart to the
      *                           end of the file will be served.
+     * @param string|false $filename By default the filename of $file is reused as Content-Disposition. If the
+     *                               file should be sent as a different filename to the client you can specify
+     *                               a custom filename here.
      */
     public static function serverStaticFile($file, $contentType, $expireFarFutureDays = 100, $byteStart = false,
-                                            $byteEnd = false)
+                                            $byteEnd = false, $filename = false)
     {
         // if the file cannot be found return HTTP status code '404'
         if (!file_exists($file)) {
@@ -78,7 +81,12 @@ class ProxyHttp
         // set some HTTP response headers
         self::overrideCacheControlHeaders('public');
         Common::sendHeader('Vary: Accept-Encoding');
-        Common::sendHeader('Content-Disposition: inline; filename=' . basename($file));
+
+        if (false === $filename) {
+            $filename = basename($file);
+        }
+
+        Common::sendHeader('Content-Disposition: inline; filename=' . $filename);
 
         if ($expireFarFutureDays) {
             // Required by proxy caches potentially in between the browser and server to cache the request indeed
diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php
index c0b2d8e177f191855066cf5321af08cd9d1eaddb..52c4f3e16fd316e7b265984f0fe073477d446333 100644
--- a/core/SettingsPiwik.php
+++ b/core/SettingsPiwik.php
@@ -232,6 +232,43 @@ class SettingsPiwik
         return true;
     }
 
+    /**
+     * Detect whether user has enabled auto updates. Please note this config is a bit misleading. It is currently
+     * actually used for 2 things: To disable making any connections back to Piwik, and to actually disable the auto
+     * update of core and plugins.
+     * @return bool
+     */
+    public static function isAutoUpdateEnabled()
+    {
+        return (bool) Config::getInstance()->General['enable_auto_update'];
+    }
+
+    /**
+     * Detects whether an auto update can be made. An update is possible if the user is not on multiple servers and if
+     * automatic updates are actually enabled. If a user is running Piwik on multiple servers an update is not possible
+     * as it would be installed only on one server instead of all of them. Also if a user has disabled automatic updates
+     * we cannot perform any automatic updates.
+     *
+     * @return bool
+     */
+    public static function isAutoUpdatePossible()
+    {
+        return !self::isMultiServerEnvironment() && self::isAutoUpdateEnabled();
+    }
+
+    /**
+     * Returns `true` if Piwik is running on more than one server. For example in a load balanced environment. In this
+     * case we should not make changes to the config and not install a plugin via the UI as it would be only executed
+     * on one server.
+     * @return bool
+     */
+    public static function isMultiServerEnvironment()
+    {
+        $is = Config::getInstance()->General['multi_server_environment'];
+
+        return !empty($is);
+    }
+
     /**
      * Returns `true` if segmentation is allowed for this user, `false` if otherwise.
      *
diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php
index 8326df8debc7285facc0c4933299d43c3516be8b..bdb4efc7ad0ae67aaee49379bc405a9c0116971c 100644
--- a/core/Tracker/Action.php
+++ b/core/Tracker/Action.php
@@ -248,12 +248,12 @@ abstract class Action
 
     public function getIdActionUrlForEntryAndExitIds()
     {
-        return $this->getIdActionUrl();
+        return false;
     }
 
     public function getIdActionNameForEntryAndExitIds()
     {
-        return $this->getIdActionName();
+        return false;
     }
 
     public function getIdActionName()
diff --git a/core/Tracker/ActionPageview.php b/core/Tracker/ActionPageview.php
index eb98dd4b232d39435ea9c77cf56efddf35d8a196..79f8f467245346342e52cc646f8738c431db1603 100644
--- a/core/Tracker/ActionPageview.php
+++ b/core/Tracker/ActionPageview.php
@@ -51,6 +51,16 @@ class ActionPageview extends Action
         return true;
     }
 
+    public function getIdActionUrlForEntryAndExitIds()
+    {
+        return $this->getIdActionUrl();
+    }
+
+    public function getIdActionNameForEntryAndExitIds()
+    {
+        return $this->getIdActionName();
+    }
+
     private function cleanupActionName($actionName)
     {
         // get the delimiter, by default '/'; BC, we read the old action_category_delimiter first (see #1067)
diff --git a/core/Twig.php b/core/Twig.php
index 5ac84993f126d391e88803b7f4ee4adc64b609f8..ce8085f23c01d3210c1f8e971a1d7f38723a5ea0 100755
--- a/core/Twig.php
+++ b/core/Twig.php
@@ -176,6 +176,9 @@ class Twig
         $this->addFilter_prettyDate();
         $this->addFilter_safeDecodeRaw();
         $this->addFilter_number();
+        $this->addFilter_nonce();
+        $this->addFilter_md5();
+        $this->addFilter_onlyDomain();
         $this->twig->addFilter(new Twig_SimpleFilter('implode', 'implode'));
         $this->twig->addFilter(new Twig_SimpleFilter('ucwords', 'ucwords'));
         $this->twig->addFilter(new Twig_SimpleFilter('lcfirst', 'lcfirst'));
@@ -428,6 +431,29 @@ class Twig
         $this->twig->addFilter($formatter);
     }
 
+    protected function addFilter_nonce()
+    {
+        $nonce = new Twig_SimpleFilter('nonce', array('Piwik\\Nonce', 'getNonce'));
+        $this->twig->addFilter($nonce);
+    }
+
+    private function addFilter_md5()
+    {
+        $md5 = new \Twig_SimpleFilter('md5', function ($value) {
+            return md5($value);
+        });
+        $this->twig->addFilter($md5);
+    }
+
+    private function addFilter_onlyDomain()
+    {
+        $domainOnly = new \Twig_SimpleFilter('domainOnly', function ($url) {
+            $parsed = parse_url($url);
+            return $parsed['scheme'] . '://' . $parsed['host'];
+        });
+        $this->twig->addFilter($domainOnly);
+    }
+
     protected function addFilter_truncate()
     {
         $truncateFilter = new Twig_SimpleFilter('truncate', function ($string, $size) {
diff --git a/core/UpdateCheck.php b/core/UpdateCheck.php
index e2ce130c4a3ca003806f7f3a5de509bddb3fe066..403fa90b367b677d399642c5dba553325f9a8203 100644
--- a/core/UpdateCheck.php
+++ b/core/UpdateCheck.php
@@ -21,11 +21,6 @@ class UpdateCheck
     const LATEST_VERSION = 'UpdateCheck_LatestVersion';
     const SOCKET_TIMEOUT = 2;
 
-    private static function isAutoUpdateEnabled()
-    {
-        return (bool) Config::getInstance()->General['enable_auto_update'];
-    }
-
     /**
      * Check for a newer version
      *
@@ -34,7 +29,7 @@ class UpdateCheck
      */
     public static function check($force = false, $interval = null)
     {
-        if (!self::isAutoUpdateEnabled()) {
+        if (!SettingsPiwik::isAutoUpdateEnabled()) {
             return;
         }
 
diff --git a/core/UpdateCheck/ReleaseChannel.php b/core/UpdateCheck/ReleaseChannel.php
index b398ea22c317ece9cdcfcf2432815ba0f8c5e1a7..074437862325afc2fdb0e71f82ba93c71a7ee643 100644
--- a/core/UpdateCheck/ReleaseChannel.php
+++ b/core/UpdateCheck/ReleaseChannel.php
@@ -33,6 +33,15 @@ abstract class ReleaseChannel
      */
     abstract public function getName();
 
+    /**
+     * Whether only stable versions are wanted or also beta versions.
+     * @return bool
+     */
+    public function doesPreferStable()
+    {
+        return true;
+    }
+
     /**
      * Get the latest available version number for this release channel. Eg '2.15.0-b4' or '2.15.0'. Should be
      * a semantic version number in format MAJOR.MINOR.PATCH (http://semver.org/). Returning an empty string in case
diff --git a/core/Updates/3.0.0-b2.php b/core/Updates/3.0.0-b2.php
deleted file mode 100644
index 17c0fce85b8329bb95449b458a28fce9a06caeeb..0000000000000000000000000000000000000000
--- a/core/Updates/3.0.0-b2.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-
-namespace Piwik\Updates;
-
-use Piwik\Db;
-use Piwik\Plugins\Dashboard;
-use Piwik\Updater;
-use Piwik\Updater\Migration;
-use Piwik\Updates;
-
-class Updates_3_0_0_b2 extends Updates
-{
-    public static function isMajorUpdate()
-    {
-        return true;
-    }
-}
diff --git a/core/Updates/3.0.0-b3.php b/core/Updates/3.0.0-b3.php
new file mode 100644
index 0000000000000000000000000000000000000000..898f669eeba964933fcb51f638751fe28a8d7709
--- /dev/null
+++ b/core/Updates/3.0.0-b3.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Updates;
+
+use Piwik\Config;
+use Piwik\Plugin;
+use Piwik\Updater;
+use Piwik\Updates as PiwikUpdates;
+use Piwik\Updates;
+
+class Updates_3_0_0_b3 extends Updates
+{
+    private $marketplaceEnabledConfigSetting = 'enable_marketplace';
+
+    public static function isMajorUpdate()
+    {
+        return true;
+    }
+
+    public function doUpdate(Updater $updater)
+    {
+        $general = $this->getConfig()->General;
+
+        // need to check against int(0) value, as if the config setting is not set at all its value is null
+        if (isset($general[$this->marketplaceEnabledConfigSetting])) {
+            $isMarketplaceEnabled = 0 !== $general[$this->marketplaceEnabledConfigSetting];
+
+            $this->removeOldMarketplaceEnabledConfig();
+
+            if ($isMarketplaceEnabled) {
+                $pluginManager = Plugin\Manager::getInstance();
+                $pluginName = 'Marketplace';
+
+                if (!$pluginManager->isPluginActivated($pluginName)) {
+                    $pluginManager->activatePlugin($pluginName);
+                }
+            }
+        }
+    }
+
+    private function getConfig()
+    {
+        return Config::getInstance();
+    }
+
+    private function removeOldMarketplaceEnabledConfig()
+    {
+        $config  = $this->getConfig();
+        $general = $config->General;
+
+        if (array_key_exists($this->marketplaceEnabledConfigSetting, $general)) {
+            unset($general[$this->marketplaceEnabledConfigSetting]);
+
+            $config->General = $general;
+            $config->forceSave();
+        }
+    }
+}
diff --git a/core/View.php b/core/View.php
index 0c9b379a6741d8b0df095ddef48d9a25794057df..06b6db5f4acfbc20a91a9b28a3b8a95cb14ed7e5 100644
--- a/core/View.php
+++ b/core/View.php
@@ -87,6 +87,7 @@ if (!defined('PIWIK_USER_PATH')) {
  * - **isPluginLoaded**: Returns true if the supplied plugin is loaded, false if otherwise.
  *                       `{% if isPluginLoaded('Goals') %}...{% endif %}`
  * - **areAdsForProfessionalServicesEnabled**: Returns true if it is ok to show some advertising in the UI for providers of Professional Support for Piwik (from Piwik 2.16.0)
+ * - **isMultiServerEnvironment**: Returns true if Piwik is used on more than one server (since Piwik 2.16.1)
  *
  * ### Examples
  *
@@ -237,6 +238,7 @@ class View implements ViewInterface
             $this->latest_version_available = UpdateCheck::isNewestVersionAvailable();
             $this->disableLink = Common::getRequestVar('disableLink', 0, 'int');
             $this->isWidget = Common::getRequestVar('widget', 0, 'int');
+            $this->isMultiServerEnvironment = SettingsPiwik::isMultiServerEnvironment();
 
             $piwikAds = StaticContainer::get('Piwik\ProfessionalServices\Advertising');
             $this->areAdsForProfessionalServicesEnabled = $piwikAds->areAdsForProfessionalServicesEnabled();
diff --git a/js/piwik.js b/js/piwik.js
index 2691c1711e1047ccc995201b9385dcffbc1eff17..04afc3cd1969edb746903c320615011e2365fc7f 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -6787,8 +6787,10 @@ if (typeof window.Piwik !== 'object') {
             getAsyncTracker: function (piwikUrl, siteId) {
 
                 var firstTracker;
-                if (asyncTrackers && asyncTrackers[0]) {
+                if (asyncTrackers && asyncTrackers.length && asyncTrackers[0]) {
                     firstTracker = asyncTrackers[0];
+                } else {
+                    return createFirstTracker(piwikUrl, siteId);
                 }
 
                 if (!siteId && !piwikUrl) {
@@ -6852,6 +6854,20 @@ if (typeof window.Piwik !== 'object') {
 (function () {
     'use strict';
 
+    function hasPaqConfiguration()
+    {
+        if ('object' !== typeof _paq) {
+            return false;
+        }
+        // needed to write it this way for jslint
+        var lengthType = typeof _paq.length;
+        if ('undefined' === lengthType) {
+            return false;
+        }
+
+        return !!_paq.length;
+    }
+
     if (window
         && 'object' === typeof window.piwikPluginAsyncInit
         && window.piwikPluginAsyncInit.length) {
@@ -6863,15 +6879,23 @@ if (typeof window.Piwik !== 'object') {
         }
     }
 
-    window.Piwik.addTracker();
+    if (window && window.piwikAsyncInit) {
+        window.piwikAsyncInit();
+    }
+
+    if (!window.Piwik.getAsyncTrackers().length) {
+        // we only create an initial tracker when no other async tracker has been created yet in piwikAsyncInit()
+        if (hasPaqConfiguration()) {
+            // we only create an initial tracker if there is a configuration for it via _paq. Otherwise
+            // Piwik.getAsyncTrackers() would return unconfigured trackers
+            window.Piwik.addTracker();
+        }
+    }
 
     window.Piwik.trigger('PiwikInitialized', []);
     window.Piwik.initialized = true;
 }());
 
-if (window && window.piwikAsyncInit) {
-    window.piwikAsyncInit();
-}
 
 /*jslint sloppy: true */
 (function () {
diff --git a/js/piwik.min.js b/js/piwik.min.js
index 9c105558827473a95b5e242415caeec2bcb1e851..6fa09e8deb573213af901cb2f94fa8e63f9afd51 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -63,10 +63,10 @@ ci=cG&&(cF==="yes"||cF==="1");if(ci){this.disableCookies()}};this.addListener=fu
 }};this.setCountPreRendered=function(cF){aV=cF};this.trackGoal=function(cF,cH,cG){bQ(function(){cl(cF,cH,cG)})};this.trackLink=function(cG,cF,cI,cH){bQ(function(){cs(cG,cF,cI,cH)})};this.trackPageView=function(cF,cH,cG){bJ=[];if(H(bF)){bQ(function(){S(ap,bi,bF)})}else{bQ(function(){bz(cF,cH,cG)})}};this.trackAllContentImpressions=function(){if(H(bF)){return}bQ(function(){m(function(){var cF=r.findContentNodes();var cG=b6(cF);cC(cG,bj)})})};this.trackVisibleContentImpressions=function(cF,cG){if(H(bF)){return}if(!D(cF)){cF=true}if(!D(cG)){cG=750}aC(cF,cG,this);bQ(function(){j(function(){var cH=r.findContentNodes();var cI=aR(cH);cC(cI,bj)})})};this.trackContentImpression=function(cH,cF,cG){if(H(bF)){return}if(!cH){return}cF=cF||"Unknown";bQ(function(){var cI=ar(cH,cF,cG);bg(cI,bj)})};this.trackContentImpressionsWithinNode=function(cF){if(H(bF)||!cF){return}bQ(function(){if(bO){j(function(){var cG=r.findContentNodesWithinNode(cF);var cH=aR(cG);cC(cH,bj)})}else{m(function(){var cG=r.findContentNodesWithinNode(cF);
 var cH=b6(cG);cC(cH,bj)})}})};this.trackContentInteraction=function(cH,cI,cF,cG){if(H(bF)){return}if(!cH||!cI){return}cF=cF||"Unknown";bQ(function(){var cJ=az(cH,cI,cF,cG);bg(cJ,bj)})};this.trackContentInteractionNode=function(cG,cF){if(H(bF)||!cG){return}bQ(function(){var cH=cA(cG,cF);bg(cH,bj)})};this.logAllContentBlocksOnPage=function(){var cG=r.findContentNodes();var cF=r.collectContent(cG);if(console!==undefined&&console&&console.log){console.log(cF)}};this.trackEvent=function(cG,cI,cF,cH,cK,cJ){bQ(function(){ak(cG,cI,cF,cH,cK,cJ)})};this.trackSiteSearch=function(cF,cH,cG,cI){bQ(function(){bI(cF,cH,cG,cI)})};this.setEcommerceView=function(cI,cF,cH,cG){if(!D(cH)||!cH.length){cH=""}else{if(cH instanceof Array){cH=JSON2.stringify(cH)}}bv[5]=["_pkc",cH];if(D(cG)&&String(cG).length){bv[2]=["_pkp",cG]}if((!D(cI)||!cI.length)&&(!D(cF)||!cF.length)){return}if(D(cI)&&cI.length){bv[3]=["_pks",cI]}if(!D(cF)||!cF.length){cF=""}bv[4]=["_pkn",cF]};this.addEcommerceItem=function(cJ,cF,cH,cG,cI){if(cJ.length){cr[cJ]=[cJ,cF,cH,cG,cI]
 }};this.trackEcommerceOrder=function(cF,cJ,cI,cH,cG,cK){by(cF,cJ,cI,cH,cG,cK)};this.trackEcommerceCartUpdate=function(cF){a6(cF)};this.trackRequest=function(cF,cH,cG){bQ(function(){var cI=b0(cF,cH);bg(cI,bj,cG)})};d.trigger("TrackerSetup",[this])}function B(){return{push:X}}function b(ak,aj){var al={};var ah,ai;for(ah=0;ah<aj.length;ah++){var af=aj[ah];al[af]=1;for(ai=0;ai<ak.length;ai++){if(ak[ai]&&ak[ai][0]){var ag=ak[ai][0];if(af===ag){X(ak[ai]);delete ak[ai];if(al[ag]>1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;
-z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C[0]){ai=C[0]}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()
-}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
+z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C.length&&C[0]){ai=C[0]}else{return V(ag,aj)}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()
+}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
 /*!!! pluginTrackerHook */
-}(function(){if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}window.Piwik.addTracker();window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return
-}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
+}(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
+if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
 /*!! @license-end */
 };
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/.bower.json b/libs/bower_components/iframe-resizer/.bower.json
new file mode 100644
index 0000000000000000000000000000000000000000..5fe4004c75c8e2c59b7b3dca3c26479ea9c221c3
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/.bower.json
@@ -0,0 +1,55 @@
+{
+  "name": "iframe-resizer",
+  "version": "3.5.5",
+  "homepage": "https://github.com/davidjbradshaw/iframe-resizer",
+  "authors": [
+    "David J. Bradshaw <dave@bradshaw.net>"
+  ],
+  "description": "Responsively keep same and cross domain iFrames sized to their content with support for window/content resizing, multiple and nested iFrames. (Dependacy free and works with IE8+)",
+  "main": [
+    "js/iframeResizer.js",
+    "js/iframeResizer.contentWindow.js"
+  ],
+  "keywords": [
+    "CrossDomain",
+    "Cross-Domain",
+    "iFrame",
+    "Resizing",
+    "Resizer",
+    "postMessage",
+    "content",
+    "resize",
+    "height",
+    "autoheight",
+    "auto-height",
+    "iframe-auto-height",
+    "height-iframe",
+    "heightiframe",
+    "width",
+    "mutationObserver",
+    "RWD",
+    "responsive",
+    "responsiveiframes",
+    "responsive-iframes"
+  ],
+  "license": "MIT",
+  "ignore": [
+    "example",
+    "test",
+    "gruntfile.js",
+    "*.md",
+    "*.json"
+  ],
+  "dependencies": {},
+  "devDependencies": {},
+  "_release": "3.5.5",
+  "_resolution": {
+    "type": "version",
+    "tag": "v3.5.5",
+    "commit": "ddfe8e77c1fd7cc36e2b88b057ef2ab04a45c666"
+  },
+  "_source": "https://github.com/davidjbradshaw/iframe-resizer.git",
+  "_target": "~3.5.5",
+  "_originalSource": "iframe-resizer",
+  "_direct": true
+}
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/.gitignore b/libs/bower_components/iframe-resizer/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..352f695b0f86a8cc1b5387cc909e790d8b98bfa5
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/.gitignore
@@ -0,0 +1,9 @@
+.DS_Store
+.coveralls.yml
+node_modules
+bin
+example/test.html
+test/*.off
+npm-debug.log
+bower_components
+coverage*
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/.travis.yml b/libs/bower_components/iframe-resizer/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6f671aef5e6bdc6d1b66f1280d35b650baf244c6
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+  - "4.1"
+before_script:
+  - npm install -g grunt-cli
+sudo: false
diff --git a/libs/bower_components/iframe-resizer/LICENSE b/libs/bower_components/iframe-resizer/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..1c74bdc83751e8647404abe1fe754aed61cc41f9
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015 David J. Bradshaw
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/bower.json b/libs/bower_components/iframe-resizer/bower.json
new file mode 100644
index 0000000000000000000000000000000000000000..37494959877298cbb62a5d1904eb9cd38303cc4a
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/bower.json
@@ -0,0 +1,45 @@
+{
+  "name": "iframe-resizer",
+  "version": "3.5.5",
+  "homepage": "https://github.com/davidjbradshaw/iframe-resizer",
+  "authors": [
+    "David J. Bradshaw <dave@bradshaw.net>"
+  ],
+  "description": "Responsively keep same and cross domain iFrames sized to their content with support for window/content resizing, multiple and nested iFrames. (Dependacy free and works with IE8+)",
+  "main": [
+    "js/iframeResizer.js",
+    "js/iframeResizer.contentWindow.js"
+  ],
+  "keywords": [
+    "CrossDomain",
+    "Cross-Domain",
+    "iFrame",
+    "Resizing",
+    "Resizer",
+    "postMessage",
+    "content",
+    "resize",
+    "height",
+    "autoheight",
+    "auto-height",
+    "iframe-auto-height",
+    "height-iframe",
+    "heightiframe",
+    "width",
+    "mutationObserver",
+    "RWD",
+    "responsive",
+    "responsiveiframes",
+    "responsive-iframes"
+  ],
+  "license": "MIT",
+  "ignore": [
+    "example",
+    "test",
+    "gruntfile.js",
+    "*.md",
+    "*.json"
+  ],
+  "dependencies": {},
+  "devDependencies": {}
+}
diff --git a/libs/bower_components/iframe-resizer/index.js b/libs/bower_components/iframe-resizer/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..c08035a32b3ec14387a7ddc6d561937634a9ce78
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/index.js
@@ -0,0 +1,4 @@
+
+'use strict';
+
+module.exports = require('./js');
diff --git a/libs/bower_components/iframe-resizer/js/ie8.polyfils.map b/libs/bower_components/iframe-resizer/js/ie8.polyfils.map
new file mode 100644
index 0000000000000000000000000000000000000000..eb0ef37713cd64c01975c5548ec26dbfe0f2fe55
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/ie8.polyfils.map
@@ -0,0 +1 @@
+{"version":3,"file":"ie8.polyfils.min.js","sources":["../src/ie8.polyfils.js"],"names":["Array","prototype","forEach","fun","this","TypeError","t","Object","len","length","thisArg","arguments","i","call","Function","bind","oThis","aArgs","slice","fToBind","fNOP","fBound","apply","concat","callback","O","k"],"mappings":";;AAOMA,MAAMC,UAAUC,UACrBF,MAAMC,UAAUC,QAAU,SAASC,GAClC,YACA,IAAa,SAATC,MAA4B,OAATA,MAAgC,kBAARD,GAAoB,KAAM,IAAIE,UAO7E,KAAK,GAJJC,GAAIC,OAAOH,MACXI,EAAMF,EAAEG,SAAW,EACnBC,EAAUC,UAAUF,QAAU,EAAIE,UAAU,GAAK,OAEzCC,EAAI,EAAOJ,EAAJI,EAASA,IACpBA,IAAKN,IACRH,EAAIU,KAAKH,EAASJ,EAAEM,GAAIA,EAAGN,KAK1BQ,SAASb,UAAUc,OACtBD,SAASb,UAAUc,KAAO,SAASC,GACjC,GAAoB,kBAATZ,MAGT,KAAM,IAAIC,WAAU,uEAGtB,IAAIY,GAAUjB,MAAMC,UAAUiB,MAAML,KAAKF,UAAW,GAChDQ,EAAUf,KACVgB,EAAU,aACVC,EAAU,WACR,MAAOF,GAAQG,MAAMlB,eAAgBgB,GAAOhB,KAAOY,EAC5CC,EAAMM,OAAOvB,MAAMC,UAAUiB,MAAML,KAAKF,aAMrD,OAHAS,GAAKnB,UAAYG,KAAKH,UACtBoB,EAAOpB,UAAY,GAAImB,GAEhBC,IAINrB,MAAMC,UAAUC,UACnBF,MAAMC,UAAUC,QAAU,SAASsB,EAAUd,GAC3C,GAAa,OAATN,KAAe,KAAM,IAAIC,WAAU,+BACvC,IAAwB,kBAAbmB,GAAyB,KAAM,IAAInB,WAAUmB,EAAW,qBAMnE,KAAK,GAHHC,GAAIlB,OAAOH,MACXI,EAAMiB,EAAEhB,SAAW,EAEZiB,EAAE,EAAQlB,EAAJkB,EAAUA,IACnBA,IAAKD,IACPD,EAASX,KAAKH,EAASe,EAAEC,GAAIA,EAAGD","sourcesContent":["/*\n * IE8 Polyfils for iframeResizer.js\n *\n * Public domain code - Mozilla Contributors\n * https://developer.mozilla.org/\n */\n\n if (!Array.prototype.forEach){\n\tArray.prototype.forEach = function(fun /*, thisArg */){\n\t\t\"use strict\";\n\t\tif (this === void 0 || this === null || typeof fun !== \"function\") throw new TypeError();\n\n\t\tvar\n\t\t\tt = Object(this),\n\t\t\tlen = t.length >>> 0,\n\t\t\tthisArg = arguments.length >= 2 ? arguments[1] : void 0;\n\n\t\tfor (var i = 0; i < len; i++)\n\t\t\tif (i in t)\n\t\t\t\tfun.call(thisArg, t[i], i, t);\n\t};\n}\n\n\nif (!Function.prototype.bind) {\n  Function.prototype.bind = function(oThis) {\n    if (typeof this !== 'function') {\n      // closest thing possible to the ECMAScript 5\n      // internal IsCallable function\n      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n    }\n\n    var aArgs   = Array.prototype.slice.call(arguments, 1),\n        fToBind = this,\n        fNOP    = function() {},\n        fBound  = function() {\n          return fToBind.apply(this instanceof fNOP ? this : oThis,\n                 aArgs.concat(Array.prototype.slice.call(arguments)));\n        };\n\n    fNOP.prototype = this.prototype;\n    fBound.prototype = new fNOP();\n\n    return fBound;\n  };\n}\n\nif (!Array.prototype.forEach) {\n  Array.prototype.forEach = function(callback, thisArg) {\n    if (this === null) throw new TypeError(' this is null or not defined');\n    if (typeof callback !== 'function') throw new TypeError(callback + ' is not a function');\n\n    var\n      O = Object(this),\n      len = O.length >>> 0;\n\n    for (var k=0 ; k < len ; k++) {\n      if (k in O)\n        callback.call(thisArg, O[k], k, O);\n    }\n  };\n}\n\n\n"]}
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js b/libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..5836bacdb4f25058dbcb5aa86878c99c0b5d2a48
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js
@@ -0,0 +1,4 @@
+// IE8 polyfils for iframeResizer.js
+
+Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this||"function"!=typeof a)throw new TypeError;for(var b=Object(this),c=b.length>>>0,d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){if(null===this)throw new TypeError(" this is null or not defined");if("function"!=typeof a)throw new TypeError(a+" is not a function");for(var c=Object(this),d=c.length>>>0,e=0;d>e;e++)e in c&&a.call(b,c[e],e,c)});
+//# sourceMappingURL=ie8.polyfils.map
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js
new file mode 100644
index 0000000000000000000000000000000000000000..bfb4a416e3fbf410c5ef6a270fedb94f73e8c83e
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js
@@ -0,0 +1,1108 @@
+/*
+ * File: iframeResizer.contentWindow.js
+ * Desc: Include this file in any page being loaded into an iframe
+ *       to force the iframe to resize to the content size.
+ * Requires: iframeResizer.js on host page.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Ian Caunce - ian@hallnet.co.uk
+ */
+
+
+;(function(window, undefined) {
+	'use strict';
+
+	var
+		autoResize            = true,
+		base                  = 10,
+		bodyBackground        = '',
+		bodyMargin            = 0,
+		bodyMarginStr         = '',
+		bodyObserver          = null,
+		bodyPadding           = '',
+		calculateWidth        = false,
+		doubleEventList       = {'resize':1,'click':1},
+		eventCancelTimer      = 128,
+		firstRun              = true,
+		height                = 1,
+		heightCalcModeDefault = 'bodyOffset',
+		heightCalcMode        = heightCalcModeDefault,
+		initLock              = true,
+		initMsg               = '',
+		inPageLinks           = {},
+		interval              = 32,
+		intervalTimer         = null,
+		logging               = false,
+		msgID                 = '[iFrameSizer]',  //Must match host page msg ID
+		msgIdLen              = msgID.length,
+		myID                  = '',
+		observer              = null,
+		resetRequiredMethods  = {max:1,min:1,bodyScroll:1,documentElementScroll:1},
+		resizeFrom            = 'child',
+		sendPermit            = true,
+		target                = window.parent,
+		targetOriginDefault   = '*',
+		tolerance             = 0,
+		triggerLocked         = false,
+		triggerLockedTimer    = null,
+		throttledTimer        = 16,
+		width                 = 1,
+		widthCalcModeDefault  = 'scroll',
+		widthCalcMode         = widthCalcModeDefault,
+		win                   = window,
+		messageCallback       = function(){ warn('MessageCallback function not defined'); },
+		readyCallback         = function(){},
+		pageInfoCallback      = function(){},
+		customCalcMethods     = {
+			height: function(){
+				warn('Custom height calculation function not defined');
+				return document.documentElement.offsetHeight;
+			}, 
+			width: function(){
+				warn('Custom width calculation function not defined');
+				return document.body.scrollWidth;
+			}
+		};
+
+
+	function addEventListener(el,evt,func){
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if ('addEventListener' in window){
+			el.addEventListener(evt,func, false);
+		} else if ('attachEvent' in window){ //IE
+			el.attachEvent('on'+evt,func);
+		}
+	}
+
+	function removeEventListener(el,evt,func){
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if ('removeEventListener' in window){
+			el.removeEventListener(evt,func, false);
+		} else if ('detachEvent' in window){ //IE
+			el.detachEvent('on'+evt,func);
+		}
+	}
+
+	function capitalizeFirstLetter(string) {
+		return string.charAt(0).toUpperCase() + string.slice(1);
+	}
+
+	//Based on underscore.js
+	function throttle(func) {
+		var
+			context, args, result,
+			timeout = null,
+			previous = 0,
+			later = function() {
+				previous = getNow();
+				timeout = null;
+				result = func.apply(context, args);
+				if (!timeout) {
+					context = args = null;
+				}
+			};
+
+		return function() {
+			var now = getNow();
+
+			if (!previous) {
+				previous = now;
+			}
+
+			var remaining = throttledTimer - (now - previous);
+
+			context = this;
+			args = arguments;
+
+			if (remaining <= 0 || remaining > throttledTimer) {
+				if (timeout) {
+					clearTimeout(timeout);
+					timeout = null;
+				}
+
+				previous = now;
+				result = func.apply(context, args);
+
+				if (!timeout) {
+					context = args = null;
+				}
+
+			} else if (!timeout) {
+				timeout = setTimeout(later, remaining);
+			}
+
+			return result;
+		};
+	}
+
+	var getNow = Date.now || function() {
+		/* istanbul ignore next */ // Not testable in PhantonJS
+		return new Date().getTime();
+	};
+
+	function formatLogMsg(msg){
+		return msgID + '[' + myID + ']' + ' ' + msg;
+	}
+
+	function log(msg){
+		if (logging && ('object' === typeof window.console)){
+			console.log(formatLogMsg(msg));
+		}
+	}
+
+	function warn(msg){
+		if ('object' === typeof window.console){
+			console.warn(formatLogMsg(msg));
+		}
+	}
+
+
+	function init(){
+		readDataFromParent();
+		log('Initialising iFrame ('+location.href+')');
+		readDataFromPage();
+		setMargin();
+		setBodyStyle('background',bodyBackground);
+		setBodyStyle('padding',bodyPadding);
+		injectClearFixIntoBodyElement();
+		checkHeightMode();
+		checkWidthMode();
+		stopInfiniteResizingOfIFrame();
+		setupPublicMethods();
+		startEventListeners();
+		inPageLinks = setupInPageLinks();
+		sendSize('init','Init message from host page');
+		readyCallback();
+	}
+
+	function readDataFromParent(){
+
+		function strBool(str){
+			return 'true' === str ? true : false;
+		}
+
+		var data = initMsg.substr(msgIdLen).split(':');
+
+		myID               = data[0];
+		bodyMargin         = (undefined !== data[1]) ? Number(data[1])   : bodyMargin; //For V1 compatibility
+		calculateWidth     = (undefined !== data[2]) ? strBool(data[2])  : calculateWidth;
+		logging            = (undefined !== data[3]) ? strBool(data[3])  : logging;
+		interval           = (undefined !== data[4]) ? Number(data[4])   : interval;
+		autoResize         = (undefined !== data[6]) ? strBool(data[6])  : autoResize;
+		bodyMarginStr      = data[7];
+		heightCalcMode     = (undefined !== data[8]) ? data[8]           : heightCalcMode;
+		bodyBackground     = data[9];
+		bodyPadding        = data[10];
+		tolerance          = (undefined !== data[11]) ? Number(data[11]) : tolerance;
+		inPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;
+		resizeFrom         = (undefined !== data[13]) ? data[13]         : resizeFrom;
+		widthCalcMode      = (undefined !== data[14]) ? data[14]         : widthCalcMode;
+	}
+
+	function readDataFromPage(){
+		function readData(){
+			var data = window.iFrameResizer;
+
+			log('Reading data from page: ' + JSON.stringify(data));
+
+			messageCallback     = ('messageCallback'         in data) ? data.messageCallback         : messageCallback;
+			readyCallback       = ('readyCallback'           in data) ? data.readyCallback           : readyCallback;
+			targetOriginDefault = ('targetOrigin'            in data) ? data.targetOrigin            : targetOriginDefault;
+			heightCalcMode      = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;
+			widthCalcMode       = ('widthCalculationMethod'  in data) ? data.widthCalculationMethod  : widthCalcMode;
+		}
+
+		function setupCustomCalcMethods(calcMode, calcFunc){
+			if ('function' === typeof calcMode) {
+				log('Setup custom ' + calcFunc + 'CalcMethod');
+				customCalcMethods[calcFunc] = calcMode;
+				calcMode = 'custom';
+			}
+
+			return calcMode;
+		}
+
+		if(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {
+			readData();
+			heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
+			widthCalcMode  = setupCustomCalcMethods(widthCalcMode,  'width');
+		}
+
+		log('TargetOrigin for parent set to: ' + targetOriginDefault);
+	}
+
+
+	function chkCSS(attr,value){
+		if (-1 !== value.indexOf('-')){
+			warn('Negative CSS value ignored for '+attr);
+			value='';
+		}
+		return value;
+	}
+
+	function setBodyStyle(attr,value){
+		if ((undefined !== value) && ('' !== value) && ('null' !== value)){
+			document.body.style[attr] = value;
+			log('Body '+attr+' set to "'+value+'"');
+		}
+	}
+
+	function setMargin(){
+		//If called via V1 script, convert bodyMargin from int to str
+		if (undefined === bodyMarginStr){
+			bodyMarginStr = bodyMargin+'px';
+		}
+
+		setBodyStyle('margin',chkCSS('margin',bodyMarginStr));
+	}
+
+	function stopInfiniteResizingOfIFrame(){
+		document.documentElement.style.height = '';
+		document.body.style.height = '';
+		log('HTML & body height set to "auto"');
+	}
+
+
+	function manageTriggerEvent(options){
+		function handleEvent(){
+			sendSize(options.eventName,options.eventType);
+		}
+
+		var listener = {
+			add:    function(eventName){
+				addEventListener(window,eventName,handleEvent);
+			},
+			remove: function(eventName){
+				removeEventListener(window,eventName,handleEvent);
+			}
+		};
+
+		if(options.eventNames && Array.prototype.map){
+			options.eventName = options.eventNames[0];
+			options.eventNames.map(listener[options.method]);
+		} else {
+			listener[options.method](options.eventName);
+		}
+
+		log(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);
+	}
+
+	function manageEventListeners(method){
+		manageTriggerEvent({method:method, eventType: 'Animation Start',           eventNames: ['animationstart','webkitAnimationStart'] });
+		manageTriggerEvent({method:method, eventType: 'Animation Iteration',       eventNames: ['animationiteration','webkitAnimationIteration'] });
+		manageTriggerEvent({method:method, eventType: 'Animation End',             eventNames: ['animationend','webkitAnimationEnd'] });
+		manageTriggerEvent({method:method, eventType: 'Input',                     eventName:  'input' });
+		manageTriggerEvent({method:method, eventType: 'Mouse Up',                  eventName:  'mouseup' });
+		manageTriggerEvent({method:method, eventType: 'Mouse Down',                eventName:  'mousedown' });
+		manageTriggerEvent({method:method, eventType: 'Orientation Change',        eventName:  'orientationchange' });
+		manageTriggerEvent({method:method, eventType: 'Print',                     eventName:  ['afterprint', 'beforeprint'] });
+		manageTriggerEvent({method:method, eventType: 'Ready State Change',        eventName:  'readystatechange' });
+		manageTriggerEvent({method:method, eventType: 'Touch Start',               eventName:  'touchstart' });
+		manageTriggerEvent({method:method, eventType: 'Touch End',                 eventName:  'touchend' });
+		manageTriggerEvent({method:method, eventType: 'Touch Cancel',              eventName:  'touchcancel' });
+		manageTriggerEvent({method:method, eventType: 'Transition Start',          eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });
+		manageTriggerEvent({method:method, eventType: 'Transition Iteration',      eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });
+		manageTriggerEvent({method:method, eventType: 'Transition End',            eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
+		if('child' === resizeFrom){
+			manageTriggerEvent({method:method, eventType: 'IFrame Resized',        eventName:  'resize' });
+		}
+	}
+
+	function checkCalcMode(calcMode,calcModeDefault,modes,type){
+		if (calcModeDefault !== calcMode){
+			if (!(calcMode in modes)){
+				warn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');
+				calcMode=calcModeDefault;
+			}
+			log(type+' calculation method set to "'+calcMode+'"');
+		}
+
+		return calcMode;
+	}
+
+	function checkHeightMode(){
+		heightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');
+	}
+
+	function checkWidthMode(){
+		widthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');
+	}
+
+	function startEventListeners(){
+		if ( true === autoResize ) {
+			manageEventListeners('add');
+			setupMutationObserver();
+		}
+		else {
+			log('Auto Resize disabled');
+		}
+	}
+
+	function stopMsgsToParent(){
+		log('Disable outgoing messages');
+		sendPermit = false;
+	}
+
+	function removeMsgListener(){
+		log('Remove event listener: Message');
+		removeEventListener(window, 'message', receiver);
+	}
+
+	function disconnectMutationObserver(){
+		if (null !== bodyObserver){
+			/* istanbul ignore next */ // Not testable in PhantonJS
+			bodyObserver.disconnect();
+		}
+	}
+
+	function stopEventListeners(){
+		manageEventListeners('remove');
+		disconnectMutationObserver();
+		clearInterval(intervalTimer);
+	}
+
+	function teardown(){
+		stopMsgsToParent();
+		removeMsgListener();
+		if (true === autoResize) stopEventListeners();
+	}
+
+	function injectClearFixIntoBodyElement(){
+		var clearFix = document.createElement('div');
+		clearFix.style.clear   = 'both';
+		clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.
+		document.body.appendChild(clearFix);
+	}
+
+	function setupInPageLinks(){
+
+		function getPagePosition (){
+			return {
+				x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+				y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+			};
+		}
+
+		function getElementPosition(el){
+			var
+				elPosition   = el.getBoundingClientRect(),
+				pagePosition = getPagePosition();
+
+			return {
+				x: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),
+				y: parseInt(elPosition.top,10)  + parseInt(pagePosition.y,10)
+			};
+		}
+
+		function findTarget(location){
+			function jumpToTarget(target){
+				var jumpPosition = getElementPosition(target);
+
+				log('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+				sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+			}
+
+			var
+				hash     = location.split('#')[1] || location, //Remove # if present
+				hashData = decodeURIComponent(hash),
+				target   = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+			if (undefined !== target){
+				jumpToTarget(target);
+			} else {
+				log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
+				sendMsg(0,0,'inPageLink','#'+hash);
+			}
+		}
+
+		function checkLocationHash(){
+			if ('' !== location.hash && '#' !== location.hash){
+				findTarget(location.href);
+			}
+		}
+
+		function bindAnchors(){
+			function setupLink(el){
+				function linkClicked(e){
+					e.preventDefault();
+
+					/*jshint validthis:true */
+					findTarget(this.getAttribute('href'));
+				}
+
+				if ('#' !== el.getAttribute('href')){
+					addEventListener(el,'click',linkClicked);
+				}
+			}
+
+			Array.prototype.forEach.call( document.querySelectorAll( 'a[href^="#"]' ), setupLink );
+		}
+
+		function bindLocationHash(){
+			addEventListener(window,'hashchange',checkLocationHash);
+		}
+
+		function initCheck(){ //check if page loaded with location hash after init resize
+			setTimeout(checkLocationHash,eventCancelTimer);
+		}
+
+		function enableInPageLinks(){
+			/* istanbul ignore else */ // Not testable in phantonJS
+			if(Array.prototype.forEach && document.querySelectorAll){
+				log('Setting up location.hash handlers');
+				bindAnchors();
+				bindLocationHash();
+				initCheck();
+			} else {
+				warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
+			}
+		}
+
+		if(inPageLinks.enable){
+			enableInPageLinks();
+		} else {
+			log('In page linking not enabled');
+		}
+
+		return {
+			findTarget:findTarget
+		};
+	}
+
+	function setupPublicMethods(){
+		log('Enable public methods');
+
+		win.parentIFrame = {
+
+			autoResize: function autoResizeF(resize){
+				if (true === resize && false === autoResize) {
+					autoResize=true;
+					startEventListeners();
+					//sendSize('autoResize','Auto Resize enabled');
+				} else if (false === resize && true === autoResize) {
+					autoResize=false;
+					stopEventListeners();
+				}
+
+				return autoResize;
+			},
+
+			close: function closeF(){
+				sendMsg(0,0,'close');
+				teardown();
+			},
+
+			getId: function getIdF(){
+				return myID;
+			},
+
+			getPageInfo: function getPageInfoF(callback){
+				if ('function' === typeof callback){
+					pageInfoCallback = callback;
+					sendMsg(0,0,'pageInfo');
+				} else {
+					pageInfoCallback = function(){};
+					sendMsg(0,0,'pageInfoStop');
+				}
+			},
+
+			moveToAnchor: function moveToAnchorF(hash){
+				inPageLinks.findTarget(hash);
+			},
+
+			reset: function resetF(){
+				resetIFrame('parentIFrame.reset');
+			},
+
+			scrollTo: function scrollToF(x,y){
+				sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
+			},
+
+			scrollToOffset: function scrollToF(x,y){
+				sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+			},
+
+			sendMessage: function sendMessageF(msg,targetOrigin){
+				sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
+			},
+
+			setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){
+				heightCalcMode = heightCalculationMethod;
+				checkHeightMode();
+			},
+
+			setWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){
+				widthCalcMode = widthCalculationMethod;
+				checkWidthMode();
+			},
+
+			setTargetOrigin: function setTargetOriginF(targetOrigin){
+				log('Set targetOrigin: '+targetOrigin);
+				targetOriginDefault = targetOrigin;
+			},
+
+			size: function sizeF(customHeight, customWidth){
+				var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
+				//lockTrigger();
+				sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
+			}
+		};
+	}
+
+	function initInterval(){
+		if ( 0 !== interval ){
+			log('setInterval: '+interval+'ms');
+			intervalTimer = setInterval(function(){
+				sendSize('interval','setInterval: '+interval);
+			},Math.abs(interval));
+		}
+	}
+
+	/* istanbul ignore next */  //Not testable in PhantomJS
+	function setupBodyMutationObserver(){
+		function addImageLoadListners(mutation) {
+			function addImageLoadListener(element){
+				if (false === element.complete) {
+					log('Attach listeners to ' + element.src);
+					element.addEventListener('load', imageLoaded, false);
+					element.addEventListener('error', imageError, false);
+					elements.push(element);
+				}
+			}
+
+			if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
+				addImageLoadListener(mutation.target);
+			} else if (mutation.type === 'childList'){
+				Array.prototype.forEach.call(
+					mutation.target.querySelectorAll('img'),
+					addImageLoadListener
+				);
+			}
+		}
+
+		function removeFromArray(element){
+			elements.splice(elements.indexOf(element),1);
+		}
+
+		function removeImageLoadListener(element){
+			log('Remove listeners from ' + element.src);
+			element.removeEventListener('load', imageLoaded, false);
+			element.removeEventListener('error', imageError, false);
+			removeFromArray(element);
+		}
+
+		function imageEventTriggered(event,type,typeDesc){
+			removeImageLoadListener(event.target);
+			sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);
+		}
+
+		function imageLoaded(event) {
+			imageEventTriggered(event,'imageLoad','Image loaded');
+		}
+
+		function imageError(event) {
+			imageEventTriggered(event,'imageLoadFailed','Image load failed');
+		}
+
+		function mutationObserved(mutations) {
+			sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
+
+			//Deal with WebKit asyncing image loading when tags are injected into the page
+			mutations.forEach(addImageLoadListners);
+		}
+
+		function createMutationObserver(){
+			var
+				target = document.querySelector('body'),
+
+				config = {
+					attributes            : true,
+					attributeOldValue     : false,
+					characterData         : true,
+					characterDataOldValue : false,
+					childList             : true,
+					subtree               : true
+				};
+
+			observer = new MutationObserver(mutationObserved);
+
+			log('Create body MutationObserver');
+			observer.observe(target, config);
+
+			return observer;
+		}
+
+		var
+			elements         = [],
+			MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
+			observer         = createMutationObserver();
+
+		return {
+			disconnect: function (){
+				if ('disconnect' in observer){
+					log('Disconnect body MutationObserver');
+					observer.disconnect();
+					elements.forEach(removeImageLoadListener);
+				}
+			}
+		};
+	}
+
+	function setupMutationObserver(){
+		var	forceIntervalTimer = 0 > interval;
+
+		/* istanbul ignore if */ // Not testable in PhantomJS
+		if (window.MutationObserver || window.WebKitMutationObserver){
+			if (forceIntervalTimer) {
+				initInterval();
+			} else {
+				bodyObserver = setupBodyMutationObserver();
+			}
+		} else {
+			log('MutationObserver not supported in this browser!');
+			initInterval();
+		}
+	}
+
+
+	// document.documentElement.offsetHeight is not reliable, so
+	// we have to jump through hoops to get a better value.
+	function getComputedStyle(prop,el) {
+		/* istanbul ignore next */  //Not testable in PhantomJS
+		function convertUnitsToPxForIE8(value) {
+			var PIXEL = /^\d+(px)?$/i;
+
+			if (PIXEL.test(value)) {
+				return parseInt(value,base);
+			}
+
+			var
+				style = el.style.left,
+				runtimeStyle = el.runtimeStyle.left;
+
+			el.runtimeStyle.left = el.currentStyle.left;
+			el.style.left = value || 0;
+			value = el.style.pixelLeft;
+			el.style.left = style;
+			el.runtimeStyle.left = runtimeStyle;
+
+			return value;
+		}
+
+		var retVal = 0;
+		el =  el || document.body;
+
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
+			retVal = document.defaultView.getComputedStyle(el, null);
+			retVal = (null !== retVal) ? retVal[prop] : 0;
+		} else {//IE8
+			retVal =  convertUnitsToPxForIE8(el.currentStyle[prop]);
+		}
+
+		return parseInt(retVal,base);
+	}
+
+	function chkEventThottle(timer){
+		if(timer > throttledTimer/2){
+			throttledTimer = 2*timer;
+			log('Event throttle increased to ' + throttledTimer + 'ms');
+		}
+	}
+
+	//Idea from https://github.com/guardian/iframe-messenger
+	function getMaxElement(side,elements) {
+		var
+			elementsLength = elements.length,
+			elVal          = 0,
+			maxVal         = 0,
+			Side           = capitalizeFirstLetter(side),
+			timer          = getNow();
+
+		for (var i = 0; i < elementsLength; i++) {
+			elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);
+			if (elVal > maxVal) {
+				maxVal = elVal;
+			}
+		}
+
+		timer = getNow() - timer;
+
+		log('Parsed '+elementsLength+' HTML elements');
+		log('Element position calculated in ' + timer + 'ms');
+
+		chkEventThottle(timer);
+
+		return maxVal;
+	}
+
+	function getAllMeasurements(dimention){
+		return [
+			dimention.bodyOffset(),
+			dimention.bodyScroll(),
+			dimention.documentElementOffset(),
+			dimention.documentElementScroll()
+		];
+	}
+
+	function getTaggedElements(side,tag){
+		function noTaggedElementsFound(){
+			warn('No tagged elements ('+tag+') found on page');
+			return height; //current height
+		}
+
+		var elements = document.querySelectorAll('['+tag+']');
+
+		return 0 === elements.length ?  noTaggedElementsFound() : getMaxElement(side,elements);
+	}
+
+	function getAllElements(){
+		return document.querySelectorAll('body *');
+	}
+
+	var
+		getHeight = {
+			bodyOffset: function getBodyOffsetHeight(){
+				return  document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
+			},
+
+			offset: function(){
+				return getHeight.bodyOffset(); //Backwards compatability
+			},
+
+			bodyScroll: function getBodyScrollHeight(){
+				return document.body.scrollHeight;
+			},
+
+			custom: function getCustomWidth(){
+				return customCalcMethods.height();
+			},
+
+			documentElementOffset: function getDEOffsetHeight(){
+				return document.documentElement.offsetHeight;
+			},
+
+			documentElementScroll: function getDEScrollHeight(){
+				return document.documentElement.scrollHeight;
+			},
+
+			max: function getMaxHeight(){
+				return Math.max.apply(null,getAllMeasurements(getHeight));
+			},
+
+			min: function getMinHeight(){
+				return Math.min.apply(null,getAllMeasurements(getHeight));
+			},
+
+			grow: function growHeight(){
+				return getHeight.max(); //Run max without the forced downsizing
+			},
+
+			lowestElement: function getBestHeight(){
+				return Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));
+			},
+
+			taggedElement: function getTaggedElementsHeight(){
+				return getTaggedElements('bottom','data-iframe-height');
+			}
+		},
+
+		getWidth = {
+			bodyScroll: function getBodyScrollWidth(){
+				return document.body.scrollWidth;
+			},
+
+			bodyOffset: function getBodyOffsetWidth(){
+				return document.body.offsetWidth;
+			},
+
+			custom: function getCustomWidth(){
+				return customCalcMethods.width();
+			},
+
+			documentElementScroll: function getDEScrollWidth(){
+				return document.documentElement.scrollWidth;
+			},
+
+			documentElementOffset: function getDEOffsetWidth(){
+				return document.documentElement.offsetWidth;
+			},
+
+			scroll: function getMaxWidth(){
+				return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());
+			},
+
+			max: function getMaxWidth(){
+				return Math.max.apply(null,getAllMeasurements(getWidth));
+			},
+
+			min: function getMinWidth(){
+				return Math.min.apply(null,getAllMeasurements(getWidth));
+			},
+
+			rightMostElement: function rightMostElement(){
+				return getMaxElement('right', getAllElements());
+			},
+
+			taggedElement: function getTaggedElementsWidth(){
+				return getTaggedElements('right', 'data-iframe-width');
+			}
+		};
+
+
+	function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){
+
+		function resizeIFrame(){
+			height = currentHeight;
+			width  = currentWidth;
+
+			sendMsg(height,width,triggerEvent);
+		}
+
+		function isSizeChangeDetected(){
+			function checkTolarance(a,b){
+				var retVal = Math.abs(a-b) <= tolerance;
+				return !retVal;
+			}
+
+			currentHeight = (undefined !== customHeight)  ? customHeight : getHeight[heightCalcMode]();
+			currentWidth  = (undefined !== customWidth )  ? customWidth  : getWidth[widthCalcMode]();
+
+			return	checkTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));
+		}
+
+		function isForceResizableEvent(){
+			return !(triggerEvent in {'init':1,'interval':1,'size':1});
+		}
+
+		function isForceResizableCalcMode(){
+			return (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);
+		}
+
+		function logIgnored(){
+			log('No change in size detected');
+		}
+
+		function checkDownSizing(){
+			if (isForceResizableEvent() && isForceResizableCalcMode()){
+				resetIFrame(triggerEventDesc);
+			} else if (!(triggerEvent in {'interval':1})){
+				logIgnored();
+			}
+		}
+
+		var	currentHeight,currentWidth;
+
+		if (isSizeChangeDetected() || 'init' === triggerEvent){
+			lockTrigger();
+			resizeIFrame();
+		} else {
+			checkDownSizing();
+		}
+	}
+
+	var sizeIFrameThrottled = throttle(sizeIFrame);
+
+	function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){
+		function recordTrigger(){
+			if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){
+				log( 'Trigger event: ' + triggerEventDesc );
+			}
+		}
+
+		function isDoubleFiredEvent(){
+			return  triggerLocked && (triggerEvent in doubleEventList);
+		}
+
+		if (!isDoubleFiredEvent()){
+			recordTrigger();
+			sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
+		} else {
+			log('Trigger event cancelled: '+triggerEvent);
+		}
+	}
+
+	function lockTrigger(){
+		if (!triggerLocked){
+			triggerLocked = true;
+			log('Trigger event lock on');
+		}
+		clearTimeout(triggerLockedTimer);
+		triggerLockedTimer = setTimeout(function(){
+			triggerLocked = false;
+			log('Trigger event lock off');
+			log('--');
+		},eventCancelTimer);
+	}
+
+	function triggerReset(triggerEvent){
+		height = getHeight[heightCalcMode]();
+		width  = getWidth[widthCalcMode]();
+
+		sendMsg(height,width,triggerEvent);
+	}
+
+	function resetIFrame(triggerEventDesc){
+		var hcm = heightCalcMode;
+		heightCalcMode = heightCalcModeDefault;
+
+		log('Reset trigger event: ' + triggerEventDesc);
+		lockTrigger();
+		triggerReset('reset');
+
+		heightCalcMode = hcm;
+	}
+
+	function sendMsg(height,width,triggerEvent,msg,targetOrigin){
+		function setTargetOrigin(){
+			if (undefined === targetOrigin){
+				targetOrigin = targetOriginDefault;
+			} else {
+				log('Message targetOrigin: '+targetOrigin);
+			}
+		}
+
+		function sendToParent(){
+			var
+				size  = height + ':' + width,
+				message = myID + ':' +  size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
+
+			log('Sending message to host page (' + message + ')');
+			target.postMessage( msgID + message, targetOrigin);
+		}
+
+		if(true === sendPermit){
+			setTargetOrigin();
+			sendToParent();
+		}
+	}
+
+	function receiver(event) {
+		function isMessageForUs(){
+			return msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages
+		}
+
+		function initFromParent(){
+			function fireInit(){
+				initMsg = event.data;
+				target  = event.source;
+
+				init();
+				firstRun = false;
+				setTimeout(function(){ initLock = false;},eventCancelTimer);
+			}
+
+			if (document.body){
+				fireInit();
+			} else {
+				log('Waiting for page ready');
+				addEventListener(window,'readystatechange',initFromParent);
+			}
+		}
+
+		function resetFromParent(){
+			if (!initLock){
+				log('Page size reset by host page');
+				triggerReset('resetPage');
+			} else {
+				log('Page reset ignored by init');
+			}
+		}
+
+		function resizeFromParent(){
+			sendSize('resizeParent','Parent window requested size check');
+		}
+
+		function moveToAnchor(){
+			var anchor = getData();
+			inPageLinks.findTarget(anchor);
+		}
+
+		function getMessageType(){
+			return event.data.split(']')[1].split(':')[0];
+		}
+
+		function getData(){
+			return event.data.substr(event.data.indexOf(':')+1);
+		}
+
+		function isMiddleTier(){
+			return ('iFrameResize' in window);
+		}
+
+		function messageFromParent(){
+			var msgBody = getData();
+
+			log('MessageCallback called from parent: ' + msgBody );
+			messageCallback(JSON.parse(msgBody));
+			log(' --');
+		}
+
+		function pageInfoFromParent(){
+			var msgBody = getData();
+			log('PageInfoFromParent called from parent: ' + msgBody );
+			pageInfoCallback(JSON.parse(msgBody));
+			log(' --');
+		}
+
+		function isInitMsg(){
+			//Test if this message is from a child below us. This is an ugly test, however, updating
+			//the message format would break backwards compatibity.
+			return event.data.split(':')[2] in {'true':1,'false':1};
+		}
+
+		function callFromParent(){
+			switch (getMessageType()){
+			case 'reset':
+				resetFromParent();
+				break;
+			case 'resize':
+				resizeFromParent();
+				break;
+			case 'inPageLink':
+			case 'moveToAnchor':
+				moveToAnchor();
+				break;
+			case 'message':
+				messageFromParent();
+				break;
+			case 'pageInfo':
+				pageInfoFromParent();
+				break;
+			default:
+				if (!isMiddleTier() && !isInitMsg()){
+					warn('Unexpected message ('+event.data+')');
+				}
+			}
+		}
+
+		function processMessage(){
+			if (false === firstRun) {
+				callFromParent();
+			} else if (isInitMsg()) {
+				initFromParent();
+			} else {
+				log('Ignored message of type "' + getMessageType() + '". Received before initialization.');
+			}
+		}
+
+		if (isMessageForUs()){
+			processMessage();
+		}
+	}
+
+	//Normally the parent kicks things off when it detects the iFrame has loaded.
+	//If this script is async-loaded, then tell parent page to retry init.
+	function chkLateLoaded(){
+		if('loading' !== document.readyState){
+			window.parent.postMessage('[iFrameResizerChild]Ready','*');
+		}
+	}
+
+	addEventListener(window, 'message', receiver);
+	chkLateLoaded();
+
+	
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map
new file mode 100644
index 0000000000000000000000000000000000000000..ab9fe2d7eb51fed89493a5fa578db633c63b7ec9
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map
@@ -0,0 +1 @@
+{"version":3,"file":"iframeResizer.contentWindow.min.js","sources":["iframeResizer.contentWindow.js"],"names":["window","undefined","addEventListener","el","evt","func","attachEvent","removeEventListener","detachEvent","capitalizeFirstLetter","string","charAt","toUpperCase","slice","throttle","context","args","result","timeout","previous","later","getNow","apply","now","remaining","throttledTimer","this","arguments","clearTimeout","setTimeout","formatLogMsg","msg","msgID","myID","log","logging","console","warn","init","readDataFromParent","location","href","readDataFromPage","setMargin","setBodyStyle","bodyBackground","bodyPadding","injectClearFixIntoBodyElement","checkHeightMode","checkWidthMode","stopInfiniteResizingOfIFrame","setupPublicMethods","startEventListeners","inPageLinks","setupInPageLinks","sendSize","readyCallback","strBool","str","data","initMsg","substr","msgIdLen","split","bodyMargin","Number","calculateWidth","interval","autoResize","bodyMarginStr","heightCalcMode","tolerance","enable","resizeFrom","widthCalcMode","readData","iFrameResizer","JSON","stringify","messageCallback","targetOriginDefault","targetOrigin","heightCalculationMethod","widthCalculationMethod","setupCustomCalcMethods","calcMode","calcFunc","customCalcMethods","Object","constructor","chkCSS","attr","value","indexOf","document","body","style","documentElement","height","manageTriggerEvent","options","handleEvent","eventName","eventType","listener","add","remove","eventNames","Array","prototype","map","method","manageEventListeners","checkCalcMode","calcModeDefault","modes","type","heightCalcModeDefault","getHeight","widthCalcModeDefault","getWidth","setupMutationObserver","stopMsgsToParent","sendPermit","removeMsgListener","receiver","disconnectMutationObserver","bodyObserver","disconnect","stopEventListeners","clearInterval","intervalTimer","teardown","clearFix","createElement","clear","display","appendChild","getPagePosition","x","pageXOffset","scrollLeft","y","pageYOffset","scrollTop","getElementPosition","elPosition","getBoundingClientRect","pagePosition","parseInt","left","top","findTarget","jumpToTarget","target","jumpPosition","hash","sendMsg","hashData","decodeURIComponent","getElementById","getElementsByName","checkLocationHash","bindAnchors","setupLink","linkClicked","e","preventDefault","getAttribute","forEach","call","querySelectorAll","bindLocationHash","initCheck","eventCancelTimer","enableInPageLinks","win","parentIFrame","resize","close","getId","getPageInfo","callback","pageInfoCallback","moveToAnchor","reset","resetIFrame","scrollTo","scrollToOffset","sendMessage","setHeightCalculationMethod","setWidthCalculationMethod","setTargetOrigin","size","customHeight","customWidth","valString","initInterval","setInterval","Math","abs","setupBodyMutationObserver","addImageLoadListners","mutation","addImageLoadListener","element","complete","src","imageLoaded","imageError","elements","push","attributeName","removeFromArray","splice","removeImageLoadListener","imageEventTriggered","event","typeDesc","mutationObserved","mutations","createMutationObserver","querySelector","config","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","observer","MutationObserver","observe","WebKitMutationObserver","forceIntervalTimer","getComputedStyle","prop","convertUnitsToPxForIE8","PIXEL","test","base","runtimeStyle","currentStyle","pixelLeft","retVal","defaultView","chkEventThottle","timer","getMaxElement","side","elementsLength","length","elVal","maxVal","Side","i","getAllMeasurements","dimention","bodyOffset","bodyScroll","documentElementOffset","documentElementScroll","getTaggedElements","tag","noTaggedElementsFound","getAllElements","sizeIFrame","triggerEvent","triggerEventDesc","resizeIFrame","currentHeight","width","currentWidth","isSizeChangeDetected","checkTolarance","a","b","isForceResizableEvent","isForceResizableCalcMode","resetRequiredMethods","logIgnored","checkDownSizing","lockTrigger","recordTrigger","resetPage","isDoubleFiredEvent","triggerLocked","doubleEventList","sizeIFrameThrottled","triggerLockedTimer","triggerReset","hcm","sendToParent","message","postMessage","isMessageForUs","initFromParent","fireInit","source","firstRun","initLock","resetFromParent","resizeFromParent","anchor","getData","getMessageType","isMiddleTier","messageFromParent","msgBody","parse","pageInfoFromParent","isInitMsg","true","false","callFromParent","processMessage","chkLateLoaded","readyState","parent","click","max","min","offsetHeight","scrollWidth","Date","getTime","offset","scrollHeight","custom","grow","lowestElement","taggedElement","offsetWidth","scroll","rightMostElement"],"mappings":";;;;;;;;CAYC,SAAUA,EAAQC,GAClB,YAuDA,SAASC,GAAiBC,EAAGC,EAAIC,GAE5B,oBAAsBL,GACzBG,EAAGD,iBAAiBE,EAAIC,GAAM,GACpB,eAAiBL,IAC3BG,EAAGG,YAAY,KAAKF,EAAIC,GAI1B,QAASE,GAAoBJ,EAAGC,EAAIC,GAE/B,uBAAyBL,GAC5BG,EAAGI,oBAAoBH,EAAIC,GAAM,GACvB,eAAiBL,IAC3BG,EAAGK,YAAY,KAAKJ,EAAIC,GAI1B,QAASI,GAAsBC,GAC9B,MAAOA,GAAOC,OAAO,GAAGC,cAAgBF,EAAOG,MAAM,GAItD,QAASC,GAAST,GACjB,GACCU,GAASC,EAAMC,EACfC,EAAU,KACVC,EAAW,EACXC,EAAQ,WACPD,EAAWE,KACXH,EAAU,KACVD,EAASZ,EAAKiB,MAAMP,EAASC,GACxBE,IACJH,EAAUC,EAAO,MAIpB,OAAO,YACN,GAAIO,GAAMF,IAELF,KACJA,EAAWI,EAGZ,IAAIC,GAAYC,IAAkBF,EAAMJ,EAsBxC,OApBAJ,GAAUW,KACVV,EAAOW,UAEU,GAAbH,GAAkBA,EAAYC,IAC7BP,IACHU,aAAaV,GACbA,EAAU,MAGXC,EAAWI,EACXN,EAASZ,EAAKiB,MAAMP,EAASC,GAExBE,IACJH,EAAUC,EAAO,OAGPE,IACXA,EAAUW,WAAWT,EAAOI,IAGtBP,GAST,QAASa,GAAaC,GACrB,MAAOC,IAAQ,IAAMC,GAAO,KAAYF,EAGzC,QAASG,GAAIH,GACRI,IAAY,gBAAoBnC,GAAOoC,SAC1CA,QAAQF,IAAIJ,EAAaC,IAI3B,QAASM,GAAKN,GACT,gBAAoB/B,GAAOoC,SAC9BA,QAAQC,KAAKP,EAAaC,IAK5B,QAASO,KACRC,IACAL,EAAI,wBAAwBM,SAASC,KAAK,KAC1CC,IACAC,IACAC,EAAa,aAAaC,GAC1BD,EAAa,UAAUE,GACvBC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,GAAcC,IACdC,EAAS,OAAO,+BAChBC,KAGD,QAASjB,KAER,QAASkB,GAAQC,GAChB,MAAO,SAAWA,GAAM,GAAO,EAGhC,GAAIC,GAAOC,GAAQC,OAAOC,IAAUC,MAAM,IAE1C9B,IAAqB0B,EAAK,GAC1BK,EAAsB/D,IAAc0D,EAAK,GAAMM,OAAON,EAAK,IAAQK,EACnEE,GAAsBjE,IAAc0D,EAAK,GAAMF,EAAQE,EAAK,IAAOO,GACnE/B,GAAsBlC,IAAc0D,EAAK,GAAMF,EAAQE,EAAK,IAAOxB,GACnEgC,GAAsBlE,IAAc0D,EAAK,GAAMM,OAAON,EAAK,IAAQQ,GACnEC,EAAsBnE,IAAc0D,EAAK,GAAMF,EAAQE,EAAK,IAAOS,EACnEC,EAAqBV,EAAK,GAC1BW,GAAsBrE,IAAc0D,EAAK,GAAMA,EAAK,GAAeW,GACnEzB,EAAqBc,EAAK,GAC1Bb,EAAqBa,EAAK,IAC1BY,GAAsBtE,IAAc0D,EAAK,IAAOM,OAAON,EAAK,KAAOY,GACnElB,GAAYmB,OAAUvE,IAAc0D,EAAK,IAAOF,EAAQE,EAAK,MAAM,EACnEc,GAAsBxE,IAAc0D,EAAK,IAAOA,EAAK,IAAcc,GACnEC,GAAsBzE,IAAc0D,EAAK,IAAOA,EAAK,IAAce,GAGpE,QAAShC,KACR,QAASiC,KACR,GAAIhB,GAAO3D,EAAO4E,aAElB1C,GAAI,2BAA6B2C,KAAKC,UAAUnB,IAEhDoB,GAAuB,mBAA6BpB,GAAQA,EAAKoB,gBAA0BA,GAC3FvB,GAAuB,iBAA6BG,GAAQA,EAAKH,cAA0BA,GAC3FwB,GAAuB,gBAA6BrB,GAAQA,EAAKsB,aAA0BD,GAC3FV,GAAuB,2BAA6BX,GAAQA,EAAKuB,wBAA0BZ,GAC3FI,GAAuB,0BAA6Bf,GAAQA,EAAKwB,uBAA0BT,GAG5F,QAASU,GAAuBC,EAAUC,GAOzC,MANI,kBAAsBD,KACzBnD,EAAI,gBAAkBoD,EAAW,cACjCC,GAAkBD,GAAYD,EAC9BA,EAAW,UAGLA,EAGJ,iBAAmBrF,IAAYwF,SAAWxF,EAAO4E,cAAca,cAClEd,IACAL,GAAiBc,EAAuBd,GAAgB,UACxDI,GAAiBU,EAAuBV,GAAgB,UAGzDxC,EAAI,mCAAqC8C,IAI1C,QAASU,GAAOC,EAAKC,GAKpB,MAJI,KAAOA,EAAMC,QAAQ,OACxBxD,EAAK,kCAAkCsD,GACvCC,EAAM,IAEAA,EAGR,QAAShD,GAAa+C,EAAKC,GACrB3F,IAAc2F,GAAW,KAAOA,GAAW,SAAWA,IAC1DE,SAASC,KAAKC,MAAML,GAAQC,EAC5B1D,EAAI,QAAQyD,EAAK,YAAYC,EAAM,MAIrC,QAASjD,KAEJ1C,IAAcoE,IACjBA,EAAgBL,EAAW,MAG5BpB,EAAa,SAAS8C,EAAO,SAASrB,IAGvC,QAASnB,KACR4C,SAASG,gBAAgBD,MAAME,OAAS,GACxCJ,SAASC,KAAKC,MAAME,OAAS,GAC7BhE,EAAI,oCAIL,QAASiE,GAAmBC,GAC3B,QAASC,KACR9C,EAAS6C,EAAQE,UAAUF,EAAQG,WAGpC,GAAIC,IACHC,IAAQ,SAASH,GAChBpG,EAAiBF,EAAOsG,EAAUD,IAEnCK,OAAQ,SAASJ,GAChB/F,EAAoBP,EAAOsG,EAAUD,IAIpCD,GAAQO,YAAcC,MAAMC,UAAUC,KACxCV,EAAQE,UAAYF,EAAQO,WAAW,GACvCP,EAAQO,WAAWG,IAAIN,EAASJ,EAAQW,UAExCP,EAASJ,EAAQW,QAAQX,EAAQE,WAGlCpE,EAAIzB,EAAsB2F,EAAQW,QAAU,oBAAsBX,EAAQG,WAG3E,QAASS,GAAqBD,GAC7BZ,GAAoBY,OAAOA,EAAQR,UAAW,kBAA6BI,YAAa,iBAAiB,0BACzGR,GAAoBY,OAAOA,EAAQR,UAAW,sBAA6BI,YAAa,qBAAqB,8BAC7GR,GAAoBY,OAAOA,EAAQR,UAAW,gBAA6BI,YAAa,eAAe,wBACvGR,GAAoBY,OAAOA,EAAQR,UAAW,QAA6BD,UAAY,UACvFH,GAAoBY,OAAOA,EAAQR,UAAW,WAA6BD,UAAY,YACvFH,GAAoBY,OAAOA,EAAQR,UAAW,aAA6BD,UAAY,cACvFH,GAAoBY,OAAOA,EAAQR,UAAW,qBAA6BD,UAAY,sBACvFH,GAAoBY,OAAOA,EAAQR,UAAW,QAA6BD,WAAa,aAAc,iBACtGH,GAAoBY,OAAOA,EAAQR,UAAW,qBAA6BD,UAAY,qBACvFH,GAAoBY,OAAOA,EAAQR,UAAW,cAA6BD,UAAY,eACvFH,GAAoBY,OAAOA,EAAQR,UAAW,YAA6BD,UAAY,aACvFH,GAAoBY,OAAOA,EAAQR,UAAW,eAA6BD,UAAY,gBACvFH,GAAoBY,OAAOA,EAAQR,UAAW,mBAA6BI,YAAa,kBAAkB,wBAAwB,oBAAoB,mBAAmB,sBACzKR,GAAoBY,OAAOA,EAAQR,UAAW,uBAA6BI,YAAa,sBAAsB,4BAA4B,wBAAwB,uBAAuB,0BACzLR,GAAoBY,OAAOA,EAAQR,UAAW,iBAA6BI,YAAa,gBAAgB,sBAAsB,kBAAkB,iBAAiB,oBAC9J,UAAYlC,IACd0B,GAAoBY,OAAOA,EAAQR,UAAW,iBAAyBD,UAAY,WAIrF,QAASW,GAAc5B,EAAS6B,EAAgBC,EAAMC,GASrD,MARIF,KAAoB7B,IACjBA,IAAY8B,KACjB9E,EAAKgD,EAAW,8BAA8B+B,EAAK,sBACnD/B,EAAS6B,GAEVhF,EAAIkF,EAAK,+BAA+B/B,EAAS,MAG3CA,EAGR,QAASrC,KACRsB,GAAiB2C,EAAc3C,GAAe+C,GAAsBC,GAAU,UAG/E,QAASrE,KACRyB,GAAgBuC,EAAcvC,GAAc6C,GAAqBC,GAAS,SAG3E,QAASpE,MACH,IAASgB,GACb4C,EAAqB,OACrBS,KAGAvF,EAAI,wBAIN,QAASwF,KACRxF,EAAI,6BACJyF,IAAa,EAGd,QAASC,KACR1F,EAAI,kCACJ3B,EAAoBP,EAAQ,UAAW6H,GAGxC,QAASC,KACJ,OAASC,GAEZA,EAAaC,aAIf,QAASC,KACRjB,EAAqB,UACrBc,IACAI,cAAcC,IAGf,QAASC,KACRV,IACAE,KACI,IAASxD,GAAY6D,IAG1B,QAASlF,KACR,GAAIsF,GAAWvC,SAASwC,cAAc,MACtCD,GAASrC,MAAMuC,MAAU,OACzBF,EAASrC,MAAMwC,QAAU,QACzB1C,SAASC,KAAK0C,YAAYJ,GAG3B,QAAS/E,KAER,QAASoF,KACR,OACCC,EAAI3I,EAAO4I,cAAgB3I,EAAaD,EAAO4I,YAAc9C,SAASG,gBAAgB4C,WACtFC,EAAI9I,EAAO+I,cAAgB9I,EAAaD,EAAO+I,YAAcjD,SAASG,gBAAgB+C,WAIxF,QAASC,GAAmB9I,GAC3B,GACC+I,GAAe/I,EAAGgJ,wBAClBC,EAAeV,GAEhB,QACCC,EAAGU,SAASH,EAAWI,KAAK,IAAMD,SAASD,EAAaT,EAAE,IAC1DG,EAAGO,SAASH,EAAWK,IAAI,IAAOF,SAASD,EAAaN,EAAE,KAI5D,QAASU,GAAWhH,GACnB,QAASiH,GAAaC,GACrB,GAAIC,GAAeV,EAAmBS,EAEtCxH,GAAI,4BAA4B0H,EAAK,WAAWD,EAAahB,EAAE,OAAOgB,EAAab,GACnFe,EAAQF,EAAab,EAAGa,EAAahB,EAAG,kBAGzC,GACCiB,GAAWpH,EAASuB,MAAM,KAAK,IAAMvB,EACrCsH,EAAWC,mBAAmBH,GAC9BF,EAAW5D,SAASkE,eAAeF,IAAahE,SAASmE,kBAAkBH,GAAU,EAElF7J,KAAcyJ,EACjBD,EAAaC,IAEbxH,EAAI,kBAAoB0H,EAAO,+CAC/BC,EAAQ,EAAE,EAAE,aAAa,IAAID,IAI/B,QAASM,KACJ,KAAO1H,SAASoH,MAAQ,MAAQpH,SAASoH,MAC5CJ,EAAWhH,SAASC,MAItB,QAAS0H,KACR,QAASC,GAAUjK,GAClB,QAASkK,GAAYC,GACpBA,EAAEC,iBAGFf,EAAW9H,KAAK8I,aAAa,SAG1B,MAAQrK,EAAGqK,aAAa,SAC3BtK,EAAiBC,EAAG,QAAQkK,GAI9BzD,MAAMC,UAAU4D,QAAQC,KAAM5E,SAAS6E,iBAAkB,gBAAkBP,GAG5E,QAASQ,KACR1K,EAAiBF,EAAO,aAAakK,GAGtC,QAASW,KACRhJ,WAAWqI,EAAkBY,IAG9B,QAASC,KAELnE,MAAMC,UAAU4D,SAAW3E,SAAS6E,kBACtCzI,EAAI,qCACJiI,IACAS,IACAC,KAEAxI,EAAK,2FAUP,MANGgB,IAAYmB,OACduG,IAEA7I,EAAI,gCAIJsH,WAAWA,GAIb,QAASrG,KACRjB,EAAI,yBAEJ8I,GAAIC,cAEH7G,WAAY,SAAqB8G,GAUhC,OATI,IAASA,IAAU,IAAU9G,GAChCA,GAAW,EACXhB,MAEU,IAAU8H,IAAU,IAAS9G,IACvCA,GAAW,EACX6D,KAGM7D,GAGR+G,MAAO,WACNtB,EAAQ,EAAE,EAAE,SACZzB,KAGDgD,MAAO,WACN,MAAOnJ,KAGRoJ,YAAa,SAAsBC,GAC9B,kBAAsBA,IACzBC,GAAmBD,EACnBzB,EAAQ,EAAE,EAAE,cAEZ0B,GAAmB,aACnB1B,EAAQ,EAAE,EAAE,kBAId2B,aAAc,SAAuB5B,GACpCvG,GAAYmG,WAAWI,IAGxB6B,MAAO,WACNC,EAAY,uBAGbC,SAAU,SAAmBhD,EAAEG,GAC9Be,EAAQf,EAAEH,EAAE,aAGbiD,eAAgB,SAAmBjD,EAAEG,GACpCe,EAAQf,EAAEH,EAAE,mBAGbkD,YAAa,SAAsB9J,EAAIkD,GACtC4E,EAAQ,EAAE,EAAE,UAAUhF,KAAKC,UAAU/C,GAAKkD,IAG3C6G,2BAA4B,SAAqC5G,GAChEZ,GAAiBY,EACjBlC,KAGD+I,0BAA2B,SAAoC5G,GAC9DT,GAAgBS,EAChBlC,KAGD+I,gBAAiB,SAA0B/G,GAC1C/C,EAAI,qBAAqB+C,GACzBD,GAAsBC,GAGvBgH,KAAM,SAAeC,EAAcC,GAClC,GAAIC,GAAY,IAAIF,EAAaA,EAAa,KAAKC,EAAY,IAAIA,EAAY,GAE/E5I,GAAS,OAAO,qBAAqB6I,EAAU,IAAKF,EAAcC,KAKrE,QAASE,KACH,IAAMlI,KACVjC,EAAI,gBAAgBiC,GAAS,MAC7BgE,GAAgBmE,YAAY,WAC3B/I,EAAS,WAAW,gBAAgBY,KACnCoI,KAAKC,IAAIrI,MAKb,QAASsI,KACR,QAASC,GAAqBC,GAC7B,QAASC,GAAqBC,IACzB,IAAUA,EAAQC,WACrB5K,EAAI,uBAAyB2K,EAAQE,KACrCF,EAAQ3M,iBAAiB,OAAQ8M,GAAa,GAC9CH,EAAQ3M,iBAAiB,QAAS+M,GAAY,GAC9CC,EAASC,KAAKN,IAIM,eAAlBF,EAASvF,MAAoD,QAA3BuF,EAASS,cAC9CR,EAAqBD,EAASjD,QACF,cAAlBiD,EAASvF,MACnBR,MAAMC,UAAU4D,QAAQC,KACvBiC,EAASjD,OAAOiB,iBAAiB,OACjCiC,GAKH,QAASS,GAAgBR,GACxBK,EAASI,OAAOJ,EAASrH,QAAQgH,GAAS,GAG3C,QAASU,GAAwBV,GAChC3K,EAAI,yBAA2B2K,EAAQE,KACvCF,EAAQtM,oBAAoB,OAAQyM,GAAa,GACjDH,EAAQtM,oBAAoB,QAAS0M,GAAY,GACjDI,EAAgBR,GAGjB,QAASW,GAAoBC,EAAMrG,EAAKsG,GACvCH,EAAwBE,EAAM/D,QAC9BnG,EAAS6D,EAAMsG,EAAW,KAAOD,EAAM/D,OAAOqD,IAAK9M,EAAWA,GAG/D,QAAS+M,GAAYS,GACpBD,EAAoBC,EAAM,YAAY,gBAGvC,QAASR,GAAWQ,GACnBD,EAAoBC,EAAM,kBAAkB,qBAG7C,QAASE,GAAiBC,GACzBrK,EAAS,mBAAmB,qBAAuBqK,EAAU,GAAGlE,OAAS,IAAMkE,EAAU,GAAGxG,MAG5FwG,EAAUnD,QAAQiC,GAGnB,QAASmB,KACR,GACCnE,GAAS5D,SAASgI,cAAc,QAEhCC,GACCC,YAAwB,EACxBC,mBAAwB,EACxBC,eAAwB,EACxBC,uBAAwB,EACxBC,WAAwB,EACxBC,SAAwB,EAQ1B,OALAC,GAAW,GAAIC,GAAiBZ,GAEhCzL,EAAI,gCACJoM,EAASE,QAAQ9E,EAAQqE,GAElBO,EAGR,GACCpB,MACAqB,EAAmBvO,EAAOuO,kBAAoBvO,EAAOyO,uBACrDH,EAAmBT,GAEpB,QACC7F,WAAY,WACP,cAAgBsG,KACnBpM,EAAI,oCACJoM,EAAStG,aACTkF,EAASzC,QAAQ8C,MAMrB,QAAS9F,KACR,GAAIiH,GAAqB,EAAIvK,EAGzBnE,GAAOuO,kBAAoBvO,EAAOyO,uBACjCC,EACHrC,IAEAtE,EAAe0E,KAGhBvK,EAAI,mDACJmK,KAOF,QAASsC,GAAiBC,EAAKzO,GAE9B,QAAS0O,GAAuBjJ,GAC/B,GAAIkJ,GAAQ,aAEZ,IAAIA,EAAMC,KAAKnJ,GACd,MAAOyD,UAASzD,EAAMoJ,EAGvB,IACChJ,GAAQ7F,EAAG6F,MAAMsD,KACjB2F,EAAe9O,EAAG8O,aAAa3F,IAQhC,OANAnJ,GAAG8O,aAAa3F,KAAOnJ,EAAG+O,aAAa5F,KACvCnJ,EAAG6F,MAAMsD,KAAO1D,GAAS,EACzBA,EAAQzF,EAAG6F,MAAMmJ,UACjBhP,EAAG6F,MAAMsD,KAAOtD,EAChB7F,EAAG8O,aAAa3F,KAAO2F,EAEhBrJ,EAGR,GAAIwJ,GAAS,CAWb,OAVAjP,GAAMA,GAAM2F,SAASC,KAGhB,eAAiBD,WAAc,oBAAsBA,UAASuJ,aAClED,EAAStJ,SAASuJ,YAAYV,iBAAiBxO,EAAI,MACnDiP,EAAU,OAASA,EAAUA,EAAOR,GAAQ,GAE5CQ,EAAUP,EAAuB1O,EAAG+O,aAAaN,IAG3CvF,SAAS+F,EAAOJ,GAGxB,QAASM,GAAgBC,GACrBA,EAAQ9N,GAAe,IACzBA,GAAiB,EAAE8N,EACnBrN,EAAI,+BAAiCT,GAAiB,OAKxD,QAAS+N,GAAcC,EAAKvC,GAQ3B,IAAK,GANJwC,GAAiBxC,EAASyC,OAC1BC,EAAiB,EACjBC,EAAiB,EACjBC,EAAiBrP,EAAsBgP,GACvCF,EAAiBlO,KAET0O,EAAI,EAAOL,EAAJK,EAAoBA,IACnCH,EAAQ1C,EAAS6C,GAAG5G,wBAAwBsG,GAAQd,EAAiB,SAASmB,EAAK5C,EAAS6C,IACxFH,EAAQC,IACXA,EAASD,EAWX,OAPAL,GAAQlO,KAAWkO,EAEnBrN,EAAI,UAAUwN,EAAe,kBAC7BxN,EAAI,kCAAoCqN,EAAQ,MAEhDD,EAAgBC,GAETM,EAGR,QAASG,GAAmBC,GAC3B,OACCA,EAAUC,aACVD,EAAUE,aACVF,EAAUG,wBACVH,EAAUI,yBAIZ,QAASC,GAAkBb,EAAKc,GAC/B,QAASC,KAER,MADAnO,GAAK,uBAAuBkO,EAAI,mBACzBrK,GAGR,GAAIgH,GAAWpH,SAAS6E,iBAAiB,IAAI4F,EAAI,IAEjD,OAAO,KAAMrD,EAASyC,OAAUa,IAA0BhB,EAAcC,EAAKvC,GAG9E,QAASuD,KACR,MAAO3K,UAAS6E,iBAAiB,UA6FlC,QAAS+F,GAAWC,EAAcC,EAAkB1E,EAAcC,GAEjE,QAAS0E,KACR3K,GAAS4K,EACTC,GAASC,EAETnH,EAAQ3D,GAAO6K,GAAMJ,GAGtB,QAASM,KACR,QAASC,GAAeC,EAAEC,GACzB,GAAIhC,GAAS7C,KAAKC,IAAI2E,EAAEC,IAAM7M,EAC9B,QAAQ6K,EAMT,MAHA0B,GAAiB7Q,IAAciM,EAAiBA,EAAe5E,GAAUhD,MACzE0M,EAAiB/Q,IAAckM,EAAiBA,EAAe3E,GAAS9C,MAEjEwM,EAAehL,GAAO4K,IAAmB5M,IAAkBgN,EAAeH,GAAMC,GAGxF,QAASK,KACR,QAASV,KAAiBrO,KAAO,EAAE6B,SAAW,EAAE8H,KAAO,IAGxD,QAASqF,KACR,MAAQhN,MAAkBiN,KAA0BrN,IAAkBQ,KAAiB6M,IAGxF,QAASC,KACRtP,EAAI,8BAGL,QAASuP,KACJJ,KAA2BC,IAC9B5F,EAAYkF,GACAD,KAAiBxM,SAAW,IACxCqN,IAIF,GAAIV,GAAcE,CAEdC,MAA0B,SAAWN,GACxCe,IACAb,KAEAY,IAMF,QAASlO,GAASoN,EAAcC,EAAkB1E,EAAcC,GAC/D,QAASwF,KACFhB,KAAiBlF,MAAQ,EAAEmG,UAAY,EAAEtP,KAAO,IACrDJ,EAAK,kBAAoB0O,GAI3B,QAASiB,KACR,MAAQC,KAAkBnB,IAAgBoB,IAGtCF,IAIJ3P,EAAI,4BAA4ByO,IAHhCgB,IACAK,GAAoBrB,EAAcC,EAAkB1E,EAAcC,IAMpE,QAASuF,KACHI,KACJA,IAAgB,EAChB5P,EAAI,0BAELN,aAAaqQ,IACbA,GAAqBpQ,WAAW,WAC/BiQ,IAAgB,EAChB5P,EAAI,0BACJA,EAAI,OACH4I,IAGH,QAASoH,GAAavB,GACrBzK,GAASoB,GAAUhD,MACnByM,GAASvJ,GAAS9C,MAElBmF,EAAQ3D,GAAO6K,GAAMJ,GAGtB,QAASjF,GAAYkF,GACpB,GAAIuB,GAAM7N,EACVA,IAAiB+C,GAEjBnF,EAAI,wBAA0B0O,GAC9Bc,IACAQ,EAAa,SAEb5N,GAAiB6N,EAGlB,QAAStI,GAAQ3D,EAAO6K,EAAMJ,EAAa5O,EAAIkD,GAC9C,QAAS+G,KACJ/L,IAAcgF,EACjBA,EAAeD,GAEf9C,EAAI,yBAAyB+C,GAI/B,QAASmN,KACR,GACCnG,GAAQ/F,EAAS,IAAM6K,EACvBsB,EAAUpQ,GAAO,IAAOgK,EAAO,IAAM0E,GAAgB1Q,IAAc8B,EAAM,IAAMA,EAAM,GAEtFG,GAAI,iCAAmCmQ,EAAU,KACjD3I,GAAO4I,YAAatQ,GAAQqQ,EAASpN,IAGnC,IAAS0C,KACXqE,IACAoG,KAIF,QAASvK,GAAS4F,GACjB,QAAS8E,KACR,MAAOvQ,OAAW,GAAGyL,EAAM9J,MAAME,OAAO,EAAEC,IAG3C,QAAS0O,KACR,QAASC,KACR7O,GAAU6J,EAAM9J,KAChB+F,GAAU+D,EAAMiF,OAEhBpQ,IACAqQ,IAAW,EACX9Q,WAAW,WAAY+Q,IAAW,GAAQ9H,IAGvChF,SAASC,KACZ0M,KAEAvQ,EAAI,0BACJhC,EAAiBF,EAAO,mBAAmBwS,IAI7C,QAASK,KACHD,GAIJ1Q,EAAI,+BAHJA,EAAI,gCACJgQ,EAAa,cAMf,QAASY,KACRvP,EAAS,eAAe,sCAGzB,QAASiI,KACR,GAAIuH,GAASC,GACb3P,IAAYmG,WAAWuJ,GAGxB,QAASE,KACR,MAAOxF,GAAM9J,KAAKI,MAAM,KAAK,GAAGA,MAAM,KAAK,GAG5C,QAASiP,KACR,MAAOvF,GAAM9J,KAAKE,OAAO4J,EAAM9J,KAAKkC,QAAQ,KAAK,GAGlD,QAASqN,KACR,MAAQ,gBAAkBlT,GAG3B,QAASmT,KACR,GAAIC,GAAUJ,GAEd9Q,GAAI,uCAAyCkR,GAC7CrO,GAAgBF,KAAKwO,MAAMD,IAC3BlR,EAAI,OAGL,QAASoR,KACR,GAAIF,GAAUJ,GACd9Q,GAAI,0CAA4CkR,GAChD7H,GAAiB1G,KAAKwO,MAAMD,IAC5BlR,EAAI,OAGL,QAASqR,KAGR,MAAO9F,GAAM9J,KAAKI,MAAM,KAAK,KAAOyP,OAAO,EAAEC,QAAQ,GAGtD,QAASC,KACR,OAAQT,KACR,IAAK,QACJJ,GACA,MACD,KAAK,SACJC,GACA,MACD,KAAK,aACL,IAAK,eACJtH,GACA,MACD,KAAK,UACJ2H,GACA,MACD,KAAK,WACJG,GACA,MACD,SACMJ,KAAmBK,KACvBlR,EAAK,uBAAuBoL,EAAM9J,KAAK,MAK1C,QAASgQ,MACJ,IAAUhB,GACbe,IACUH,IACVf,IAEAtQ,EAAI,4BAA8B+Q,IAAmB,sCAInDV,KACHoB,IAMF,QAASC,KACL,YAAc9N,SAAS+N,YACzB7T,EAAO8T,OAAOxB,YAAY,4BAA4B,KA3jCxD,GACClO,IAAwB,EACxB4K,EAAwB,GACxBnM,EAAwB,GACxBmB,EAAwB,EACxBK,EAAwB,GACxB0D,EAAwB,KACxBjF,EAAwB,GACxBoB,IAAwB,EACxB6N,IAAyB7G,OAAS,EAAE6I,MAAQ,GAC5CjJ,GAAwB,IACxB6H,IAAwB,EACxBzM,GAAwB,EACxBmB,GAAwB,aACxB/C,GAAwB+C,GACxBuL,IAAwB,EACxBhP,GAAwB,GACxBP,MACAc,GAAwB,GACxBgE,GAAwB,KACxBhG,IAAwB,EACxBH,GAAwB,gBACxB8B,GAAwB9B,GAAM2N,OAC9B1N,GAAwB,GAExBsP,IAAyByC,IAAI,EAAEC,IAAI,EAAE9D,WAAW,EAAEE,sBAAsB,GACxE5L,GAAwB,QACxBkD,IAAwB,EACxB+B,GAAwB1J,EAAO8T,OAC/B9O,GAAwB,IACxBT,GAAwB,EACxBuN,IAAwB,EACxBG,GAAwB,KACxBxQ,GAAwB,GACxBsP,GAAwB,EACxBxJ,GAAwB,SACxB7C,GAAwB6C,GACxByD,GAAwBhL,EACxB+E,GAAwB,WAAY1C,EAAK,yCACzCmB,GAAwB,aACxB+H,GAAwB,aACxBhG,IACCW,OAAQ,WAEP,MADA7D,GAAK,kDACEyD,SAASG,gBAAgBiO,cAEjCnD,MAAO,WAEN,MADA1O,GAAK,iDACEyD,SAASC,KAAKoO,cA2EpB9S,GAAS+S,KAAK7S,KAAO,WAExB,OAAO,GAAI6S,OAAOC,WAgnBlB/M,IACC4I,WAAY,WACX,MAAQpK,UAASC,KAAKmO,aAAevF,EAAiB,aAAeA,EAAiB,iBAGvF2F,OAAQ,WACP,MAAOhN,IAAU4I,cAGlBC,WAAY,WACX,MAAOrK,UAASC,KAAKwO,cAGtBC,OAAQ,WACP,MAAOjP,IAAkBW,UAG1BkK,sBAAuB,WACtB,MAAOtK,UAASG,gBAAgBiO,cAGjC7D,sBAAuB,WACtB,MAAOvK,UAASG,gBAAgBsO,cAGjCP,IAAK,WACJ,MAAOzH,MAAKyH,IAAI1S,MAAM,KAAK0O,EAAmB1I,MAG/C2M,IAAK,WACJ,MAAO1H,MAAK0H,IAAI3S,MAAM,KAAK0O,EAAmB1I,MAG/CmN,KAAM,WACL,MAAOnN,IAAU0M,OAGlBU,cAAe,WACd,MAAOnI,MAAKyH,IAAI1M,GAAU4I,aAAcV,EAAc,SAASiB,OAGhEkE,cAAe,WACd,MAAOrE,GAAkB,SAAS,wBAIpC9I,IACC2I,WAAY,WACX,MAAOrK,UAASC,KAAKoO,aAGtBjE,WAAY,WACX,MAAOpK,UAASC,KAAK6O,aAGtBJ,OAAQ,WACP,MAAOjP,IAAkBwL,SAG1BV,sBAAuB,WACtB,MAAOvK,UAASG,gBAAgBkO,aAGjC/D,sBAAuB,WACtB,MAAOtK,UAASG,gBAAgB2O,aAGjCC,OAAQ,WACP,MAAOtI,MAAKyH,IAAIxM,GAAS2I,aAAc3I,GAAS6I,0BAGjD2D,IAAK,WACJ,MAAOzH,MAAKyH,IAAI1S,MAAM,KAAK0O,EAAmBxI,MAG/CyM,IAAK,WACJ,MAAO1H,MAAK0H,IAAI3S,MAAM,KAAK0O,EAAmBxI,MAG/CsN,iBAAkB,WACjB,MAAOtF,GAAc,QAASiB,MAG/BkE,cAAe,WACd,MAAOrE,GAAkB,QAAS,uBAwDjC0B,GAAsBlR,EAAS4P,EAsMnCxQ,GAAiBF,EAAQ,UAAW6H,GACpC+L,KAIE5T","sourcesContent":["/*\n * File: iframeResizer.contentWindow.js\n * Desc: Include this file in any page being loaded into an iframe\n *       to force the iframe to resize to the content size.\n * Requires: iframeResizer.js on host page.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Ian Caunce - ian@hallnet.co.uk\n */\n\n\n;(function(window, undefined) {\n\t'use strict';\n\n\tvar\n\t\tautoResize            = true,\n\t\tbase                  = 10,\n\t\tbodyBackground        = '',\n\t\tbodyMargin            = 0,\n\t\tbodyMarginStr         = '',\n\t\tbodyObserver          = null,\n\t\tbodyPadding           = '',\n\t\tcalculateWidth        = false,\n\t\tdoubleEventList       = {'resize':1,'click':1},\n\t\teventCancelTimer      = 128,\n\t\tfirstRun              = true,\n\t\theight                = 1,\n\t\theightCalcModeDefault = 'bodyOffset',\n\t\theightCalcMode        = heightCalcModeDefault,\n\t\tinitLock              = true,\n\t\tinitMsg               = '',\n\t\tinPageLinks           = {},\n\t\tinterval              = 32,\n\t\tintervalTimer         = null,\n\t\tlogging               = false,\n\t\tmsgID                 = '[iFrameSizer]',  //Must match host page msg ID\n\t\tmsgIdLen              = msgID.length,\n\t\tmyID                  = '',\n\t\tobserver              = null,\n\t\tresetRequiredMethods  = {max:1,min:1,bodyScroll:1,documentElementScroll:1},\n\t\tresizeFrom            = 'child',\n\t\tsendPermit            = true,\n\t\ttarget                = window.parent,\n\t\ttargetOriginDefault   = '*',\n\t\ttolerance             = 0,\n\t\ttriggerLocked         = false,\n\t\ttriggerLockedTimer    = null,\n\t\tthrottledTimer        = 16,\n\t\twidth                 = 1,\n\t\twidthCalcModeDefault  = 'scroll',\n\t\twidthCalcMode         = widthCalcModeDefault,\n\t\twin                   = window,\n\t\tmessageCallback       = function(){ warn('MessageCallback function not defined'); },\n\t\treadyCallback         = function(){},\n\t\tpageInfoCallback      = function(){},\n\t\tcustomCalcMethods     = {\n\t\t\theight: function(){\n\t\t\t\twarn('Custom height calculation function not defined');\n\t\t\t\treturn document.documentElement.offsetHeight;\n\t\t\t}, \n\t\t\twidth: function(){\n\t\t\t\twarn('Custom width calculation function not defined');\n\t\t\t\treturn document.body.scrollWidth;\n\t\t\t}\n\t\t};\n\n\n\tfunction addEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('addEventListener' in window){\n\t\t\tel.addEventListener(evt,func, false);\n\t\t} else if ('attachEvent' in window){ //IE\n\t\t\tel.attachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction removeEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('removeEventListener' in window){\n\t\t\tel.removeEventListener(evt,func, false);\n\t\t} else if ('detachEvent' in window){ //IE\n\t\t\tel.detachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction capitalizeFirstLetter(string) {\n\t\treturn string.charAt(0).toUpperCase() + string.slice(1);\n\t}\n\n\t//Based on underscore.js\n\tfunction throttle(func) {\n\t\tvar\n\t\t\tcontext, args, result,\n\t\t\ttimeout = null,\n\t\t\tprevious = 0,\n\t\t\tlater = function() {\n\t\t\t\tprevious = getNow();\n\t\t\t\ttimeout = null;\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t\tif (!timeout) {\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn function() {\n\t\t\tvar now = getNow();\n\n\t\t\tif (!previous) {\n\t\t\t\tprevious = now;\n\t\t\t}\n\n\t\t\tvar remaining = throttledTimer - (now - previous);\n\n\t\t\tcontext = this;\n\t\t\targs = arguments;\n\n\t\t\tif (remaining <= 0 || remaining > throttledTimer) {\n\t\t\t\tif (timeout) {\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\ttimeout = null;\n\t\t\t\t}\n\n\t\t\t\tprevious = now;\n\t\t\t\tresult = func.apply(context, args);\n\n\t\t\t\tif (!timeout) {\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\n\t\t\t} else if (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, remaining);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tvar getNow = Date.now || function() {\n\t\t/* istanbul ignore next */ // Not testable in PhantonJS\n\t\treturn new Date().getTime();\n\t};\n\n\tfunction formatLogMsg(msg){\n\t\treturn msgID + '[' + myID + ']' + ' ' + msg;\n\t}\n\n\tfunction log(msg){\n\t\tif (logging && ('object' === typeof window.console)){\n\t\t\tconsole.log(formatLogMsg(msg));\n\t\t}\n\t}\n\n\tfunction warn(msg){\n\t\tif ('object' === typeof window.console){\n\t\t\tconsole.warn(formatLogMsg(msg));\n\t\t}\n\t}\n\n\n\tfunction init(){\n\t\treadDataFromParent();\n\t\tlog('Initialising iFrame ('+location.href+')');\n\t\treadDataFromPage();\n\t\tsetMargin();\n\t\tsetBodyStyle('background',bodyBackground);\n\t\tsetBodyStyle('padding',bodyPadding);\n\t\tinjectClearFixIntoBodyElement();\n\t\tcheckHeightMode();\n\t\tcheckWidthMode();\n\t\tstopInfiniteResizingOfIFrame();\n\t\tsetupPublicMethods();\n\t\tstartEventListeners();\n\t\tinPageLinks = setupInPageLinks();\n\t\tsendSize('init','Init message from host page');\n\t\treadyCallback();\n\t}\n\n\tfunction readDataFromParent(){\n\n\t\tfunction strBool(str){\n\t\t\treturn 'true' === str ? true : false;\n\t\t}\n\n\t\tvar data = initMsg.substr(msgIdLen).split(':');\n\n\t\tmyID               = data[0];\n\t\tbodyMargin         = (undefined !== data[1]) ? Number(data[1])   : bodyMargin; //For V1 compatibility\n\t\tcalculateWidth     = (undefined !== data[2]) ? strBool(data[2])  : calculateWidth;\n\t\tlogging            = (undefined !== data[3]) ? strBool(data[3])  : logging;\n\t\tinterval           = (undefined !== data[4]) ? Number(data[4])   : interval;\n\t\tautoResize         = (undefined !== data[6]) ? strBool(data[6])  : autoResize;\n\t\tbodyMarginStr      = data[7];\n\t\theightCalcMode     = (undefined !== data[8]) ? data[8]           : heightCalcMode;\n\t\tbodyBackground     = data[9];\n\t\tbodyPadding        = data[10];\n\t\ttolerance          = (undefined !== data[11]) ? Number(data[11]) : tolerance;\n\t\tinPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;\n\t\tresizeFrom         = (undefined !== data[13]) ? data[13]         : resizeFrom;\n\t\twidthCalcMode      = (undefined !== data[14]) ? data[14]         : widthCalcMode;\n\t}\n\n\tfunction readDataFromPage(){\n\t\tfunction readData(){\n\t\t\tvar data = window.iFrameResizer;\n\n\t\t\tlog('Reading data from page: ' + JSON.stringify(data));\n\n\t\t\tmessageCallback     = ('messageCallback'         in data) ? data.messageCallback         : messageCallback;\n\t\t\treadyCallback       = ('readyCallback'           in data) ? data.readyCallback           : readyCallback;\n\t\t\ttargetOriginDefault = ('targetOrigin'            in data) ? data.targetOrigin            : targetOriginDefault;\n\t\t\theightCalcMode      = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;\n\t\t\twidthCalcMode       = ('widthCalculationMethod'  in data) ? data.widthCalculationMethod  : widthCalcMode;\n\t\t}\n\n\t\tfunction setupCustomCalcMethods(calcMode, calcFunc){\n\t\t\tif ('function' === typeof calcMode) {\n\t\t\t\tlog('Setup custom ' + calcFunc + 'CalcMethod');\n\t\t\t\tcustomCalcMethods[calcFunc] = calcMode;\n\t\t\t\tcalcMode = 'custom';\n\t\t\t}\n\n\t\t\treturn calcMode;\n\t\t}\n\n\t\tif(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {\n\t\t\treadData();\n\t\t\theightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');\n\t\t\twidthCalcMode  = setupCustomCalcMethods(widthCalcMode,  'width');\n\t\t}\n\n\t\tlog('TargetOrigin for parent set to: ' + targetOriginDefault);\n\t}\n\n\n\tfunction chkCSS(attr,value){\n\t\tif (-1 !== value.indexOf('-')){\n\t\t\twarn('Negative CSS value ignored for '+attr);\n\t\t\tvalue='';\n\t\t}\n\t\treturn value;\n\t}\n\n\tfunction setBodyStyle(attr,value){\n\t\tif ((undefined !== value) && ('' !== value) && ('null' !== value)){\n\t\t\tdocument.body.style[attr] = value;\n\t\t\tlog('Body '+attr+' set to \"'+value+'\"');\n\t\t}\n\t}\n\n\tfunction setMargin(){\n\t\t//If called via V1 script, convert bodyMargin from int to str\n\t\tif (undefined === bodyMarginStr){\n\t\t\tbodyMarginStr = bodyMargin+'px';\n\t\t}\n\n\t\tsetBodyStyle('margin',chkCSS('margin',bodyMarginStr));\n\t}\n\n\tfunction stopInfiniteResizingOfIFrame(){\n\t\tdocument.documentElement.style.height = '';\n\t\tdocument.body.style.height = '';\n\t\tlog('HTML & body height set to \"auto\"');\n\t}\n\n\n\tfunction manageTriggerEvent(options){\n\t\tfunction handleEvent(){\n\t\t\tsendSize(options.eventName,options.eventType);\n\t\t}\n\n\t\tvar listener = {\n\t\t\tadd:    function(eventName){\n\t\t\t\taddEventListener(window,eventName,handleEvent);\n\t\t\t},\n\t\t\tremove: function(eventName){\n\t\t\t\tremoveEventListener(window,eventName,handleEvent);\n\t\t\t}\n\t\t};\n\n\t\tif(options.eventNames && Array.prototype.map){\n\t\t\toptions.eventName = options.eventNames[0];\n\t\t\toptions.eventNames.map(listener[options.method]);\n\t\t} else {\n\t\t\tlistener[options.method](options.eventName);\n\t\t}\n\n\t\tlog(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);\n\t}\n\n\tfunction manageEventListeners(method){\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation Start',           eventNames: ['animationstart','webkitAnimationStart'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation Iteration',       eventNames: ['animationiteration','webkitAnimationIteration'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation End',             eventNames: ['animationend','webkitAnimationEnd'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Input',                     eventName:  'input' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Mouse Up',                  eventName:  'mouseup' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Mouse Down',                eventName:  'mousedown' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Orientation Change',        eventName:  'orientationchange' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Print',                     eventName:  ['afterprint', 'beforeprint'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Ready State Change',        eventName:  'readystatechange' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch Start',               eventName:  'touchstart' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch End',                 eventName:  'touchend' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch Cancel',              eventName:  'touchcancel' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition Start',          eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition Iteration',      eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition End',            eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });\n\t\tif('child' === resizeFrom){\n\t\t\tmanageTriggerEvent({method:method, eventType: 'IFrame Resized',        eventName:  'resize' });\n\t\t}\n\t}\n\n\tfunction checkCalcMode(calcMode,calcModeDefault,modes,type){\n\t\tif (calcModeDefault !== calcMode){\n\t\t\tif (!(calcMode in modes)){\n\t\t\t\twarn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');\n\t\t\t\tcalcMode=calcModeDefault;\n\t\t\t}\n\t\t\tlog(type+' calculation method set to \"'+calcMode+'\"');\n\t\t}\n\n\t\treturn calcMode;\n\t}\n\n\tfunction checkHeightMode(){\n\t\theightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');\n\t}\n\n\tfunction checkWidthMode(){\n\t\twidthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');\n\t}\n\n\tfunction startEventListeners(){\n\t\tif ( true === autoResize ) {\n\t\t\tmanageEventListeners('add');\n\t\t\tsetupMutationObserver();\n\t\t}\n\t\telse {\n\t\t\tlog('Auto Resize disabled');\n\t\t}\n\t}\n\n\tfunction stopMsgsToParent(){\n\t\tlog('Disable outgoing messages');\n\t\tsendPermit = false;\n\t}\n\n\tfunction removeMsgListener(){\n\t\tlog('Remove event listener: Message');\n\t\tremoveEventListener(window, 'message', receiver);\n\t}\n\n\tfunction disconnectMutationObserver(){\n\t\tif (null !== bodyObserver){\n\t\t\t/* istanbul ignore next */ // Not testable in PhantonJS\n\t\t\tbodyObserver.disconnect();\n\t\t}\n\t}\n\n\tfunction stopEventListeners(){\n\t\tmanageEventListeners('remove');\n\t\tdisconnectMutationObserver();\n\t\tclearInterval(intervalTimer);\n\t}\n\n\tfunction teardown(){\n\t\tstopMsgsToParent();\n\t\tremoveMsgListener();\n\t\tif (true === autoResize) stopEventListeners();\n\t}\n\n\tfunction injectClearFixIntoBodyElement(){\n\t\tvar clearFix = document.createElement('div');\n\t\tclearFix.style.clear   = 'both';\n\t\tclearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.\n\t\tdocument.body.appendChild(clearFix);\n\t}\n\n\tfunction setupInPageLinks(){\n\n\t\tfunction getPagePosition (){\n\t\t\treturn {\n\t\t\t\tx: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,\n\t\t\t\ty: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop\n\t\t\t};\n\t\t}\n\n\t\tfunction getElementPosition(el){\n\t\t\tvar\n\t\t\t\telPosition   = el.getBoundingClientRect(),\n\t\t\t\tpagePosition = getPagePosition();\n\n\t\t\treturn {\n\t\t\t\tx: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),\n\t\t\t\ty: parseInt(elPosition.top,10)  + parseInt(pagePosition.y,10)\n\t\t\t};\n\t\t}\n\n\t\tfunction findTarget(location){\n\t\t\tfunction jumpToTarget(target){\n\t\t\t\tvar jumpPosition = getElementPosition(target);\n\n\t\t\t\tlog('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);\n\t\t\t\tsendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\thash     = location.split('#')[1] || location, //Remove # if present\n\t\t\t\thashData = decodeURIComponent(hash),\n\t\t\t\ttarget   = document.getElementById(hashData) || document.getElementsByName(hashData)[0];\n\n\t\t\tif (undefined !== target){\n\t\t\t\tjumpToTarget(target);\n\t\t\t} else {\n\t\t\t\tlog('In page link (#' + hash + ') not found in iFrame, so sending to parent');\n\t\t\t\tsendMsg(0,0,'inPageLink','#'+hash);\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLocationHash(){\n\t\t\tif ('' !== location.hash && '#' !== location.hash){\n\t\t\t\tfindTarget(location.href);\n\t\t\t}\n\t\t}\n\n\t\tfunction bindAnchors(){\n\t\t\tfunction setupLink(el){\n\t\t\t\tfunction linkClicked(e){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t/*jshint validthis:true */\n\t\t\t\t\tfindTarget(this.getAttribute('href'));\n\t\t\t\t}\n\n\t\t\t\tif ('#' !== el.getAttribute('href')){\n\t\t\t\t\taddEventListener(el,'click',linkClicked);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tArray.prototype.forEach.call( document.querySelectorAll( 'a[href^=\"#\"]' ), setupLink );\n\t\t}\n\n\t\tfunction bindLocationHash(){\n\t\t\taddEventListener(window,'hashchange',checkLocationHash);\n\t\t}\n\n\t\tfunction initCheck(){ //check if page loaded with location hash after init resize\n\t\t\tsetTimeout(checkLocationHash,eventCancelTimer);\n\t\t}\n\n\t\tfunction enableInPageLinks(){\n\t\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\t\tif(Array.prototype.forEach && document.querySelectorAll){\n\t\t\t\tlog('Setting up location.hash handlers');\n\t\t\t\tbindAnchors();\n\t\t\t\tbindLocationHash();\n\t\t\t\tinitCheck();\n\t\t\t} else {\n\t\t\t\twarn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');\n\t\t\t}\n\t\t}\n\n\t\tif(inPageLinks.enable){\n\t\t\tenableInPageLinks();\n\t\t} else {\n\t\t\tlog('In page linking not enabled');\n\t\t}\n\n\t\treturn {\n\t\t\tfindTarget:findTarget\n\t\t};\n\t}\n\n\tfunction setupPublicMethods(){\n\t\tlog('Enable public methods');\n\n\t\twin.parentIFrame = {\n\n\t\t\tautoResize: function autoResizeF(resize){\n\t\t\t\tif (true === resize && false === autoResize) {\n\t\t\t\t\tautoResize=true;\n\t\t\t\t\tstartEventListeners();\n\t\t\t\t\t//sendSize('autoResize','Auto Resize enabled');\n\t\t\t\t} else if (false === resize && true === autoResize) {\n\t\t\t\t\tautoResize=false;\n\t\t\t\t\tstopEventListeners();\n\t\t\t\t}\n\n\t\t\t\treturn autoResize;\n\t\t\t},\n\n\t\t\tclose: function closeF(){\n\t\t\t\tsendMsg(0,0,'close');\n\t\t\t\tteardown();\n\t\t\t},\n\n\t\t\tgetId: function getIdF(){\n\t\t\t\treturn myID;\n\t\t\t},\n\n\t\t\tgetPageInfo: function getPageInfoF(callback){\n\t\t\t\tif ('function' === typeof callback){\n\t\t\t\t\tpageInfoCallback = callback;\n\t\t\t\t\tsendMsg(0,0,'pageInfo');\n\t\t\t\t} else {\n\t\t\t\t\tpageInfoCallback = function(){};\n\t\t\t\t\tsendMsg(0,0,'pageInfoStop');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmoveToAnchor: function moveToAnchorF(hash){\n\t\t\t\tinPageLinks.findTarget(hash);\n\t\t\t},\n\n\t\t\treset: function resetF(){\n\t\t\t\tresetIFrame('parentIFrame.reset');\n\t\t\t},\n\n\t\t\tscrollTo: function scrollToF(x,y){\n\t\t\t\tsendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width\n\t\t\t},\n\n\t\t\tscrollToOffset: function scrollToF(x,y){\n\t\t\t\tsendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width\n\t\t\t},\n\n\t\t\tsendMessage: function sendMessageF(msg,targetOrigin){\n\t\t\t\tsendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);\n\t\t\t},\n\n\t\t\tsetHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){\n\t\t\t\theightCalcMode = heightCalculationMethod;\n\t\t\t\tcheckHeightMode();\n\t\t\t},\n\n\t\t\tsetWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){\n\t\t\t\twidthCalcMode = widthCalculationMethod;\n\t\t\t\tcheckWidthMode();\n\t\t\t},\n\n\t\t\tsetTargetOrigin: function setTargetOriginF(targetOrigin){\n\t\t\t\tlog('Set targetOrigin: '+targetOrigin);\n\t\t\t\ttargetOriginDefault = targetOrigin;\n\t\t\t},\n\n\t\t\tsize: function sizeF(customHeight, customWidth){\n\t\t\t\tvar valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');\n\t\t\t\t//lockTrigger();\n\t\t\t\tsendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction initInterval(){\n\t\tif ( 0 !== interval ){\n\t\t\tlog('setInterval: '+interval+'ms');\n\t\t\tintervalTimer = setInterval(function(){\n\t\t\t\tsendSize('interval','setInterval: '+interval);\n\t\t\t},Math.abs(interval));\n\t\t}\n\t}\n\n\t/* istanbul ignore next */  //Not testable in PhantomJS\n\tfunction setupBodyMutationObserver(){\n\t\tfunction addImageLoadListners(mutation) {\n\t\t\tfunction addImageLoadListener(element){\n\t\t\t\tif (false === element.complete) {\n\t\t\t\t\tlog('Attach listeners to ' + element.src);\n\t\t\t\t\telement.addEventListener('load', imageLoaded, false);\n\t\t\t\t\telement.addEventListener('error', imageError, false);\n\t\t\t\t\telements.push(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mutation.type === 'attributes' && mutation.attributeName === 'src'){\n\t\t\t\taddImageLoadListener(mutation.target);\n\t\t\t} else if (mutation.type === 'childList'){\n\t\t\t\tArray.prototype.forEach.call(\n\t\t\t\t\tmutation.target.querySelectorAll('img'),\n\t\t\t\t\taddImageLoadListener\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfunction removeFromArray(element){\n\t\t\telements.splice(elements.indexOf(element),1);\n\t\t}\n\n\t\tfunction removeImageLoadListener(element){\n\t\t\tlog('Remove listeners from ' + element.src);\n\t\t\telement.removeEventListener('load', imageLoaded, false);\n\t\t\telement.removeEventListener('error', imageError, false);\n\t\t\tremoveFromArray(element);\n\t\t}\n\n\t\tfunction imageEventTriggered(event,type,typeDesc){\n\t\t\tremoveImageLoadListener(event.target);\n\t\t\tsendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);\n\t\t}\n\n\t\tfunction imageLoaded(event) {\n\t\t\timageEventTriggered(event,'imageLoad','Image loaded');\n\t\t}\n\n\t\tfunction imageError(event) {\n\t\t\timageEventTriggered(event,'imageLoadFailed','Image load failed');\n\t\t}\n\n\t\tfunction mutationObserved(mutations) {\n\t\t\tsendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);\n\n\t\t\t//Deal with WebKit asyncing image loading when tags are injected into the page\n\t\t\tmutations.forEach(addImageLoadListners);\n\t\t}\n\n\t\tfunction createMutationObserver(){\n\t\t\tvar\n\t\t\t\ttarget = document.querySelector('body'),\n\n\t\t\t\tconfig = {\n\t\t\t\t\tattributes            : true,\n\t\t\t\t\tattributeOldValue     : false,\n\t\t\t\t\tcharacterData         : true,\n\t\t\t\t\tcharacterDataOldValue : false,\n\t\t\t\t\tchildList             : true,\n\t\t\t\t\tsubtree               : true\n\t\t\t\t};\n\n\t\t\tobserver = new MutationObserver(mutationObserved);\n\n\t\t\tlog('Create body MutationObserver');\n\t\t\tobserver.observe(target, config);\n\n\t\t\treturn observer;\n\t\t}\n\n\t\tvar\n\t\t\telements         = [],\n\t\t\tMutationObserver = window.MutationObserver || window.WebKitMutationObserver,\n\t\t\tobserver         = createMutationObserver();\n\n\t\treturn {\n\t\t\tdisconnect: function (){\n\t\t\t\tif ('disconnect' in observer){\n\t\t\t\t\tlog('Disconnect body MutationObserver');\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\telements.forEach(removeImageLoadListener);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction setupMutationObserver(){\n\t\tvar\tforceIntervalTimer = 0 > interval;\n\n\t\t/* istanbul ignore if */ // Not testable in PhantomJS\n\t\tif (window.MutationObserver || window.WebKitMutationObserver){\n\t\t\tif (forceIntervalTimer) {\n\t\t\t\tinitInterval();\n\t\t\t} else {\n\t\t\t\tbodyObserver = setupBodyMutationObserver();\n\t\t\t}\n\t\t} else {\n\t\t\tlog('MutationObserver not supported in this browser!');\n\t\t\tinitInterval();\n\t\t}\n\t}\n\n\n\t// document.documentElement.offsetHeight is not reliable, so\n\t// we have to jump through hoops to get a better value.\n\tfunction getComputedStyle(prop,el) {\n\t\t/* istanbul ignore next */  //Not testable in PhantomJS\n\t\tfunction convertUnitsToPxForIE8(value) {\n\t\t\tvar PIXEL = /^\\d+(px)?$/i;\n\n\t\t\tif (PIXEL.test(value)) {\n\t\t\t\treturn parseInt(value,base);\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\tstyle = el.style.left,\n\t\t\t\truntimeStyle = el.runtimeStyle.left;\n\n\t\t\tel.runtimeStyle.left = el.currentStyle.left;\n\t\t\tel.style.left = value || 0;\n\t\t\tvalue = el.style.pixelLeft;\n\t\t\tel.style.left = style;\n\t\t\tel.runtimeStyle.left = runtimeStyle;\n\n\t\t\treturn value;\n\t\t}\n\n\t\tvar retVal = 0;\n\t\tel =  el || document.body;\n\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {\n\t\t\tretVal = document.defaultView.getComputedStyle(el, null);\n\t\t\tretVal = (null !== retVal) ? retVal[prop] : 0;\n\t\t} else {//IE8\n\t\t\tretVal =  convertUnitsToPxForIE8(el.currentStyle[prop]);\n\t\t}\n\n\t\treturn parseInt(retVal,base);\n\t}\n\n\tfunction chkEventThottle(timer){\n\t\tif(timer > throttledTimer/2){\n\t\t\tthrottledTimer = 2*timer;\n\t\t\tlog('Event throttle increased to ' + throttledTimer + 'ms');\n\t\t}\n\t}\n\n\t//Idea from https://github.com/guardian/iframe-messenger\n\tfunction getMaxElement(side,elements) {\n\t\tvar\n\t\t\telementsLength = elements.length,\n\t\t\telVal          = 0,\n\t\t\tmaxVal         = 0,\n\t\t\tSide           = capitalizeFirstLetter(side),\n\t\t\ttimer          = getNow();\n\n\t\tfor (var i = 0; i < elementsLength; i++) {\n\t\t\telVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);\n\t\t\tif (elVal > maxVal) {\n\t\t\t\tmaxVal = elVal;\n\t\t\t}\n\t\t}\n\n\t\ttimer = getNow() - timer;\n\n\t\tlog('Parsed '+elementsLength+' HTML elements');\n\t\tlog('Element position calculated in ' + timer + 'ms');\n\n\t\tchkEventThottle(timer);\n\n\t\treturn maxVal;\n\t}\n\n\tfunction getAllMeasurements(dimention){\n\t\treturn [\n\t\t\tdimention.bodyOffset(),\n\t\t\tdimention.bodyScroll(),\n\t\t\tdimention.documentElementOffset(),\n\t\t\tdimention.documentElementScroll()\n\t\t];\n\t}\n\n\tfunction getTaggedElements(side,tag){\n\t\tfunction noTaggedElementsFound(){\n\t\t\twarn('No tagged elements ('+tag+') found on page');\n\t\t\treturn height; //current height\n\t\t}\n\n\t\tvar elements = document.querySelectorAll('['+tag+']');\n\n\t\treturn 0 === elements.length ?  noTaggedElementsFound() : getMaxElement(side,elements);\n\t}\n\n\tfunction getAllElements(){\n\t\treturn document.querySelectorAll('body *');\n\t}\n\n\tvar\n\t\tgetHeight = {\n\t\t\tbodyOffset: function getBodyOffsetHeight(){\n\t\t\t\treturn  document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');\n\t\t\t},\n\n\t\t\toffset: function(){\n\t\t\t\treturn getHeight.bodyOffset(); //Backwards compatability\n\t\t\t},\n\n\t\t\tbodyScroll: function getBodyScrollHeight(){\n\t\t\t\treturn document.body.scrollHeight;\n\t\t\t},\n\n\t\t\tcustom: function getCustomWidth(){\n\t\t\t\treturn customCalcMethods.height();\n\t\t\t},\n\n\t\t\tdocumentElementOffset: function getDEOffsetHeight(){\n\t\t\t\treturn document.documentElement.offsetHeight;\n\t\t\t},\n\n\t\t\tdocumentElementScroll: function getDEScrollHeight(){\n\t\t\t\treturn document.documentElement.scrollHeight;\n\t\t\t},\n\n\t\t\tmax: function getMaxHeight(){\n\t\t\t\treturn Math.max.apply(null,getAllMeasurements(getHeight));\n\t\t\t},\n\n\t\t\tmin: function getMinHeight(){\n\t\t\t\treturn Math.min.apply(null,getAllMeasurements(getHeight));\n\t\t\t},\n\n\t\t\tgrow: function growHeight(){\n\t\t\t\treturn getHeight.max(); //Run max without the forced downsizing\n\t\t\t},\n\n\t\t\tlowestElement: function getBestHeight(){\n\t\t\t\treturn Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));\n\t\t\t},\n\n\t\t\ttaggedElement: function getTaggedElementsHeight(){\n\t\t\t\treturn getTaggedElements('bottom','data-iframe-height');\n\t\t\t}\n\t\t},\n\n\t\tgetWidth = {\n\t\t\tbodyScroll: function getBodyScrollWidth(){\n\t\t\t\treturn document.body.scrollWidth;\n\t\t\t},\n\n\t\t\tbodyOffset: function getBodyOffsetWidth(){\n\t\t\t\treturn document.body.offsetWidth;\n\t\t\t},\n\n\t\t\tcustom: function getCustomWidth(){\n\t\t\t\treturn customCalcMethods.width();\n\t\t\t},\n\n\t\t\tdocumentElementScroll: function getDEScrollWidth(){\n\t\t\t\treturn document.documentElement.scrollWidth;\n\t\t\t},\n\n\t\t\tdocumentElementOffset: function getDEOffsetWidth(){\n\t\t\t\treturn document.documentElement.offsetWidth;\n\t\t\t},\n\n\t\t\tscroll: function getMaxWidth(){\n\t\t\t\treturn Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());\n\t\t\t},\n\n\t\t\tmax: function getMaxWidth(){\n\t\t\t\treturn Math.max.apply(null,getAllMeasurements(getWidth));\n\t\t\t},\n\n\t\t\tmin: function getMinWidth(){\n\t\t\t\treturn Math.min.apply(null,getAllMeasurements(getWidth));\n\t\t\t},\n\n\t\t\trightMostElement: function rightMostElement(){\n\t\t\t\treturn getMaxElement('right', getAllElements());\n\t\t\t},\n\n\t\t\ttaggedElement: function getTaggedElementsWidth(){\n\t\t\t\treturn getTaggedElements('right', 'data-iframe-width');\n\t\t\t}\n\t\t};\n\n\n\tfunction sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){\n\n\t\tfunction resizeIFrame(){\n\t\t\theight = currentHeight;\n\t\t\twidth  = currentWidth;\n\n\t\t\tsendMsg(height,width,triggerEvent);\n\t\t}\n\n\t\tfunction isSizeChangeDetected(){\n\t\t\tfunction checkTolarance(a,b){\n\t\t\t\tvar retVal = Math.abs(a-b) <= tolerance;\n\t\t\t\treturn !retVal;\n\t\t\t}\n\n\t\t\tcurrentHeight = (undefined !== customHeight)  ? customHeight : getHeight[heightCalcMode]();\n\t\t\tcurrentWidth  = (undefined !== customWidth )  ? customWidth  : getWidth[widthCalcMode]();\n\n\t\t\treturn\tcheckTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));\n\t\t}\n\n\t\tfunction isForceResizableEvent(){\n\t\t\treturn !(triggerEvent in {'init':1,'interval':1,'size':1});\n\t\t}\n\n\t\tfunction isForceResizableCalcMode(){\n\t\t\treturn (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);\n\t\t}\n\n\t\tfunction logIgnored(){\n\t\t\tlog('No change in size detected');\n\t\t}\n\n\t\tfunction checkDownSizing(){\n\t\t\tif (isForceResizableEvent() && isForceResizableCalcMode()){\n\t\t\t\tresetIFrame(triggerEventDesc);\n\t\t\t} else if (!(triggerEvent in {'interval':1})){\n\t\t\t\tlogIgnored();\n\t\t\t}\n\t\t}\n\n\t\tvar\tcurrentHeight,currentWidth;\n\n\t\tif (isSizeChangeDetected() || 'init' === triggerEvent){\n\t\t\tlockTrigger();\n\t\t\tresizeIFrame();\n\t\t} else {\n\t\t\tcheckDownSizing();\n\t\t}\n\t}\n\n\tvar sizeIFrameThrottled = throttle(sizeIFrame);\n\n\tfunction sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){\n\t\tfunction recordTrigger(){\n\t\t\tif (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){\n\t\t\t\tlog( 'Trigger event: ' + triggerEventDesc );\n\t\t\t}\n\t\t}\n\n\t\tfunction isDoubleFiredEvent(){\n\t\t\treturn  triggerLocked && (triggerEvent in doubleEventList);\n\t\t}\n\n\t\tif (!isDoubleFiredEvent()){\n\t\t\trecordTrigger();\n\t\t\tsizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);\n\t\t} else {\n\t\t\tlog('Trigger event cancelled: '+triggerEvent);\n\t\t}\n\t}\n\n\tfunction lockTrigger(){\n\t\tif (!triggerLocked){\n\t\t\ttriggerLocked = true;\n\t\t\tlog('Trigger event lock on');\n\t\t}\n\t\tclearTimeout(triggerLockedTimer);\n\t\ttriggerLockedTimer = setTimeout(function(){\n\t\t\ttriggerLocked = false;\n\t\t\tlog('Trigger event lock off');\n\t\t\tlog('--');\n\t\t},eventCancelTimer);\n\t}\n\n\tfunction triggerReset(triggerEvent){\n\t\theight = getHeight[heightCalcMode]();\n\t\twidth  = getWidth[widthCalcMode]();\n\n\t\tsendMsg(height,width,triggerEvent);\n\t}\n\n\tfunction resetIFrame(triggerEventDesc){\n\t\tvar hcm = heightCalcMode;\n\t\theightCalcMode = heightCalcModeDefault;\n\n\t\tlog('Reset trigger event: ' + triggerEventDesc);\n\t\tlockTrigger();\n\t\ttriggerReset('reset');\n\n\t\theightCalcMode = hcm;\n\t}\n\n\tfunction sendMsg(height,width,triggerEvent,msg,targetOrigin){\n\t\tfunction setTargetOrigin(){\n\t\t\tif (undefined === targetOrigin){\n\t\t\t\ttargetOrigin = targetOriginDefault;\n\t\t\t} else {\n\t\t\t\tlog('Message targetOrigin: '+targetOrigin);\n\t\t\t}\n\t\t}\n\n\t\tfunction sendToParent(){\n\t\t\tvar\n\t\t\t\tsize  = height + ':' + width,\n\t\t\t\tmessage = myID + ':' +  size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');\n\n\t\t\tlog('Sending message to host page (' + message + ')');\n\t\t\ttarget.postMessage( msgID + message, targetOrigin);\n\t\t}\n\n\t\tif(true === sendPermit){\n\t\t\tsetTargetOrigin();\n\t\t\tsendToParent();\n\t\t}\n\t}\n\n\tfunction receiver(event) {\n\t\tfunction isMessageForUs(){\n\t\t\treturn msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages\n\t\t}\n\n\t\tfunction initFromParent(){\n\t\t\tfunction fireInit(){\n\t\t\t\tinitMsg = event.data;\n\t\t\t\ttarget  = event.source;\n\n\t\t\t\tinit();\n\t\t\t\tfirstRun = false;\n\t\t\t\tsetTimeout(function(){ initLock = false;},eventCancelTimer);\n\t\t\t}\n\n\t\t\tif (document.body){\n\t\t\t\tfireInit();\n\t\t\t} else {\n\t\t\t\tlog('Waiting for page ready');\n\t\t\t\taddEventListener(window,'readystatechange',initFromParent);\n\t\t\t}\n\t\t}\n\n\t\tfunction resetFromParent(){\n\t\t\tif (!initLock){\n\t\t\t\tlog('Page size reset by host page');\n\t\t\t\ttriggerReset('resetPage');\n\t\t\t} else {\n\t\t\t\tlog('Page reset ignored by init');\n\t\t\t}\n\t\t}\n\n\t\tfunction resizeFromParent(){\n\t\t\tsendSize('resizeParent','Parent window requested size check');\n\t\t}\n\n\t\tfunction moveToAnchor(){\n\t\t\tvar anchor = getData();\n\t\t\tinPageLinks.findTarget(anchor);\n\t\t}\n\n\t\tfunction getMessageType(){\n\t\t\treturn event.data.split(']')[1].split(':')[0];\n\t\t}\n\n\t\tfunction getData(){\n\t\t\treturn event.data.substr(event.data.indexOf(':')+1);\n\t\t}\n\n\t\tfunction isMiddleTier(){\n\t\t\treturn ('iFrameResize' in window);\n\t\t}\n\n\t\tfunction messageFromParent(){\n\t\t\tvar msgBody = getData();\n\n\t\t\tlog('MessageCallback called from parent: ' + msgBody );\n\t\t\tmessageCallback(JSON.parse(msgBody));\n\t\t\tlog(' --');\n\t\t}\n\n\t\tfunction pageInfoFromParent(){\n\t\t\tvar msgBody = getData();\n\t\t\tlog('PageInfoFromParent called from parent: ' + msgBody );\n\t\t\tpageInfoCallback(JSON.parse(msgBody));\n\t\t\tlog(' --');\n\t\t}\n\n\t\tfunction isInitMsg(){\n\t\t\t//Test if this message is from a child below us. This is an ugly test, however, updating\n\t\t\t//the message format would break backwards compatibity.\n\t\t\treturn event.data.split(':')[2] in {'true':1,'false':1};\n\t\t}\n\n\t\tfunction callFromParent(){\n\t\t\tswitch (getMessageType()){\n\t\t\tcase 'reset':\n\t\t\t\tresetFromParent();\n\t\t\t\tbreak;\n\t\t\tcase 'resize':\n\t\t\t\tresizeFromParent();\n\t\t\t\tbreak;\n\t\t\tcase 'inPageLink':\n\t\t\tcase 'moveToAnchor':\n\t\t\t\tmoveToAnchor();\n\t\t\t\tbreak;\n\t\t\tcase 'message':\n\t\t\t\tmessageFromParent();\n\t\t\t\tbreak;\n\t\t\tcase 'pageInfo':\n\t\t\t\tpageInfoFromParent();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (!isMiddleTier() && !isInitMsg()){\n\t\t\t\t\twarn('Unexpected message ('+event.data+')');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction processMessage(){\n\t\t\tif (false === firstRun) {\n\t\t\t\tcallFromParent();\n\t\t\t} else if (isInitMsg()) {\n\t\t\t\tinitFromParent();\n\t\t\t} else {\n\t\t\t\tlog('Ignored message of type \"' + getMessageType() + '\". Received before initialization.');\n\t\t\t}\n\t\t}\n\n\t\tif (isMessageForUs()){\n\t\t\tprocessMessage();\n\t\t}\n\t}\n\n\t//Normally the parent kicks things off when it detects the iFrame has loaded.\n\t//If this script is async-loaded, then tell parent page to retry init.\n\tfunction chkLateLoaded(){\n\t\tif('loading' !== document.readyState){\n\t\t\twindow.parent.postMessage('[iFrameResizerChild]Ready','*');\n\t\t}\n\t}\n\n\taddEventListener(window, 'message', receiver);\n\tchkLateLoaded();\n\n\t\n\n})(window || {});\n"]}
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..5cfd4e276b89327b557138513295054f9c1f7118
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js
@@ -0,0 +1,10 @@
+/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v3.5.5 - 2016-06-16
+ *  Desc: Include this file in any page being loaded into an iframe
+ *        to force the iframe to resize to the content size.
+ *  Requires: iframeResizer.min.js on host page.
+ *  Copyright: (c) 2016 David J. Bradshaw - dave@bradshaw.net
+ *  License: MIT
+ */
+
+!function(a,b){"use strict";function c(b,c,d){"addEventListener"in a?b.addEventListener(c,d,!1):"attachEvent"in a&&b.attachEvent("on"+c,d)}function d(b,c,d){"removeEventListener"in a?b.removeEventListener(c,d,!1):"detachEvent"in a&&b.detachEvent("on"+c,d)}function e(a){return a.charAt(0).toUpperCase()+a.slice(1)}function f(a){var b,c,d,e=null,f=0,g=function(){f=Ha(),e=null,d=a.apply(b,c),e||(b=c=null)};return function(){var h=Ha();f||(f=h);var i=ya-(h-f);return b=this,c=arguments,0>=i||i>ya?(e&&(clearTimeout(e),e=null),f=h,d=a.apply(b,c),e||(b=c=null)):e||(e=setTimeout(g,i)),d}}function g(a){return na+"["+pa+"] "+a}function h(b){ma&&"object"==typeof a.console&&console.log(g(b))}function i(b){"object"==typeof a.console&&console.warn(g(b))}function j(){k(),h("Initialising iFrame ("+location.href+")"),l(),o(),n("background",X),n("padding",_),B(),t(),u(),p(),D(),v(),ja=C(),O("init","Init message from host page"),Ea()}function k(){function a(a){return"true"===a?!0:!1}var c=ia.substr(oa).split(":");pa=c[0],Y=b!==c[1]?Number(c[1]):Y,aa=b!==c[2]?a(c[2]):aa,ma=b!==c[3]?a(c[3]):ma,ka=b!==c[4]?Number(c[4]):ka,V=b!==c[6]?a(c[6]):V,Z=c[7],ga=b!==c[8]?c[8]:ga,X=c[9],_=c[10],va=b!==c[11]?Number(c[11]):va,ja.enable=b!==c[12]?a(c[12]):!1,ra=b!==c[13]?c[13]:ra,Ba=b!==c[14]?c[14]:Ba}function l(){function b(){var b=a.iFrameResizer;h("Reading data from page: "+JSON.stringify(b)),Da="messageCallback"in b?b.messageCallback:Da,Ea="readyCallback"in b?b.readyCallback:Ea,ua="targetOrigin"in b?b.targetOrigin:ua,ga="heightCalculationMethod"in b?b.heightCalculationMethod:ga,Ba="widthCalculationMethod"in b?b.widthCalculationMethod:Ba}function c(a,b){return"function"==typeof a&&(h("Setup custom "+b+"CalcMethod"),Ga[b]=a,a="custom"),a}"iFrameResizer"in a&&Object===a.iFrameResizer.constructor&&(b(),ga=c(ga,"height"),Ba=c(Ba,"width")),h("TargetOrigin for parent set to: "+ua)}function m(a,b){return-1!==b.indexOf("-")&&(i("Negative CSS value ignored for "+a),b=""),b}function n(a,c){b!==c&&""!==c&&"null"!==c&&(document.body.style[a]=c,h("Body "+a+' set to "'+c+'"'))}function o(){b===Z&&(Z=Y+"px"),n("margin",m("margin",Z))}function p(){document.documentElement.style.height="",document.body.style.height="",h('HTML & body height set to "auto"')}function q(b){function f(){O(b.eventName,b.eventType)}var g={add:function(b){c(a,b,f)},remove:function(b){d(a,b,f)}};b.eventNames&&Array.prototype.map?(b.eventName=b.eventNames[0],b.eventNames.map(g[b.method])):g[b.method](b.eventName),h(e(b.method)+" event listener: "+b.eventType)}function r(a){q({method:a,eventType:"Animation Start",eventNames:["animationstart","webkitAnimationStart"]}),q({method:a,eventType:"Animation Iteration",eventNames:["animationiteration","webkitAnimationIteration"]}),q({method:a,eventType:"Animation End",eventNames:["animationend","webkitAnimationEnd"]}),q({method:a,eventType:"Input",eventName:"input"}),q({method:a,eventType:"Mouse Up",eventName:"mouseup"}),q({method:a,eventType:"Mouse Down",eventName:"mousedown"}),q({method:a,eventType:"Orientation Change",eventName:"orientationchange"}),q({method:a,eventType:"Print",eventName:["afterprint","beforeprint"]}),q({method:a,eventType:"Ready State Change",eventName:"readystatechange"}),q({method:a,eventType:"Touch Start",eventName:"touchstart"}),q({method:a,eventType:"Touch End",eventName:"touchend"}),q({method:a,eventType:"Touch Cancel",eventName:"touchcancel"}),q({method:a,eventType:"Transition Start",eventNames:["transitionstart","webkitTransitionStart","MSTransitionStart","oTransitionStart","otransitionstart"]}),q({method:a,eventType:"Transition Iteration",eventNames:["transitioniteration","webkitTransitionIteration","MSTransitionIteration","oTransitionIteration","otransitioniteration"]}),q({method:a,eventType:"Transition End",eventNames:["transitionend","webkitTransitionEnd","MSTransitionEnd","oTransitionEnd","otransitionend"]}),"child"===ra&&q({method:a,eventType:"IFrame Resized",eventName:"resize"})}function s(a,b,c,d){return b!==a&&(a in c||(i(a+" is not a valid option for "+d+"CalculationMethod."),a=b),h(d+' calculation method set to "'+a+'"')),a}function t(){ga=s(ga,fa,Ia,"height")}function u(){Ba=s(Ba,Aa,Ja,"width")}function v(){!0===V?(r("add"),G()):h("Auto Resize disabled")}function w(){h("Disable outgoing messages"),sa=!1}function x(){h("Remove event listener: Message"),d(a,"message",T)}function y(){null!==$&&$.disconnect()}function z(){r("remove"),y(),clearInterval(la)}function A(){w(),x(),!0===V&&z()}function B(){var a=document.createElement("div");a.style.clear="both",a.style.display="block",document.body.appendChild(a)}function C(){function d(){return{x:a.pageXOffset!==b?a.pageXOffset:document.documentElement.scrollLeft,y:a.pageYOffset!==b?a.pageYOffset:document.documentElement.scrollTop}}function e(a){var b=a.getBoundingClientRect(),c=d();return{x:parseInt(b.left,10)+parseInt(c.x,10),y:parseInt(b.top,10)+parseInt(c.y,10)}}function f(a){function c(a){var b=e(a);h("Moving to in page link (#"+d+") at x: "+b.x+" y: "+b.y),S(b.y,b.x,"scrollToOffset")}var d=a.split("#")[1]||a,f=decodeURIComponent(d),g=document.getElementById(f)||document.getElementsByName(f)[0];b!==g?c(g):(h("In page link (#"+d+") not found in iFrame, so sending to parent"),S(0,0,"inPageLink","#"+d))}function g(){""!==location.hash&&"#"!==location.hash&&f(location.href)}function j(){function a(a){function b(a){a.preventDefault(),f(this.getAttribute("href"))}"#"!==a.getAttribute("href")&&c(a,"click",b)}Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'),a)}function k(){c(a,"hashchange",g)}function l(){setTimeout(g,ca)}function m(){Array.prototype.forEach&&document.querySelectorAll?(h("Setting up location.hash handlers"),j(),k(),l()):i("In page linking not fully supported in this browser! (See README.md for IE8 workaround)")}return ja.enable?m():h("In page linking not enabled"),{findTarget:f}}function D(){h("Enable public methods"),Ca.parentIFrame={autoResize:function(a){return!0===a&&!1===V?(V=!0,v()):!1===a&&!0===V&&(V=!1,z()),V},close:function(){S(0,0,"close"),A()},getId:function(){return pa},getPageInfo:function(a){"function"==typeof a?(Fa=a,S(0,0,"pageInfo")):(Fa=function(){},S(0,0,"pageInfoStop"))},moveToAnchor:function(a){ja.findTarget(a)},reset:function(){R("parentIFrame.reset")},scrollTo:function(a,b){S(b,a,"scrollTo")},scrollToOffset:function(a,b){S(b,a,"scrollToOffset")},sendMessage:function(a,b){S(0,0,"message",JSON.stringify(a),b)},setHeightCalculationMethod:function(a){ga=a,t()},setWidthCalculationMethod:function(a){Ba=a,u()},setTargetOrigin:function(a){h("Set targetOrigin: "+a),ua=a},size:function(a,b){var c=""+(a?a:"")+(b?","+b:"");O("size","parentIFrame.size("+c+")",a,b)}}}function E(){0!==ka&&(h("setInterval: "+ka+"ms"),la=setInterval(function(){O("interval","setInterval: "+ka)},Math.abs(ka)))}function F(){function c(a){function b(a){!1===a.complete&&(h("Attach listeners to "+a.src),a.addEventListener("load",g,!1),a.addEventListener("error",i,!1),l.push(a))}"attributes"===a.type&&"src"===a.attributeName?b(a.target):"childList"===a.type&&Array.prototype.forEach.call(a.target.querySelectorAll("img"),b)}function d(a){l.splice(l.indexOf(a),1)}function e(a){h("Remove listeners from "+a.src),a.removeEventListener("load",g,!1),a.removeEventListener("error",i,!1),d(a)}function f(a,c,d){e(a.target),O(c,d+": "+a.target.src,b,b)}function g(a){f(a,"imageLoad","Image loaded")}function i(a){f(a,"imageLoadFailed","Image load failed")}function j(a){O("mutationObserver","mutationObserver: "+a[0].target+" "+a[0].type),a.forEach(c)}function k(){var a=document.querySelector("body"),b={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0};return n=new m(j),h("Create body MutationObserver"),n.observe(a,b),n}var l=[],m=a.MutationObserver||a.WebKitMutationObserver,n=k();return{disconnect:function(){"disconnect"in n&&(h("Disconnect body MutationObserver"),n.disconnect(),l.forEach(e))}}}function G(){var b=0>ka;a.MutationObserver||a.WebKitMutationObserver?b?E():$=F():(h("MutationObserver not supported in this browser!"),E())}function H(a,b){function c(a){var c=/^\d+(px)?$/i;if(c.test(a))return parseInt(a,W);var d=b.style.left,e=b.runtimeStyle.left;return b.runtimeStyle.left=b.currentStyle.left,b.style.left=a||0,a=b.style.pixelLeft,b.style.left=d,b.runtimeStyle.left=e,a}var d=0;return b=b||document.body,"defaultView"in document&&"getComputedStyle"in document.defaultView?(d=document.defaultView.getComputedStyle(b,null),d=null!==d?d[a]:0):d=c(b.currentStyle[a]),parseInt(d,W)}function I(a){a>ya/2&&(ya=2*a,h("Event throttle increased to "+ya+"ms"))}function J(a,b){for(var c=b.length,d=0,f=0,g=e(a),i=Ha(),j=0;c>j;j++)d=b[j].getBoundingClientRect()[a]+H("margin"+g,b[j]),d>f&&(f=d);return i=Ha()-i,h("Parsed "+c+" HTML elements"),h("Element position calculated in "+i+"ms"),I(i),f}function K(a){return[a.bodyOffset(),a.bodyScroll(),a.documentElementOffset(),a.documentElementScroll()]}function L(a,b){function c(){return i("No tagged elements ("+b+") found on page"),ea}var d=document.querySelectorAll("["+b+"]");return 0===d.length?c():J(a,d)}function M(){return document.querySelectorAll("body *")}function N(a,c,d,e){function f(){ea=m,za=n,S(ea,za,a)}function g(){function a(a,b){var c=Math.abs(a-b)<=va;return!c}return m=b!==d?d:Ia[ga](),n=b!==e?e:Ja[Ba](),a(ea,m)||aa&&a(za,n)}function i(){return!(a in{init:1,interval:1,size:1})}function j(){return ga in qa||aa&&Ba in qa}function k(){h("No change in size detected")}function l(){i()&&j()?R(c):a in{interval:1}||k()}var m,n;g()||"init"===a?(P(),f()):l()}function O(a,b,c,d){function e(){a in{reset:1,resetPage:1,init:1}||h("Trigger event: "+b)}function f(){return wa&&a in ba}f()?h("Trigger event cancelled: "+a):(e(),Ka(a,b,c,d))}function P(){wa||(wa=!0,h("Trigger event lock on")),clearTimeout(xa),xa=setTimeout(function(){wa=!1,h("Trigger event lock off"),h("--")},ca)}function Q(a){ea=Ia[ga](),za=Ja[Ba](),S(ea,za,a)}function R(a){var b=ga;ga=fa,h("Reset trigger event: "+a),P(),Q("reset"),ga=b}function S(a,c,d,e,f){function g(){b===f?f=ua:h("Message targetOrigin: "+f)}function i(){var g=a+":"+c,i=pa+":"+g+":"+d+(b!==e?":"+e:"");h("Sending message to host page ("+i+")"),ta.postMessage(na+i,f)}!0===sa&&(g(),i())}function T(b){function d(){return na===(""+b.data).substr(0,oa)}function e(){function d(){ia=b.data,ta=b.source,j(),da=!1,setTimeout(function(){ha=!1},ca)}document.body?d():(h("Waiting for page ready"),c(a,"readystatechange",e))}function f(){ha?h("Page reset ignored by init"):(h("Page size reset by host page"),Q("resetPage"))}function g(){O("resizeParent","Parent window requested size check")}function k(){var a=m();ja.findTarget(a)}function l(){return b.data.split("]")[1].split(":")[0]}function m(){return b.data.substr(b.data.indexOf(":")+1)}function n(){return"iFrameResize"in a}function o(){var a=m();h("MessageCallback called from parent: "+a),Da(JSON.parse(a)),h(" --")}function p(){var a=m();h("PageInfoFromParent called from parent: "+a),Fa(JSON.parse(a)),h(" --")}function q(){return b.data.split(":")[2]in{"true":1,"false":1}}function r(){switch(l()){case"reset":f();break;case"resize":g();break;case"inPageLink":case"moveToAnchor":k();break;case"message":o();break;case"pageInfo":p();break;default:n()||q()||i("Unexpected message ("+b.data+")")}}function s(){!1===da?r():q()?e():h('Ignored message of type "'+l()+'". Received before initialization.')}d()&&s()}function U(){"loading"!==document.readyState&&a.parent.postMessage("[iFrameResizerChild]Ready","*")}var V=!0,W=10,X="",Y=0,Z="",$=null,_="",aa=!1,ba={resize:1,click:1},ca=128,da=!0,ea=1,fa="bodyOffset",ga=fa,ha=!0,ia="",ja={},ka=32,la=null,ma=!1,na="[iFrameSizer]",oa=na.length,pa="",qa={max:1,min:1,bodyScroll:1,documentElementScroll:1},ra="child",sa=!0,ta=a.parent,ua="*",va=0,wa=!1,xa=null,ya=16,za=1,Aa="scroll",Ba=Aa,Ca=a,Da=function(){i("MessageCallback function not defined")},Ea=function(){},Fa=function(){},Ga={height:function(){return i("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return i("Custom width calculation function not defined"),document.body.scrollWidth}},Ha=Date.now||function(){return(new Date).getTime()},Ia={bodyOffset:function(){return document.body.offsetHeight+H("marginTop")+H("marginBottom")},offset:function(){return Ia.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return Ga.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,K(Ia))},min:function(){return Math.min.apply(null,K(Ia))},grow:function(){return Ia.max()},lowestElement:function(){return Math.max(Ia.bodyOffset(),J("bottom",M()))},taggedElement:function(){return L("bottom","data-iframe-height")}},Ja={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return Ga.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max(Ja.bodyScroll(),Ja.documentElementScroll())},max:function(){return Math.max.apply(null,K(Ja))},min:function(){return Math.min.apply(null,K(Ja))},rightMostElement:function(){return J("right",M())},taggedElement:function(){return L("right","data-iframe-width")}},Ka=f(N);c(a,"message",T),U()}(window||{});
+//# sourceMappingURL=iframeResizer.contentWindow.map
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.js b/libs/bower_components/iframe-resizer/js/iframeResizer.js
new file mode 100644
index 0000000000000000000000000000000000000000..897a632ce4c879b739d19e9b52e5eeaf12aefc3a
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.js
@@ -0,0 +1,1002 @@
+/*
+ * File: iframeResizer.js
+ * Desc: Force iframes to size to content.
+ * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Reed Dadoune - reed@dadoune.com
+ */
+
+
+;(function(window) {
+	'use strict';
+
+	var
+		count                 = 0,
+		logEnabled            = false,
+		hiddenCheckEnabled    = false,
+		msgHeader             = 'message',
+		msgHeaderLen          = msgHeader.length,
+		msgId                 = '[iFrameSizer]', //Must match iframe msg ID
+		msgIdLen              = msgId.length,
+		pagePosition          = null,
+		requestAnimationFrame = window.requestAnimationFrame,
+		resetRequiredMethods  = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
+		settings              = {},
+		timer                 = null,
+		logId                 = 'Host Page',
+
+		defaults              = {
+			autoResize                : true,
+			bodyBackground            : null,
+			bodyMargin                : null,
+			bodyMarginV1              : 8,
+			bodyPadding               : null,
+			checkOrigin               : true,
+			inPageLinks               : false,
+			enablePublicMethods       : true,
+			heightCalculationMethod   : 'bodyOffset',
+			id                        : 'iFrameResizer',
+			interval                  : 32,
+			log                       : false,
+			maxHeight                 : Infinity,
+			maxWidth                  : Infinity,
+			minHeight                 : 0,
+			minWidth                  : 0,
+			resizeFrom                : 'parent',
+			scrolling                 : false,
+			sizeHeight                : true,
+			sizeWidth                 : false,
+			tolerance                 : 0,
+			widthCalculationMethod    : 'scroll',
+			closedCallback            : function(){},
+			initCallback              : function(){},
+			messageCallback           : function(){warn('MessageCallback function not defined');},
+			resizedCallback           : function(){},
+			scrollCallback            : function(){return true;}
+		};
+
+	function addEventListener(obj,evt,func){
+		/* istanbul ignore else */ // Not testable in PhantonJS
+		if ('addEventListener' in window){
+			obj.addEventListener(evt,func, false);
+		} else if ('attachEvent' in window){//IE
+			obj.attachEvent('on'+evt,func);
+		}
+	}
+
+	function removeEventListener(el,evt,func){
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if ('removeEventListener' in window){
+			el.removeEventListener(evt,func, false);
+		} else if ('detachEvent' in window){ //IE
+			el.detachEvent('on'+evt,func);
+		}
+	}
+
+	function setupRequestAnimationFrame(){
+		var
+			vendors = ['moz', 'webkit', 'o', 'ms'],
+			x;
+
+		// Remove vendor prefixing if prefixed and break early if not
+		for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
+			requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+		}
+
+		if (!(requestAnimationFrame)){
+			log('setup','RequestAnimationFrame not supported');
+		}
+	}
+
+	function getMyID(iframeId){
+		var retStr = 'Host page: '+iframeId;
+
+		if (window.top!==window.self){
+			if (window.parentIFrame && window.parentIFrame.getId){
+				retStr = window.parentIFrame.getId()+': '+iframeId;
+			} else {
+				retStr = 'Nested host page: '+iframeId;
+			}
+		}
+
+		return retStr;
+	}
+
+	function formatLogHeader(iframeId){
+		return msgId + '[' + getMyID(iframeId) + ']';
+	}
+
+	function isLogEnabled(iframeId){
+		return settings[iframeId] ? settings[iframeId].log : logEnabled;
+	}
+
+	function log(iframeId,msg){
+		output('log',iframeId,msg,isLogEnabled(iframeId));
+	}
+
+	function info(iframeId,msg){
+		output('info',iframeId,msg,isLogEnabled(iframeId));
+	}
+
+	function warn(iframeId,msg){
+		output('warn',iframeId,msg,true);
+	}
+
+	function output(type,iframeId,msg,enabled){
+		if (true === enabled && 'object' === typeof window.console){
+			console[type](formatLogHeader(iframeId),msg);
+		}
+	}
+
+	function iFrameListener(event){
+		function resizeIFrame(){
+			function resize(){
+				setSize(messageData);
+				setPagePosition(iframeId);
+			}
+
+			ensureInRange('Height');
+			ensureInRange('Width');
+
+			syncResize(resize,messageData,'init');
+		}
+
+		function processMsg(){
+			var data = msg.substr(msgIdLen).split(':');
+
+			return {
+				iframe: settings[data[0]].iframe,
+				id:     data[0],
+				height: data[1],
+				width:  data[2],
+				type:   data[3]
+			};
+		}
+
+		function ensureInRange(Dimension){
+			var
+				max  = Number(settings[iframeId]['max' + Dimension]),
+				min  = Number(settings[iframeId]['min' + Dimension]),
+				dimension = Dimension.toLowerCase(),
+				size = Number(messageData[dimension]);
+
+			log(iframeId,'Checking ' + dimension + ' is in range ' + min + '-' + max);
+
+			if (size<min) {
+				size=min;
+				log(iframeId,'Set ' + dimension + ' to min value');
+			}
+
+			if (size>max) {
+				size=max;
+				log(iframeId,'Set ' + dimension + ' to max value');
+			}
+
+			messageData[dimension] = '' + size;
+		}
+
+
+		function isMessageFromIFrame(){
+			function checkAllowedOrigin(){
+				function checkList(){
+					var
+						i = 0,
+						retCode = false;
+
+					log(iframeId,'Checking connection is from allowed list of origins: ' + checkOrigin);
+
+					for (; i < checkOrigin.length; i++) {
+						if (checkOrigin[i] === origin) {
+							retCode = true;
+							break;
+						}
+					}
+					return retCode;
+				}
+
+				function checkSingle(){
+					var remoteHost  = settings[iframeId].remoteHost;
+					log(iframeId,'Checking connection is from: '+remoteHost);
+					return origin === remoteHost;
+				}
+
+				return checkOrigin.constructor === Array ? checkList() : checkSingle();
+			}
+
+			var
+				origin      = event.origin,
+				checkOrigin = settings[iframeId].checkOrigin;
+
+			if (checkOrigin && (''+origin !== 'null') && !checkAllowedOrigin()) {
+				throw new Error(
+					'Unexpected message received from: ' + origin +
+					' for ' + messageData.iframe.id +
+					'. Message was: ' + event.data +
+					'. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
+				);
+			}
+
+			return true;
+		}
+
+		function isMessageForUs(){
+			return msgId === (('' + msg).substr(0,msgIdLen)) && (msg.substr(msgIdLen).split(':')[0] in settings); //''+Protects against non-string msg
+		}
+
+		function isMessageFromMetaParent(){
+			//Test if this message is from a parent above us. This is an ugly test, however, updating
+			//the message format would break backwards compatibity.
+			var retCode = messageData.type in {'true':1,'false':1,'undefined':1};
+
+			if (retCode){
+				log(iframeId,'Ignoring init message from meta parent page');
+			}
+
+			return retCode;
+		}
+
+		function getMsgBody(offset){
+			return msg.substr(msg.indexOf(':')+msgHeaderLen+offset);
+		}
+
+		function forwardMsgFromIFrame(msgBody){
+			log(iframeId,'MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');
+			callback('messageCallback',{
+				iframe: messageData.iframe,
+				message: JSON.parse(msgBody)
+			});
+			log(iframeId,'--');
+		}
+
+		function getPageInfo(){
+			var
+				bodyPosition   = document.body.getBoundingClientRect(),
+				iFramePosition = messageData.iframe.getBoundingClientRect();
+
+			return JSON.stringify({
+				iframeHeight: iFramePosition.height,
+				iframeWidth:  iFramePosition.width,
+				clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
+				clientWidth:  Math.max(document.documentElement.clientWidth,  window.innerWidth  || 0),
+				offsetTop:    parseInt(iFramePosition.top  - bodyPosition.top,  10),
+				offsetLeft:   parseInt(iFramePosition.left - bodyPosition.left, 10),
+				scrollTop:    window.pageYOffset,
+				scrollLeft:   window.pageXOffset
+			});
+		}
+
+		function sendPageInfoToIframe(iframe,iframeId){
+			function debouncedTrigger(){
+				trigger(
+					'Send Page Info',
+					'pageInfo:' + getPageInfo(), 
+					iframe, 
+					iframeId
+				);
+			}
+
+			debouce(debouncedTrigger,32);
+		}
+
+
+		function startPageInfoMonitor(){
+			function setListener(type,func){
+				function sendPageInfo(){
+					if (settings[id]){
+						sendPageInfoToIframe(settings[id].iframe,id);
+					} else {
+						stop();
+					}
+				}
+
+				['scroll','resize'].forEach(function(evt){
+					log(id, type +  evt + ' listener for sendPageInfo');
+					func(window,evt,sendPageInfo);
+				});
+			}
+
+			function stop(){
+				setListener('Remove ', removeEventListener);
+			}
+
+			function start(){
+				setListener('Add ', addEventListener);
+			}
+			
+			var id = iframeId; //Create locally scoped copy of iFrame ID
+
+			start();
+
+			settings[id].stopPageInfo = stop;
+		}
+
+		function stopPageInfoMonitor(){
+			if (settings[iframeId] && settings[iframeId].stopPageInfo){
+				settings[iframeId].stopPageInfo();
+				delete settings[iframeId].stopPageInfo;
+			}
+		}
+
+		function checkIFrameExists(){
+			var retBool = true;
+
+			if (null === messageData.iframe) {
+				warn(iframeId,'IFrame ('+messageData.id+') not found');
+				retBool = false;
+			}
+			return retBool;
+		}
+
+		function getElementPosition(target){
+			var iFramePosition = target.getBoundingClientRect();
+
+			getPagePosition(iframeId);
+
+			return {
+				x: Math.floor( Number(iFramePosition.left) + Number(pagePosition.x) ),
+				y: Math.floor( Number(iFramePosition.top)  + Number(pagePosition.y) )
+			};
+		}
+
+		function scrollRequestFromChild(addOffset){
+			/* istanbul ignore next */  //Not testable in Karma
+			function reposition(){
+				pagePosition = newPosition;
+				scrollTo();
+				log(iframeId,'--');
+			}
+
+			function calcOffset(){
+				return {
+					x: Number(messageData.width) + offset.x,
+					y: Number(messageData.height) + offset.y
+				};
+			}
+
+			function scrollParent(){
+				if (window.parentIFrame){
+					window.parentIFrame['scrollTo'+(addOffset?'Offset':'')](newPosition.x,newPosition.y);
+				} else {
+					warn(iframeId,'Unable to scroll to requested position, window.parentIFrame not found');
+				}
+			}
+
+			var
+				offset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},
+				newPosition = calcOffset();
+
+			log(iframeId,'Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');
+
+			if(window.top!==window.self){
+				scrollParent();
+			} else {
+				reposition();
+			}
+		}
+
+		function scrollTo(){
+			if (false !== callback('scrollCallback',pagePosition)){
+				setPagePosition(iframeId);
+			} else {
+				unsetPagePosition();
+			}
+		}
+
+		function findTarget(location){
+			function jumpToTarget(){
+				var jumpPosition = getElementPosition(target);
+
+				log(iframeId,'Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+				pagePosition = {
+					x: jumpPosition.x,
+					y: jumpPosition.y
+				};
+
+				scrollTo();
+				log(iframeId,'--');
+			}
+
+			function jumpToParent(){
+				if (window.parentIFrame){
+					window.parentIFrame.moveToAnchor(hash);
+				} else {
+					log(iframeId,'In page link #'+hash+' not found and window.parentIFrame not found');
+				}
+			}
+
+			var
+				hash     = location.split('#')[1] || '',
+				hashData = decodeURIComponent(hash),
+				target   = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+			if (target){
+				jumpToTarget();
+			} else if(window.top!==window.self){
+				jumpToParent();
+			} else {
+				log(iframeId,'In page link #'+hash+' not found');
+			}
+		}
+
+		function callback(funcName,val){
+			return chkCallback(iframeId,funcName,val);
+		}
+
+		function actionMsg(){
+
+			if(settings[iframeId].firstRun) firstRun();
+
+			switch(messageData.type){
+			case 'close':
+				closeIFrame(messageData.iframe);
+				break;
+			case 'message':
+				forwardMsgFromIFrame(getMsgBody(6));
+				break;
+			case 'scrollTo':
+				scrollRequestFromChild(false);
+				break;
+			case 'scrollToOffset':
+				scrollRequestFromChild(true);
+				break;
+			case 'pageInfo':
+				sendPageInfoToIframe(settings[iframeId].iframe,iframeId);
+				startPageInfoMonitor();
+				break;
+			case 'pageInfoStop':
+				stopPageInfoMonitor();
+				break;
+			case 'inPageLink':
+				findTarget(getMsgBody(9));
+				break;
+			case 'reset':
+				resetIFrame(messageData);
+				break;
+			case 'init':
+				resizeIFrame();
+				callback('initCallback',messageData.iframe);
+				callback('resizedCallback',messageData);
+				break;
+			default:
+				resizeIFrame();
+				callback('resizedCallback',messageData);
+			}
+		}
+
+		function hasSettings(iframeId){
+			var retBool = true;
+
+			if (!settings[iframeId]){
+				retBool = false;
+				warn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);
+			}
+
+			return retBool;
+		}
+
+		function iFrameReadyMsgReceived(){
+			for (var iframeId in settings){
+				trigger('iFrame requested init',createOutgoingMsg(iframeId),document.getElementById(iframeId),iframeId);
+			}
+		}
+
+		function firstRun() {
+			settings[iframeId].firstRun = false;
+		}
+
+		var
+			msg = event.data,
+			messageData = {},
+			iframeId = null;
+
+		if('[iFrameResizerChild]Ready' === msg){
+			iFrameReadyMsgReceived();
+		} else if (isMessageForUs()){
+			messageData = processMsg();
+			iframeId    = logId = messageData.id;
+
+			if (!isMessageFromMetaParent() && hasSettings(iframeId)){
+				log(iframeId,'Received: '+msg);
+
+				if ( checkIFrameExists() && isMessageFromIFrame() ){
+					actionMsg();
+				}
+			}
+		} else {
+			info(iframeId,'Ignored: '+msg);
+		}
+
+	}
+
+
+	function chkCallback(iframeId,funcName,val){
+		var
+			func = null,
+			retVal = null;
+
+		if(settings[iframeId]){
+			func = settings[iframeId][funcName];
+
+			if( 'function' === typeof func){
+				retVal = func(val);
+			} else {
+				throw new TypeError(funcName+' on iFrame['+iframeId+'] is not a function');
+			}
+		}
+
+		return retVal;
+	}
+
+	function closeIFrame(iframe){
+		var iframeId = iframe.id;
+
+		log(iframeId,'Removing iFrame: '+iframeId);
+		iframe.parentNode.removeChild(iframe);
+		chkCallback(iframeId,'closedCallback',iframeId);
+		log(iframeId,'--');
+		delete settings[iframeId];
+	}
+
+	function getPagePosition(iframeId){
+		if(null === pagePosition){
+			pagePosition = {
+				x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+				y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+			};
+			log(iframeId,'Get page position: '+pagePosition.x+','+pagePosition.y);
+		}
+	}
+
+	function setPagePosition(iframeId){
+		if(null !== pagePosition){
+			window.scrollTo(pagePosition.x,pagePosition.y);
+			log(iframeId,'Set page position: '+pagePosition.x+','+pagePosition.y);
+			unsetPagePosition();
+		}
+	}
+
+	function unsetPagePosition(){
+		pagePosition = null;
+	}
+
+	function resetIFrame(messageData){
+		function reset(){
+			setSize(messageData);
+			trigger('reset','reset',messageData.iframe,messageData.id);
+		}
+
+		log(messageData.id,'Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));
+		getPagePosition(messageData.id);
+		syncResize(reset,messageData,'reset');
+	}
+
+	function setSize(messageData){
+		function setDimension(dimension){
+			messageData.iframe.style[dimension] = messageData[dimension] + 'px';
+			log(
+				messageData.id,
+				'IFrame (' + iframeId +
+				') ' + dimension +
+				' set to ' + messageData[dimension] + 'px'
+			);
+		}
+
+		function chkZero(dimension){
+			//FireFox sets dimension of hidden iFrames to zero.
+			//So if we detect that set up an event to check for
+			//when iFrame becomes visible.
+
+			/* istanbul ignore next */  //Not testable in PhantomJS
+			if (!hiddenCheckEnabled && '0' === messageData[dimension]){
+				hiddenCheckEnabled = true;
+				log(iframeId,'Hidden iFrame detected, creating visibility listener');
+				fixHiddenIFrames();
+			}
+		}
+
+		function processDimension(dimension){
+			setDimension(dimension);
+			chkZero(dimension);
+		}
+
+		var iframeId = messageData.iframe.id;
+
+		if(settings[iframeId]){
+			if( settings[iframeId].sizeHeight) { processDimension('height'); }
+			if( settings[iframeId].sizeWidth ) { processDimension('width'); }
+		}
+	}
+
+	function syncResize(func,messageData,doNotSync){
+		/* istanbul ignore if */  //Not testable in PhantomJS
+		if(doNotSync!==messageData.type && requestAnimationFrame){
+			log(messageData.id,'Requesting animation frame');
+			requestAnimationFrame(func);
+		} else {
+			func();
+		}
+	}
+
+	function trigger(calleeMsg,msg,iframe,id){
+		function postMessageToIFrame(){
+			var target = settings[id].targetOrigin;
+			log(id,'[' + calleeMsg + '] Sending msg to iframe['+id+'] ('+msg+') targetOrigin: '+target);
+			iframe.contentWindow.postMessage( msgId + msg, target );
+		}
+
+		function iFrameNotFound(){
+			info(id,'[' + calleeMsg + '] IFrame('+id+') not found');
+			if(settings[id]) {
+				delete settings[id];
+			}
+		}
+
+		function chkAndSend(){
+			if(iframe && 'contentWindow' in iframe && (null !== iframe.contentWindow)){ //Null test for PhantomJS
+				postMessageToIFrame();
+			} else {
+				iFrameNotFound();
+			}
+		}
+
+		id = id || iframe.id;
+
+		if(settings[id]) {
+			chkAndSend();
+		}
+
+	}
+
+	function createOutgoingMsg(iframeId){
+		return iframeId +
+			':' + settings[iframeId].bodyMarginV1 +
+			':' + settings[iframeId].sizeWidth +
+			':' + settings[iframeId].log +
+			':' + settings[iframeId].interval +
+			':' + settings[iframeId].enablePublicMethods +
+			':' + settings[iframeId].autoResize +
+			':' + settings[iframeId].bodyMargin +
+			':' + settings[iframeId].heightCalculationMethod +
+			':' + settings[iframeId].bodyBackground +
+			':' + settings[iframeId].bodyPadding +
+			':' + settings[iframeId].tolerance +
+			':' + settings[iframeId].inPageLinks +
+			':' + settings[iframeId].resizeFrom +
+			':' + settings[iframeId].widthCalculationMethod;
+	}
+
+	function setupIFrame(iframe,options){
+		function setLimits(){
+			function addStyle(style){
+				if ((Infinity !== settings[iframeId][style]) && (0 !== settings[iframeId][style])){
+					iframe.style[style] = settings[iframeId][style] + 'px';
+					log(iframeId,'Set '+style+' = '+settings[iframeId][style]+'px');
+				}
+			}
+
+			function chkMinMax(dimension){
+				if (settings[iframeId]['min'+dimension]>settings[iframeId]['max'+dimension]){
+					throw new Error('Value for min'+dimension+' can not be greater than max'+dimension);
+				}
+			}
+
+			chkMinMax('Height');
+			chkMinMax('Width');
+
+			addStyle('maxHeight');
+			addStyle('minHeight');
+			addStyle('maxWidth');
+			addStyle('minWidth');
+		}
+
+		function newId(){
+			var id = ((options && options.id) || defaults.id + count++);
+			if  (null!==document.getElementById(id)){
+				id = id + count++;
+			}
+			return id;
+		}
+
+		function ensureHasId(iframeId){
+			logId=iframeId;
+			if (''===iframeId){
+				iframe.id = iframeId =  newId();
+				logEnabled = (options || {}).log;
+				logId=iframeId;
+				log(iframeId,'Added missing iframe ID: '+ iframeId +' (' + iframe.src + ')');
+			}
+
+
+			return iframeId;
+		}
+
+		function setScrolling(){
+			log(iframeId,'IFrame scrolling ' + (settings[iframeId].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId);
+			iframe.style.overflow = false === settings[iframeId].scrolling ? 'hidden' : 'auto';
+			iframe.scrolling      = false === settings[iframeId].scrolling ? 'no' : 'yes';
+		}
+
+		//The V1 iFrame script expects an int, where as in V2 expects a CSS
+		//string value such as '1px 3em', so if we have an int for V2, set V1=V2
+		//and then convert V2 to a string PX value.
+		function setupBodyMarginValues(){
+			if (('number'===typeof(settings[iframeId].bodyMargin)) || ('0'===settings[iframeId].bodyMargin)){
+				settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;
+				settings[iframeId].bodyMargin   = '' + settings[iframeId].bodyMargin + 'px';
+			}
+		}
+
+		function checkReset(){
+			// Reduce scope of firstRun to function, because IE8's JS execution
+			// context stack is borked and this value gets externally
+			// changed midway through running this function!!!
+			var
+				firstRun           = settings[iframeId].firstRun,
+				resetRequertMethod = settings[iframeId].heightCalculationMethod in resetRequiredMethods;
+
+			if (!firstRun && resetRequertMethod){
+				resetIFrame({iframe:iframe, height:0, width:0, type:'init'});
+			}
+		}
+
+		function setupIFrameObject(){
+			if(Function.prototype.bind){ //Ignore unpolyfilled IE8.
+				settings[iframeId].iframe.iFrameResizer = {
+
+					close        : closeIFrame.bind(null,settings[iframeId].iframe),
+
+					resize       : trigger.bind(null,'Window resize', 'resize', settings[iframeId].iframe),
+
+					moveToAnchor : function(anchor){
+						trigger('Move to anchor','moveToAnchor:'+anchor, settings[iframeId].iframe,iframeId);
+					},
+
+					sendMessage  : function(message){
+						message = JSON.stringify(message);
+						trigger('Send Message','message:'+message, settings[iframeId].iframe,iframeId);
+					}
+				};
+			}
+		}
+
+		//We have to call trigger twice, as we can not be sure if all
+		//iframes have completed loading when this code runs. The
+		//event listener also catches the page changing in the iFrame.
+		function init(msg){
+			function iFrameLoaded(){
+				trigger('iFrame.onload',msg,iframe);
+				checkReset();
+			}
+
+			addEventListener(iframe,'load',iFrameLoaded);
+			trigger('init',msg,iframe);
+		}
+
+		function checkOptions(options){
+			if ('object' !== typeof options){
+				throw new TypeError('Options is not an object');
+			}
+		}
+
+		function copyOptions(options){
+			for (var option in defaults) {
+				if (defaults.hasOwnProperty(option)){
+					settings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];
+				}
+			}
+		}
+
+		function getTargetOrigin (remoteHost){
+			return ('' === remoteHost || 'file://' === remoteHost) ? '*' : remoteHost;
+		}
+
+		function processOptions(options){
+			options = options || {};
+			settings[iframeId] = {
+				firstRun	: true,
+				iframe		: iframe,
+				remoteHost	: iframe.src.split('/').slice(0,3).join('/')
+			};
+
+			checkOptions(options);
+			copyOptions(options);
+
+			settings[iframeId].targetOrigin = true === settings[iframeId].checkOrigin ? getTargetOrigin(settings[iframeId].remoteHost) : '*';
+		}
+
+		function beenHere(){
+			return (iframeId in settings && 'iFrameResizer' in iframe);
+		}
+
+		var iframeId = ensureHasId(iframe.id);
+
+		if (!beenHere()){
+			processOptions(options);
+			setScrolling();
+			setLimits();
+			setupBodyMarginValues();
+			init(createOutgoingMsg(iframeId));
+			setupIFrameObject();
+		} else {
+			warn(iframeId,'Ignored iFrame, already setup.');
+		}
+	}
+
+	function debouce(fn,time){
+		if (null === timer){
+			timer = setTimeout(function(){
+				timer = null;
+				fn();
+			}, time);
+		}
+	}
+
+	/* istanbul ignore next */  //Not testable in PhantomJS
+	function fixHiddenIFrames(){
+		function checkIFrames(){
+			function checkIFrame(settingId){
+				function chkDimension(dimension){
+					return '0px' === settings[settingId].iframe.style[dimension];
+				}
+
+				function isVisible(el) {
+					return (null !== el.offsetParent);
+				}
+
+				if (isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))){
+					trigger('Visibility change', 'resize', settings[settingId].iframe,settingId);
+				}
+			}
+
+			for (var settingId in settings){
+				checkIFrame(settingId);
+			}
+		}
+
+		function mutationObserved(mutations){
+			log('window','Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);
+			debouce(checkIFrames,16);
+		}
+
+		function createMutationObserver(){
+			var
+				target = document.querySelector('body'),
+
+				config = {
+					attributes            : true,
+					attributeOldValue     : false,
+					characterData         : true,
+					characterDataOldValue : false,
+					childList             : true,
+					subtree               : true
+				},
+
+				observer = new MutationObserver(mutationObserved);
+
+			observer.observe(target, config);
+		}
+
+		var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+		if (MutationObserver) createMutationObserver();
+	}
+
+
+	function resizeIFrames(event){
+		function resize(){
+			sendTriggerMsg('Window '+event,'resize');
+		}
+
+		log('window','Trigger event: '+event);
+		debouce(resize,16);
+	}
+
+	/* istanbul ignore next */  //Not testable in PhantomJS
+	function tabVisible() {
+		function resize(){
+			sendTriggerMsg('Tab Visable','resize');
+		}
+
+		if('hidden' !== document.visibilityState) {
+			log('document','Trigger event: Visiblity change');
+			debouce(resize,16);
+		}
+	}
+
+	function sendTriggerMsg(eventName,event){
+		function isIFrameResizeEnabled(iframeId) {
+			return	'parent' === settings[iframeId].resizeFrom &&
+					settings[iframeId].autoResize &&
+					!settings[iframeId].firstRun;
+		}
+
+		for (var iframeId in settings){
+			if(isIFrameResizeEnabled(iframeId)){
+				trigger(eventName,event,document.getElementById(iframeId),iframeId);
+			}
+		}
+	}
+
+	function setupEventListeners(){
+		addEventListener(window,'message',iFrameListener);
+
+		addEventListener(window,'resize', function(){resizeIFrames('resize');});
+
+		addEventListener(document,'visibilitychange',tabVisible);
+		addEventListener(document,'-webkit-visibilitychange',tabVisible); //Andriod 4.4
+		addEventListener(window,'focusin',function(){resizeIFrames('focus');}); //IE8-9
+		addEventListener(window,'focus',function(){resizeIFrames('focus');});
+	}
+
+
+	function factory(){
+		function init(options,element){
+			function chkType(){
+				if(!element.tagName) {
+					throw new TypeError('Object is not a valid DOM element');
+				} else if ('IFRAME' !== element.tagName.toUpperCase()) {
+					throw new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>');
+				}
+			}
+
+			if(element) {
+				chkType();
+				setupIFrame(element, options);
+				iFrames.push(element);
+			}
+		}
+
+		var iFrames;
+
+		setupRequestAnimationFrame();
+		setupEventListeners();
+
+		return function iFrameResizeF(options,target){
+			iFrames = []; //Only return iFrames past in on this call
+
+			switch (typeof(target)){
+			case 'undefined':
+			case 'string':
+				Array.prototype.forEach.call(
+					document.querySelectorAll( target || 'iframe' ),
+					init.bind(undefined, options)
+				);
+				break;
+			case 'object':
+				init(options,target);
+				break;
+			default:
+				throw new TypeError('Unexpected data type ('+typeof(target)+')');
+			}
+
+			return iFrames;
+		};
+	}
+
+	function createJQueryPublicMethod($){
+		if (!$.fn) {
+			info('','Unable to bind to jQuery, it is not fully loaded.');
+		} else {
+			$.fn.iFrameResize = function $iFrameResizeF(options) {
+				function init(index, element) {
+					setupIFrame(element, options);
+				}
+
+				return this.filter('iframe').each(init).end();
+			};
+		}
+	}
+
+	if (window.jQuery) { createJQueryPublicMethod(jQuery); }
+
+	if (typeof define === 'function' && define.amd) {
+		define([],factory);
+	} else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy
+		module.exports = factory();
+	} else {
+		window.iFrameResize = window.iFrameResize || factory();
+	}
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.map b/libs/bower_components/iframe-resizer/js/iframeResizer.map
new file mode 100644
index 0000000000000000000000000000000000000000..c26b45efb403c89f31d0b4de024fefd84b7812cd
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.map
@@ -0,0 +1 @@
+{"version":3,"file":"iframeResizer.min.js","sources":["iframeResizer.js"],"names":["window","addEventListener","obj","evt","func","attachEvent","removeEventListener","el","detachEvent","setupRequestAnimationFrame","x","vendors","length","requestAnimationFrame","log","getMyID","iframeId","retStr","top","self","parentIFrame","getId","formatLogHeader","msgId","isLogEnabled","settings","logEnabled","msg","output","info","warn","type","enabled","console","iFrameListener","event","resizeIFrame","resize","setSize","messageData","setPagePosition","ensureInRange","syncResize","processMsg","data","substr","msgIdLen","split","iframe","id","height","width","Dimension","max","Number","min","dimension","toLowerCase","size","isMessageFromIFrame","checkAllowedOrigin","checkList","i","retCode","checkOrigin","origin","checkSingle","remoteHost","constructor","Array","Error","isMessageForUs","isMessageFromMetaParent","true","false","undefined","getMsgBody","offset","indexOf","msgHeaderLen","forwardMsgFromIFrame","msgBody","callback","message","JSON","parse","getPageInfo","bodyPosition","document","body","getBoundingClientRect","iFramePosition","stringify","iframeHeight","iframeWidth","clientHeight","Math","documentElement","innerHeight","clientWidth","innerWidth","offsetTop","parseInt","offsetLeft","left","scrollTop","pageYOffset","scrollLeft","pageXOffset","sendPageInfoToIframe","debouncedTrigger","trigger","debouce","startPageInfoMonitor","setListener","sendPageInfo","stop","forEach","start","stopPageInfo","stopPageInfoMonitor","checkIFrameExists","retBool","getElementPosition","target","getPagePosition","floor","pagePosition","y","scrollRequestFromChild","addOffset","reposition","newPosition","scrollTo","calcOffset","scrollParent","unsetPagePosition","findTarget","location","jumpToTarget","jumpPosition","hash","jumpToParent","moveToAnchor","hashData","decodeURIComponent","getElementById","getElementsByName","funcName","val","chkCallback","actionMsg","firstRun","closeIFrame","resetIFrame","hasSettings","iFrameReadyMsgReceived","createOutgoingMsg","logId","retVal","TypeError","parentNode","removeChild","reset","setDimension","style","chkZero","hiddenCheckEnabled","fixHiddenIFrames","processDimension","sizeHeight","sizeWidth","doNotSync","calleeMsg","postMessageToIFrame","targetOrigin","contentWindow","postMessage","iFrameNotFound","chkAndSend","bodyMarginV1","interval","enablePublicMethods","autoResize","bodyMargin","heightCalculationMethod","bodyBackground","bodyPadding","tolerance","inPageLinks","resizeFrom","widthCalculationMethod","setupIFrame","options","setLimits","addStyle","Infinity","chkMinMax","newId","defaults","count","ensureHasId","src","setScrolling","scrolling","overflow","setupBodyMarginValues","checkReset","resetRequertMethod","resetRequiredMethods","setupIFrameObject","Function","prototype","bind","iFrameResizer","close","anchor","sendMessage","init","iFrameLoaded","checkOptions","copyOptions","option","hasOwnProperty","getTargetOrigin","processOptions","slice","join","beenHere","fn","time","timer","setTimeout","checkIFrames","checkIFrame","settingId","chkDimension","isVisible","offsetParent","mutationObserved","mutations","createMutationObserver","querySelector","config","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","observer","MutationObserver","observe","WebKitMutationObserver","resizeIFrames","sendTriggerMsg","tabVisible","visibilityState","eventName","isIFrameResizeEnabled","setupEventListeners","factory","element","chkType","tagName","toUpperCase","iFrames","push","call","querySelectorAll","createJQueryPublicMethod","$","iFrameResize","index","this","filter","each","end","msgHeader","scroll","bodyScroll","documentElementScroll","maxHeight","maxWidth","minHeight","minWidth","closedCallback","initCallback","messageCallback","resizedCallback","scrollCallback","jQuery","define","amd","module","exports"],"mappings":";;;;;;;CAWC,SAAUA,GACV,YA+CA,SAASC,GAAiBC,EAAIC,EAAIC,GAE7B,oBAAsBJ,GACzBE,EAAID,iBAAiBE,EAAIC,GAAM,GACrB,eAAiBJ,IAC3BE,EAAIG,YAAY,KAAKF,EAAIC,GAI3B,QAASE,GAAoBC,EAAGJ,EAAIC,GAE/B,uBAAyBJ,GAC5BO,EAAGD,oBAAoBH,EAAIC,GAAM,GACvB,eAAiBJ,IAC3BO,EAAGC,YAAY,KAAKL,EAAIC,GAI1B,QAASK,KACR,GAECC,GADAC,GAAW,MAAO,SAAU,IAAK,KAIlC,KAAKD,EAAI,EAAGA,EAAIC,EAAQC,SAAWC,EAAuBH,GAAK,EAC9DG,EAAwBb,EAAOW,EAAQD,GAAK,wBAGxC,IACJI,EAAI,QAAQ,uCAId,QAASC,GAAQC,GAChB,GAAIC,GAAS,cAAcD,CAU3B,OARIhB,GAAOkB,MAAMlB,EAAOmB,OAEtBF,EADGjB,EAAOoB,cAAgBpB,EAAOoB,aAAaC,MACrCrB,EAAOoB,aAAaC,QAAQ,KAAKL,EAEjC,qBAAqBA,GAIzBC,EAGR,QAASK,GAAgBN,GACxB,MAAOO,GAAQ,IAAMR,EAAQC,GAAY,IAG1C,QAASQ,GAAaR,GACrB,MAAOS,GAAST,GAAYS,EAAST,GAAUF,IAAMY,EAGtD,QAASZ,GAAIE,EAASW,GACrBC,EAAO,MAAMZ,EAASW,EAAIH,EAAaR,IAGxC,QAASa,GAAKb,EAASW,GACtBC,EAAO,OAAOZ,EAASW,EAAIH,EAAaR,IAGzC,QAASc,GAAKd,EAASW,GACtBC,EAAO,OAAOZ,EAASW,GAAI,GAG5B,QAASC,GAAOG,EAAKf,EAASW,EAAIK,IAC7B,IAASA,GAAW,gBAAoBhC,GAAOiC,SAClDA,QAAQF,GAAMT,EAAgBN,GAAUW,GAI1C,QAASO,GAAeC,GACvB,QAASC,KACR,QAASC,KACRC,EAAQC,GACRC,EAAgBxB,GAGjByB,EAAc,UACdA,EAAc,SAEdC,EAAWL,EAAOE,EAAY,QAG/B,QAASI,KACR,GAAIC,GAAOjB,EAAIkB,OAAOC,GAAUC,MAAM,IAEtC,QACCC,OAAQvB,EAASmB,EAAK,IAAII,OAC1BC,GAAQL,EAAK,GACbM,OAAQN,EAAK,GACbO,MAAQP,EAAK,GACbb,KAAQa,EAAK,IAIf,QAASH,GAAcW,GACtB,GACCC,GAAOC,OAAO7B,EAAST,GAAU,MAAQoC,IACzCG,EAAOD,OAAO7B,EAAST,GAAU,MAAQoC,IACzCI,EAAYJ,EAAUK,cACtBC,EAAOJ,OAAOf,EAAYiB,GAE3B1C,GAAIE,EAAS,YAAcwC,EAAY,gBAAkBD,EAAM,IAAMF,GAE5DE,EAALG,IACHA,EAAKH,EACLzC,EAAIE,EAAS,OAASwC,EAAY,kBAG/BE,EAAKL,IACRK,EAAKL,EACLvC,EAAIE,EAAS,OAASwC,EAAY,kBAGnCjB,EAAYiB,GAAa,GAAKE,EAI/B,QAASC,KACR,QAASC,KACR,QAASC,KACR,GACCC,GAAI,EACJC,GAAU,CAIX,KAFAjD,EAAIE,EAAS,wDAA0DgD,GAEhEF,EAAIE,EAAYpD,OAAQkD,IAC9B,GAAIE,EAAYF,KAAOG,EAAQ,CAC9BF,GAAU,CACV,OAGF,MAAOA,GAGR,QAASG,KACR,GAAIC,GAAc1C,EAAST,GAAUmD,UAErC,OADArD,GAAIE,EAAS,gCAAgCmD,GACtCF,IAAWE,EAGnB,MAAOH,GAAYI,cAAgBC,MAAQR,IAAcK,IAG1D,GACCD,GAAc9B,EAAM8B,OACpBD,EAAcvC,EAAST,GAAUgD,WAElC,IAAIA,GAAgB,GAAGC,GAAW,SAAYL,IAC7C,KAAM,IAAIU,OACT,qCAAuCL,EACvC,QAAU1B,EAAYS,OAAOC,GAC7B,kBAAoBd,EAAMS,KAC1B,qHAIF,QAAO,EAGR,QAAS2B,KACR,MAAOhD,MAAY,GAAKI,GAAKkB,OAAO,EAAEC,IAAenB,EAAIkB,OAAOC,GAAUC,MAAM,KAAK,IAAMtB,GAG5F,QAAS+C,KAGR,GAAIT,GAAUxB,EAAYR,QAAS0C,OAAO,EAAEC,QAAQ,EAAEC,UAAY,EAMlE,OAJIZ,IACHjD,EAAIE,EAAS,+CAGP+C,EAGR,QAASa,GAAWC,GACnB,MAAOlD,GAAIkB,OAAOlB,EAAImD,QAAQ,KAAKC,EAAaF,GAGjD,QAASG,GAAqBC,GAC7BnE,EAAIE,EAAS,oCAAqCuB,EAAYS,OAAOC,GAAK,cAAgBgC,EAAU,KACpGC,EAAS,mBACRlC,OAAQT,EAAYS,OACpBmC,QAASC,KAAKC,MAAMJ,KAErBnE,EAAIE,EAAS,MAGd,QAASsE,KACR,GACCC,GAAiBC,SAASC,KAAKC,wBAC/BC,EAAiBpD,EAAYS,OAAO0C,uBAErC,OAAON,MAAKQ,WACXC,aAAcF,EAAezC,OAC7B4C,YAAcH,EAAexC,MAC7B4C,aAAcC,KAAK3C,IAAImC,SAASS,gBAAgBF,aAAc/F,EAAOkG,aAAe,GACpFC,YAAcH,KAAK3C,IAAImC,SAASS,gBAAgBE,YAAcnG,EAAOoG,YAAe,GACpFC,UAAcC,SAASX,EAAezE,IAAOqE,EAAarE,IAAM,IAChEqF,WAAcD,SAASX,EAAea,KAAOjB,EAAaiB,KAAM,IAChEC,UAAczG,EAAO0G,YACrBC,WAAc3G,EAAO4G,cAIvB,QAASC,GAAqB7D,EAAOhC,GACpC,QAAS8F,KACRC,EACC,iBACA,YAAczB,IACdtC,EACAhC,GAIFgG,EAAQF,EAAiB,IAI1B,QAASG,KACR,QAASC,GAAYnF,EAAK3B,GACzB,QAAS+G,KACJ1F,EAASwB,GACZ4D,EAAqBpF,EAASwB,GAAID,OAAOC,GAEzCmE,KAID,SAAS,UAAUC,QAAQ,SAASlH,GACpCW,EAAImC,EAAIlB,EAAQ5B,EAAM,8BACtBC,EAAKJ,EAAOG,EAAIgH,KAIlB,QAASC,KACRF,EAAY,UAAW5G,GAGxB,QAASgH,KACRJ,EAAY,OAAQjH,GAGrB,GAAIgD,GAAKjC,CAETsG,KAEA7F,EAASwB,GAAIsE,aAAeH,EAG7B,QAASI,KACJ/F,EAAST,IAAaS,EAAST,GAAUuG,eAC5C9F,EAAST,GAAUuG,qBACZ9F,GAAST,GAAUuG,cAI5B,QAASE,KACR,GAAIC,IAAU,CAMd,OAJI,QAASnF,EAAYS,SACxBlB,EAAKd,EAAS,WAAWuB,EAAYU,GAAG,eACxCyE,GAAU,GAEJA,EAGR,QAASC,GAAmBC,GAC3B,GAAIjC,GAAiBiC,EAAOlC,uBAI5B,OAFAmC,GAAgB7G,IAGfN,EAAGsF,KAAK8B,MAAOxE,OAAOqC,EAAea,MAAQlD,OAAOyE,EAAarH,IACjEsH,EAAGhC,KAAK8B,MAAOxE,OAAOqC,EAAezE,KAAQoC,OAAOyE,EAAaC,KAInE,QAASC,GAAuBC,GAE/B,QAASC,KACRJ,EAAeK,EACfC,IACAvH,EAAIE,EAAS,MAGd,QAASsH,KACR,OACC5H,EAAG4C,OAAOf,EAAYY,OAAS0B,EAAOnE,EACtCsH,EAAG1E,OAAOf,EAAYW,QAAU2B,EAAOmD,GAIzC,QAASO,KACJvI,EAAOoB,aACVpB,EAAOoB,aAAa,YAAY8G,EAAU,SAAS,KAAKE,EAAY1H,EAAE0H,EAAYJ,GAElFlG,EAAKd,EAAS,yEAIhB,GACC6D,GAASqD,EAAYP,EAAmBpF,EAAYS,SAAWtC,EAAE,EAAEsH,EAAE,GACrEI,EAAcE,GAEfxH,GAAIE,EAAS,8CAA8C6D,EAAOnE,EAAE,MAAMmE,EAAOmD,EAAE,KAEhFhI,EAAOkB,MAAMlB,EAAOmB,KACtBoH,IAEAJ,IAIF,QAASE,MACJ,IAAUnD,EAAS,iBAAiB6C,GACvCvF,EAAgBxB,GAEhBwH,IAIF,QAASC,GAAWC,GACnB,QAASC,KACR,GAAIC,GAAejB,EAAmBC,EAEtC9G,GAAIE,EAAS,4BAA4B6H,EAAK,WAAWD,EAAalI,EAAE,OAAOkI,EAAaZ,GAC5FD,GACCrH,EAAGkI,EAAalI,EAChBsH,EAAGY,EAAaZ,GAGjBK,IACAvH,EAAIE,EAAS,MAGd,QAAS8H,KACJ9I,EAAOoB,aACVpB,EAAOoB,aAAa2H,aAAaF,GAEjC/H,EAAIE,EAAS,iBAAiB6H,EAAK,gDAIrC,GACCA,GAAWH,EAAS3F,MAAM,KAAK,IAAM,GACrCiG,EAAWC,mBAAmBJ,GAC9BjB,EAAWpC,SAAS0D,eAAeF,IAAaxD,SAAS2D,kBAAkBH,GAAU,EAElFpB,GACHe,IACS3I,EAAOkB,MAAMlB,EAAOmB,KAC7B2H,IAEAhI,EAAIE,EAAS,iBAAiB6H,EAAK,cAIrC,QAAS3D,GAASkE,EAASC,GAC1B,MAAOC,GAAYtI,EAASoI,EAASC,GAGtC,QAASE,KAIR,OAFG9H,EAAST,GAAUwI,UAAUA,IAEzBjH,EAAYR,MACnB,IAAK,QACJ0H,EAAYlH,EAAYS,OACxB,MACD,KAAK,UACJgC,EAAqBJ,EAAW,GAChC,MACD,KAAK,WACJqD,GAAuB,EACvB,MACD,KAAK,iBACJA,GAAuB,EACvB,MACD,KAAK,WACJpB,EAAqBpF,EAAST,GAAUgC,OAAOhC,GAC/CiG,GACA,MACD,KAAK,eACJO,GACA,MACD,KAAK,aACJiB,EAAW7D,EAAW,GACtB,MACD,KAAK,QACJ8E,EAAYnH,EACZ,MACD,KAAK,OACJH,IACA8C,EAAS,eAAe3C,EAAYS,QACpCkC,EAAS,kBAAkB3C,EAC3B,MACD,SACCH,IACA8C,EAAS,kBAAkB3C,IAI7B,QAASoH,GAAY3I,GACpB,GAAI0G,IAAU,CAOd,OALKjG,GAAST,KACb0G,GAAU,EACV5F,EAAKS,EAAYR,KAAO,oBAAsBf,EAAW,kBAAoBW,IAGvE+F,EAGR,QAASkC,KACR,IAAK,GAAI5I,KAAYS,GACpBsF,EAAQ,wBAAwB8C,EAAkB7I,GAAUwE,SAAS0D,eAAelI,GAAUA,GAIhG,QAASwI,KACR/H,EAAST,GAAUwI,UAAW,EAG/B,GACC7H,GAAMQ,EAAMS,KACZL,KACAvB,EAAW,IAET,+BAAgCW,EAClCiI,IACUrF,KACVhC,EAAcI,IACd3B,EAAc8I,EAAQvH,EAAYU,IAE7BuB,KAA6BmF,EAAY3I,KAC7CF,EAAIE,EAAS,aAAaW,GAErB8F,KAAuB9D,KAC3B4F,MAIF1H,EAAKb,EAAS,YAAYW,GAM5B,QAAS2H,GAAYtI,EAASoI,EAASC,GACtC,GACCjJ,GAAO,KACP2J,EAAS,IAEV,IAAGtI,EAAST,GAAU,CAGrB,GAFAZ,EAAOqB,EAAST,GAAUoI,GAEtB,kBAAsBhJ,GAGzB,KAAM,IAAI4J,WAAUZ,EAAS,cAAcpI,EAAS,sBAFpD+I,GAAS3J,EAAKiJ,GAMhB,MAAOU,GAGR,QAASN,GAAYzG,GACpB,GAAIhC,GAAWgC,EAAOC,EAEtBnC,GAAIE,EAAS,oBAAoBA,GACjCgC,EAAOiH,WAAWC,YAAYlH,GAC9BsG,EAAYtI,EAAS,iBAAiBA,GACtCF,EAAIE,EAAS,YACNS,GAAST,GAGjB,QAAS6G,GAAgB7G,GACrB,OAAS+G,IACXA,GACCrH,EAA2BiE,SAAvB3E,EAAO4G,YAA6B5G,EAAO4G,YAAcpB,SAASS,gBAAgBU,WACtFqB,EAA2BrD,SAAvB3E,EAAO0G,YAA6B1G,EAAO0G,YAAclB,SAASS,gBAAgBQ,WAEvF3F,EAAIE,EAAS,sBAAsB+G,EAAarH,EAAE,IAAIqH,EAAaC,IAIrE,QAASxF,GAAgBxB,GACrB,OAAS+G,IACX/H,EAAOqI,SAASN,EAAarH,EAAEqH,EAAaC,GAC5ClH,EAAIE,EAAS,sBAAsB+G,EAAarH,EAAE,IAAIqH,EAAaC,GACnEQ,KAIF,QAASA,KACRT,EAAe,KAGhB,QAAS2B,GAAYnH,GACpB,QAAS4H,KACR7H,EAAQC,GACRwE,EAAQ,QAAQ,QAAQxE,EAAYS,OAAOT,EAAYU,IAGxDnC,EAAIyB,EAAYU,GAAG,4BAA4B,SAASV,EAAYR,KAAK,YAAY,WACrF8F,EAAgBtF,EAAYU,IAC5BP,EAAWyH,EAAM5H,EAAY,SAG9B,QAASD,GAAQC,GAChB,QAAS6H,GAAa5G,GACrBjB,EAAYS,OAAOqH,MAAM7G,GAAajB,EAAYiB,GAAa,KAC/D1C,EACCyB,EAAYU,GACZ,WAAajC,EACb,KAAOwC,EACP,WAAajB,EAAYiB,GAAa,MAIxC,QAAS8G,GAAQ9G,GAMX+G,GAAsB,MAAQhI,EAAYiB,KAC9C+G,GAAqB,EACrBzJ,EAAIE,EAAS,wDACbwJ,KAIF,QAASC,GAAiBjH,GACzB4G,EAAa5G,GACb8G,EAAQ9G,GAGT,GAAIxC,GAAWuB,EAAYS,OAAOC,EAE/BxB,GAAST,KACPS,EAAST,GAAU0J,YAAcD,EAAiB,UAClDhJ,EAAST,GAAU2J,WAAcF,EAAiB,UAIxD,QAAS/H,GAAWtC,EAAKmC,EAAYqI,GAEjCA,IAAYrI,EAAYR,MAAQlB,GAClCC,EAAIyB,EAAYU,GAAG,8BACnBpC,EAAsBT,IAEtBA,IAIF,QAAS2G,GAAQ8D,EAAUlJ,EAAIqB,EAAOC,GACrC,QAAS6H,KACR,GAAIlD,GAASnG,EAASwB,GAAI8H,YAC1BjK,GAAImC,EAAG,IAAM4H,EAAY,2BAA2B5H,EAAG,MAAMtB,EAAI,mBAAmBiG,GACpF5E,EAAOgI,cAAcC,YAAa1J,EAAQI,EAAKiG,GAGhD,QAASsD,KACRrJ,EAAKoB,EAAG,IAAM4H,EAAY,YAAY5H,EAAG,eACtCxB,EAASwB,UACJxB,GAASwB,GAIlB,QAASkI,KACLnI,GAAU,iBAAmBA,IAAW,OAASA,EAAOgI,cAC1DF,IAEAI,IAIFjI,EAAKA,GAAMD,EAAOC,GAEfxB,EAASwB,IACXkI,IAKF,QAAStB,GAAkB7I,GAC1B,MAAOA,GACN,IAAMS,EAAST,GAAUoK,aACzB,IAAM3J,EAAST,GAAU2J,UACzB,IAAMlJ,EAAST,GAAUF,IACzB,IAAMW,EAAST,GAAUqK,SACzB,IAAM5J,EAAST,GAAUsK,oBACzB,IAAM7J,EAAST,GAAUuK,WACzB,IAAM9J,EAAST,GAAUwK,WACzB,IAAM/J,EAAST,GAAUyK,wBACzB,IAAMhK,EAAST,GAAU0K,eACzB,IAAMjK,EAAST,GAAU2K,YACzB,IAAMlK,EAAST,GAAU4K,UACzB,IAAMnK,EAAST,GAAU6K,YACzB,IAAMpK,EAAST,GAAU8K,WACzB,IAAMrK,EAAST,GAAU+K,uBAG3B,QAASC,GAAYhJ,EAAOiJ,GAC3B,QAASC,KACR,QAASC,GAAS9B,GACZ+B,EAAAA,IAAa3K,EAAST,GAAUqJ,IAAY,IAAM5I,EAAST,GAAUqJ,KACzErH,EAAOqH,MAAMA,GAAS5I,EAAST,GAAUqJ,GAAS,KAClDvJ,EAAIE,EAAS,OAAOqJ,EAAM,MAAM5I,EAAST,GAAUqJ,GAAO,OAI5D,QAASgC,GAAU7I,GAClB,GAAI/B,EAAST,GAAU,MAAMwC,GAAW/B,EAAST,GAAU,MAAMwC,GAChE,KAAM,IAAIc,OAAM,gBAAgBd,EAAU,+BAA+BA,GAI3E6I,EAAU,UACVA,EAAU,SAEVF,EAAS,aACTA,EAAS,aACTA,EAAS,YACTA,EAAS,YAGV,QAASG,KACR,GAAIrJ,GAAOgJ,GAAWA,EAAQhJ,IAAOsJ,EAAStJ,GAAKuJ,GAInD,OAHK,QAAOhH,SAAS0D,eAAejG,KACnCA,GAAUuJ,KAEJvJ,EAGR,QAASwJ,GAAYzL,GAUpB,MATA8I,GAAM9I,EACF,KAAKA,IACRgC,EAAOC,GAAKjC,EAAYsL,IACxB5K,GAAcuK,OAAenL,IAC7BgJ,EAAM9I,EACNF,EAAIE,EAAS,4BAA6BA,EAAU,KAAOgC,EAAO0J,IAAM,MAIlE1L,EAGR,QAAS2L,KACR7L,EAAIE,EAAS,qBAAuBS,EAAST,GAAU4L,UAAY,UAAY,YAAc,QAAU5L,GACvGgC,EAAOqH,MAAMwC,UAAW,IAAUpL,EAAST,GAAU4L,UAAY,SAAW,OAC5E5J,EAAO4J,WAAiB,IAAUnL,EAAST,GAAU4L,UAAY,KAAO,MAMzE,QAASE,MACH,gBAAkBrL,GAAST,GAAoB,YAAO,MAAMS,EAAST,GAAUwK,cACnF/J,EAAST,GAAUoK,aAAe3J,EAAST,GAAUwK,WACrD/J,EAAST,GAAUwK,WAAe,GAAK/J,EAAST,GAAUwK,WAAa,MAIzE,QAASuB,KAIR,GACCvD,GAAqB/H,EAAST,GAAUwI,SACxCwD,EAAqBvL,EAAST,GAAUyK,0BAA2BwB,IAE/DzD,GAAYwD,GAChBtD,GAAa1G,OAAOA,EAAQE,OAAO,EAAGC,MAAM,EAAGpB,KAAK,SAItD,QAASmL,KACLC,SAASC,UAAUC,OACrB5L,EAAST,GAAUgC,OAAOsK,eAEzBC,MAAe9D,EAAY4D,KAAK,KAAK5L,EAAST,GAAUgC,QAExDX,OAAe0E,EAAQsG,KAAK,KAAK,gBAAiB,SAAU5L,EAAST,GAAUgC,QAE/E+F,aAAe,SAASyE,GACvBzG,EAAQ,iBAAiB,gBAAgByG,EAAQ/L,EAAST,GAAUgC,OAAOhC,IAG5EyM,YAAe,SAAStI,GACvBA,EAAUC,KAAKQ,UAAUT,GACzB4B,EAAQ,eAAe,WAAW5B,EAAS1D,EAAST,GAAUgC,OAAOhC,MASzE,QAAS0M,GAAK/L,GACb,QAASgM,KACR5G,EAAQ,gBAAgBpF,EAAIqB,GAC5B+J,IAGD9M,EAAiB+C,EAAO,OAAO2K,GAC/B5G,EAAQ,OAAOpF,EAAIqB,GAGpB,QAAS4K,GAAa3B,GACrB,GAAI,gBAAoBA,GACvB,KAAM,IAAIjC,WAAU,4BAItB,QAAS6D,GAAY5B,GACpB,IAAK,GAAI6B,KAAUvB,GACdA,EAASwB,eAAeD,KAC3BrM,EAAST,GAAU8M,GAAU7B,EAAQ8B,eAAeD,GAAU7B,EAAQ6B,GAAUvB,EAASuB,IAK5F,QAASE,GAAiB7J,GACzB,MAAQ,KAAOA,GAAc,YAAcA,EAAc,IAAMA,EAGhE,QAAS8J,GAAehC,GACvBA,EAAUA,MACVxK,EAAST,IACRwI,UAAW,EACXxG,OAAUA,EACVmB,WAAanB,EAAO0J,IAAI3J,MAAM,KAAKmL,MAAM,EAAE,GAAGC,KAAK,MAGpDP,EAAa3B,GACb4B,EAAY5B,GAEZxK,EAAST,GAAU+J,cAAe,IAAStJ,EAAST,GAAUgD,YAAcgK,EAAgBvM,EAAST,GAAUmD,YAAc,IAG9H,QAASiK,KACR,MAAQpN,KAAYS,IAAY,iBAAmBuB,GAGpD,GAAIhC,GAAWyL,EAAYzJ,EAAOC,GAE7BmL,KAQJtM,EAAKd,EAAS,mCAPdiN,EAAehC,GACfU,IACAT,IACAY,IACAY,EAAK7D,EAAkB7I,IACvBkM,KAMF,QAASlG,GAAQqH,EAAGC,GACf,OAASC,IACZA,EAAQC,WAAW,WAClBD,EAAQ,KACRF,KACEC,IAKL,QAAS9D,KACR,QAASiE,KACR,QAASC,GAAYC,GACpB,QAASC,GAAapL,GACrB,MAAO,QAAU/B,EAASkN,GAAW3L,OAAOqH,MAAM7G,GAGnD,QAASqL,GAAUtO,GAClB,MAAQ,QAASA,EAAGuO,aAGjBD,EAAUpN,EAASkN,GAAW3L,UAAY4L,EAAa,WAAaA,EAAa,WACpF7H,EAAQ,oBAAqB,SAAUtF,EAASkN,GAAW3L,OAAO2L,GAIpE,IAAK,GAAIA,KAAalN,GACrBiN,EAAYC,GAId,QAASI,GAAiBC,GACzBlO,EAAI,SAAS,sBAAwBkO,EAAU,GAAGpH,OAAS,IAAMoH,EAAU,GAAGjN,MAC9EiF,EAAQyH,EAAa,IAGtB,QAASQ,KACR,GACCrH,GAASpC,SAAS0J,cAAc,QAEhCC,GACCC,YAAwB,EACxBC,mBAAwB,EACxBC,eAAwB,EACxBC,uBAAwB,EACxBC,WAAwB,EACxBC,SAAwB,GAGzBC,EAAW,GAAIC,GAAiBZ,EAEjCW,GAASE,QAAQhI,EAAQuH,GAG1B,GAAIQ,GAAmB3P,EAAO2P,kBAAoB3P,EAAO6P,sBAErDF,IAAkBV,IAIvB,QAASa,GAAc3N,GACtB,QAASE,KACR0N,EAAe,UAAU5N,EAAM,UAGhCrB,EAAI,SAAS,kBAAkBqB,GAC/B6E,EAAQ3E,EAAO,IAIhB,QAAS2N,KACR,QAAS3N,KACR0N,EAAe,cAAc,UAG3B,WAAavK,SAASyK,kBACxBnP,EAAI,WAAW,mCACfkG,EAAQ3E,EAAO,KAIjB,QAAS0N,GAAeG,EAAU/N,GACjC,QAASgO,GAAsBnP,GAC9B,MAAO,WAAaS,EAAST,GAAU8K,YACrCrK,EAAST,GAAUuK,aAClB9J,EAAST,GAAUwI,SAGvB,IAAK,GAAIxI,KAAYS,GACjB0O,EAAsBnP,IACxB+F,EAAQmJ,EAAU/N,EAAMqD,SAAS0D,eAAelI,GAAUA,GAK7D,QAASoP,KACRnQ,EAAiBD,EAAO,UAAUkC,GAElCjC,EAAiBD,EAAO,SAAU,WAAW8P,EAAc,YAE3D7P,EAAiBuF,SAAS,mBAAmBwK,GAC7C/P,EAAiBuF,SAAS,2BAA2BwK,GACrD/P,EAAiBD,EAAO,UAAU,WAAW8P,EAAc,WAC3D7P,EAAiBD,EAAO,QAAQ,WAAW8P,EAAc,WAI1D,QAASO,KACR,QAAS3C,GAAKzB,EAAQqE,GACrB,QAASC,KACR,IAAID,EAAQE,QACX,KAAM,IAAIxG,WAAU,oCACd,IAAI,WAAasG,EAAQE,QAAQC,cACvC,KAAM,IAAIzG,WAAU,iCAAiCsG,EAAQE,QAAQ,KAIpEF,IACFC,IACAvE,EAAYsE,EAASrE,GACrByE,EAAQC,KAAKL,IAIf,GAAII,EAKJ,OAHAjQ,KACA2P,IAEO,SAAuBnE,EAAQrE,GAGrC,OAFA8I,WAEc,IACd,IAAK,YACL,IAAK,SACJrM,MAAM+I,UAAU/F,QAAQuJ,KACvBpL,SAASqL,iBAAkBjJ,GAAU,UACrC8F,EAAKL,KAAK1I,OAAWsH,GAEtB,MACD,KAAK,SACJyB,EAAKzB,EAAQrE,EACb,MACD,SACC,KAAM,IAAIoC,WAAU,+BAA+B,GAAS,KAG7D,MAAO0G,IAIT,QAASI,GAAyBC,GAC5BA,EAAE1C,GAGN0C,EAAE1C,GAAG2C,aAAe,SAAwB/E,GAC3C,QAASyB,GAAKuD,EAAOX,GACpBtE,EAAYsE,EAASrE,GAGtB,MAAOiF,MAAKC,OAAO,UAAUC,KAAK1D,GAAM2D,OAPzCxP,EAAK,GAAG,qDAr8BV,GACC2K,GAAwB,EACxB9K,GAAwB,EACxB6I,GAAwB,EACxB+G,EAAwB,UACxBvM,EAAwBuM,EAAU1Q,OAClCW,EAAwB,gBACxBuB,EAAwBvB,EAAMX,OAC9BmH,EAAwB,KACxBlH,EAAwBb,EAAOa,sBAC/BoM,GAAyB5J,IAAI,EAAEkO,OAAO,EAAEC,WAAW,EAAEC,sBAAsB,GAC3EhQ,KACA8M,EAAwB,KACxBzE,EAAwB,YAExByC,GACChB,YAA4B,EAC5BG,eAA4B,KAC5BF,WAA4B,KAC5BJ,aAA4B,EAC5BO,YAA4B,KAC5B3H,aAA4B,EAC5B6H,aAA4B,EAC5BP,qBAA4B,EAC5BG,wBAA4B,aAC5BxI,GAA4B,gBAC5BoI,SAA4B,GAC5BvK,KAA4B,EAC5B4Q,UAA4BtF,EAAAA,EAC5BuF,SAA4BvF,EAAAA,EAC5BwF,UAA4B,EAC5BC,SAA4B,EAC5B/F,WAA4B,SAC5Bc,WAA4B,EAC5BlC,YAA4B,EAC5BC,WAA4B,EAC5BiB,UAA4B,EAC5BG,uBAA4B,SAC5B+F,eAA4B,aAC5BC,aAA4B,aAC5BC,gBAA4B,WAAWlQ,EAAK,yCAC5CmQ,gBAA4B,aAC5BC,eAA4B,WAAW,OAAO,GAu6B5ClS,GAAOmS,QAAUrB,EAAyBqB,QAExB,kBAAXC,SAAyBA,OAAOC,IAC1CD,UAAU/B,GACkB,gBAAXiC,SAAiD,gBAAnBA,QAAOC,QACtDD,OAAOC,QAAUlC,IAEjBrQ,EAAOgR,aAAehR,EAAOgR,cAAgBX,KAG5CrQ","sourcesContent":["/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n\n;(function(window) {\n\t'use strict';\n\n\tvar\n\t\tcount                 = 0,\n\t\tlogEnabled            = false,\n\t\thiddenCheckEnabled    = false,\n\t\tmsgHeader             = 'message',\n\t\tmsgHeaderLen          = msgHeader.length,\n\t\tmsgId                 = '[iFrameSizer]', //Must match iframe msg ID\n\t\tmsgIdLen              = msgId.length,\n\t\tpagePosition          = null,\n\t\trequestAnimationFrame = window.requestAnimationFrame,\n\t\tresetRequiredMethods  = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},\n\t\tsettings              = {},\n\t\ttimer                 = null,\n\t\tlogId                 = 'Host Page',\n\n\t\tdefaults              = {\n\t\t\tautoResize                : true,\n\t\t\tbodyBackground            : null,\n\t\t\tbodyMargin                : null,\n\t\t\tbodyMarginV1              : 8,\n\t\t\tbodyPadding               : null,\n\t\t\tcheckOrigin               : true,\n\t\t\tinPageLinks               : false,\n\t\t\tenablePublicMethods       : true,\n\t\t\theightCalculationMethod   : 'bodyOffset',\n\t\t\tid                        : 'iFrameResizer',\n\t\t\tinterval                  : 32,\n\t\t\tlog                       : false,\n\t\t\tmaxHeight                 : Infinity,\n\t\t\tmaxWidth                  : Infinity,\n\t\t\tminHeight                 : 0,\n\t\t\tminWidth                  : 0,\n\t\t\tresizeFrom                : 'parent',\n\t\t\tscrolling                 : false,\n\t\t\tsizeHeight                : true,\n\t\t\tsizeWidth                 : false,\n\t\t\ttolerance                 : 0,\n\t\t\twidthCalculationMethod    : 'scroll',\n\t\t\tclosedCallback            : function(){},\n\t\t\tinitCallback              : function(){},\n\t\t\tmessageCallback           : function(){warn('MessageCallback function not defined');},\n\t\t\tresizedCallback           : function(){},\n\t\t\tscrollCallback            : function(){return true;}\n\t\t};\n\n\tfunction addEventListener(obj,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in PhantonJS\n\t\tif ('addEventListener' in window){\n\t\t\tobj.addEventListener(evt,func, false);\n\t\t} else if ('attachEvent' in window){//IE\n\t\t\tobj.attachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction removeEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('removeEventListener' in window){\n\t\t\tel.removeEventListener(evt,func, false);\n\t\t} else if ('detachEvent' in window){ //IE\n\t\t\tel.detachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction setupRequestAnimationFrame(){\n\t\tvar\n\t\t\tvendors = ['moz', 'webkit', 'o', 'ms'],\n\t\t\tx;\n\n\t\t// Remove vendor prefixing if prefixed and break early if not\n\t\tfor (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n\t\t\trequestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n\t\t}\n\n\t\tif (!(requestAnimationFrame)){\n\t\t\tlog('setup','RequestAnimationFrame not supported');\n\t\t}\n\t}\n\n\tfunction getMyID(iframeId){\n\t\tvar retStr = 'Host page: '+iframeId;\n\n\t\tif (window.top!==window.self){\n\t\t\tif (window.parentIFrame && window.parentIFrame.getId){\n\t\t\t\tretStr = window.parentIFrame.getId()+': '+iframeId;\n\t\t\t} else {\n\t\t\t\tretStr = 'Nested host page: '+iframeId;\n\t\t\t}\n\t\t}\n\n\t\treturn retStr;\n\t}\n\n\tfunction formatLogHeader(iframeId){\n\t\treturn msgId + '[' + getMyID(iframeId) + ']';\n\t}\n\n\tfunction isLogEnabled(iframeId){\n\t\treturn settings[iframeId] ? settings[iframeId].log : logEnabled;\n\t}\n\n\tfunction log(iframeId,msg){\n\t\toutput('log',iframeId,msg,isLogEnabled(iframeId));\n\t}\n\n\tfunction info(iframeId,msg){\n\t\toutput('info',iframeId,msg,isLogEnabled(iframeId));\n\t}\n\n\tfunction warn(iframeId,msg){\n\t\toutput('warn',iframeId,msg,true);\n\t}\n\n\tfunction output(type,iframeId,msg,enabled){\n\t\tif (true === enabled && 'object' === typeof window.console){\n\t\t\tconsole[type](formatLogHeader(iframeId),msg);\n\t\t}\n\t}\n\n\tfunction iFrameListener(event){\n\t\tfunction resizeIFrame(){\n\t\t\tfunction resize(){\n\t\t\t\tsetSize(messageData);\n\t\t\t\tsetPagePosition(iframeId);\n\t\t\t}\n\n\t\t\tensureInRange('Height');\n\t\t\tensureInRange('Width');\n\n\t\t\tsyncResize(resize,messageData,'init');\n\t\t}\n\n\t\tfunction processMsg(){\n\t\t\tvar data = msg.substr(msgIdLen).split(':');\n\n\t\t\treturn {\n\t\t\t\tiframe: settings[data[0]].iframe,\n\t\t\t\tid:     data[0],\n\t\t\t\theight: data[1],\n\t\t\t\twidth:  data[2],\n\t\t\t\ttype:   data[3]\n\t\t\t};\n\t\t}\n\n\t\tfunction ensureInRange(Dimension){\n\t\t\tvar\n\t\t\t\tmax  = Number(settings[iframeId]['max' + Dimension]),\n\t\t\t\tmin  = Number(settings[iframeId]['min' + Dimension]),\n\t\t\t\tdimension = Dimension.toLowerCase(),\n\t\t\t\tsize = Number(messageData[dimension]);\n\n\t\t\tlog(iframeId,'Checking ' + dimension + ' is in range ' + min + '-' + max);\n\n\t\t\tif (size<min) {\n\t\t\t\tsize=min;\n\t\t\t\tlog(iframeId,'Set ' + dimension + ' to min value');\n\t\t\t}\n\n\t\t\tif (size>max) {\n\t\t\t\tsize=max;\n\t\t\t\tlog(iframeId,'Set ' + dimension + ' to max value');\n\t\t\t}\n\n\t\t\tmessageData[dimension] = '' + size;\n\t\t}\n\n\n\t\tfunction isMessageFromIFrame(){\n\t\t\tfunction checkAllowedOrigin(){\n\t\t\t\tfunction checkList(){\n\t\t\t\t\tvar\n\t\t\t\t\t\ti = 0,\n\t\t\t\t\t\tretCode = false;\n\n\t\t\t\t\tlog(iframeId,'Checking connection is from allowed list of origins: ' + checkOrigin);\n\n\t\t\t\t\tfor (; i < checkOrigin.length; i++) {\n\t\t\t\t\t\tif (checkOrigin[i] === origin) {\n\t\t\t\t\t\t\tretCode = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn retCode;\n\t\t\t\t}\n\n\t\t\t\tfunction checkSingle(){\n\t\t\t\t\tvar remoteHost  = settings[iframeId].remoteHost;\n\t\t\t\t\tlog(iframeId,'Checking connection is from: '+remoteHost);\n\t\t\t\t\treturn origin === remoteHost;\n\t\t\t\t}\n\n\t\t\t\treturn checkOrigin.constructor === Array ? checkList() : checkSingle();\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\torigin      = event.origin,\n\t\t\t\tcheckOrigin = settings[iframeId].checkOrigin;\n\n\t\t\tif (checkOrigin && (''+origin !== 'null') && !checkAllowedOrigin()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Unexpected message received from: ' + origin +\n\t\t\t\t\t' for ' + messageData.iframe.id +\n\t\t\t\t\t'. Message was: ' + event.data +\n\t\t\t\t\t'. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction isMessageForUs(){\n\t\t\treturn msgId === (('' + msg).substr(0,msgIdLen)) && (msg.substr(msgIdLen).split(':')[0] in settings); //''+Protects against non-string msg\n\t\t}\n\n\t\tfunction isMessageFromMetaParent(){\n\t\t\t//Test if this message is from a parent above us. This is an ugly test, however, updating\n\t\t\t//the message format would break backwards compatibity.\n\t\t\tvar retCode = messageData.type in {'true':1,'false':1,'undefined':1};\n\n\t\t\tif (retCode){\n\t\t\t\tlog(iframeId,'Ignoring init message from meta parent page');\n\t\t\t}\n\n\t\t\treturn retCode;\n\t\t}\n\n\t\tfunction getMsgBody(offset){\n\t\t\treturn msg.substr(msg.indexOf(':')+msgHeaderLen+offset);\n\t\t}\n\n\t\tfunction forwardMsgFromIFrame(msgBody){\n\t\t\tlog(iframeId,'MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');\n\t\t\tcallback('messageCallback',{\n\t\t\t\tiframe: messageData.iframe,\n\t\t\t\tmessage: JSON.parse(msgBody)\n\t\t\t});\n\t\t\tlog(iframeId,'--');\n\t\t}\n\n\t\tfunction getPageInfo(){\n\t\t\tvar\n\t\t\t\tbodyPosition   = document.body.getBoundingClientRect(),\n\t\t\t\tiFramePosition = messageData.iframe.getBoundingClientRect();\n\n\t\t\treturn JSON.stringify({\n\t\t\t\tiframeHeight: iFramePosition.height,\n\t\t\t\tiframeWidth:  iFramePosition.width,\n\t\t\t\tclientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),\n\t\t\t\tclientWidth:  Math.max(document.documentElement.clientWidth,  window.innerWidth  || 0),\n\t\t\t\toffsetTop:    parseInt(iFramePosition.top  - bodyPosition.top,  10),\n\t\t\t\toffsetLeft:   parseInt(iFramePosition.left - bodyPosition.left, 10),\n\t\t\t\tscrollTop:    window.pageYOffset,\n\t\t\t\tscrollLeft:   window.pageXOffset\n\t\t\t});\n\t\t}\n\n\t\tfunction sendPageInfoToIframe(iframe,iframeId){\n\t\t\tfunction debouncedTrigger(){\n\t\t\t\ttrigger(\n\t\t\t\t\t'Send Page Info',\n\t\t\t\t\t'pageInfo:' + getPageInfo(), \n\t\t\t\t\tiframe, \n\t\t\t\t\tiframeId\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdebouce(debouncedTrigger,32);\n\t\t}\n\n\n\t\tfunction startPageInfoMonitor(){\n\t\t\tfunction setListener(type,func){\n\t\t\t\tfunction sendPageInfo(){\n\t\t\t\t\tif (settings[id]){\n\t\t\t\t\t\tsendPageInfoToIframe(settings[id].iframe,id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstop();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t['scroll','resize'].forEach(function(evt){\n\t\t\t\t\tlog(id, type +  evt + ' listener for sendPageInfo');\n\t\t\t\t\tfunc(window,evt,sendPageInfo);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction stop(){\n\t\t\t\tsetListener('Remove ', removeEventListener);\n\t\t\t}\n\n\t\t\tfunction start(){\n\t\t\t\tsetListener('Add ', addEventListener);\n\t\t\t}\n\t\t\t\n\t\t\tvar id = iframeId; //Create locally scoped copy of iFrame ID\n\n\t\t\tstart();\n\n\t\t\tsettings[id].stopPageInfo = stop;\n\t\t}\n\n\t\tfunction stopPageInfoMonitor(){\n\t\t\tif (settings[iframeId] && settings[iframeId].stopPageInfo){\n\t\t\t\tsettings[iframeId].stopPageInfo();\n\t\t\t\tdelete settings[iframeId].stopPageInfo;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkIFrameExists(){\n\t\t\tvar retBool = true;\n\n\t\t\tif (null === messageData.iframe) {\n\t\t\t\twarn(iframeId,'IFrame ('+messageData.id+') not found');\n\t\t\t\tretBool = false;\n\t\t\t}\n\t\t\treturn retBool;\n\t\t}\n\n\t\tfunction getElementPosition(target){\n\t\t\tvar iFramePosition = target.getBoundingClientRect();\n\n\t\t\tgetPagePosition(iframeId);\n\n\t\t\treturn {\n\t\t\t\tx: Math.floor( Number(iFramePosition.left) + Number(pagePosition.x) ),\n\t\t\t\ty: Math.floor( Number(iFramePosition.top)  + Number(pagePosition.y) )\n\t\t\t};\n\t\t}\n\n\t\tfunction scrollRequestFromChild(addOffset){\n\t\t\t/* istanbul ignore next */  //Not testable in Karma\n\t\t\tfunction reposition(){\n\t\t\t\tpagePosition = newPosition;\n\t\t\t\tscrollTo();\n\t\t\t\tlog(iframeId,'--');\n\t\t\t}\n\n\t\t\tfunction calcOffset(){\n\t\t\t\treturn {\n\t\t\t\t\tx: Number(messageData.width) + offset.x,\n\t\t\t\t\ty: Number(messageData.height) + offset.y\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfunction scrollParent(){\n\t\t\t\tif (window.parentIFrame){\n\t\t\t\t\twindow.parentIFrame['scrollTo'+(addOffset?'Offset':'')](newPosition.x,newPosition.y);\n\t\t\t\t} else {\n\t\t\t\t\twarn(iframeId,'Unable to scroll to requested position, window.parentIFrame not found');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\toffset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},\n\t\t\t\tnewPosition = calcOffset();\n\n\t\t\tlog(iframeId,'Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');\n\n\t\t\tif(window.top!==window.self){\n\t\t\t\tscrollParent();\n\t\t\t} else {\n\t\t\t\treposition();\n\t\t\t}\n\t\t}\n\n\t\tfunction scrollTo(){\n\t\t\tif (false !== callback('scrollCallback',pagePosition)){\n\t\t\t\tsetPagePosition(iframeId);\n\t\t\t} else {\n\t\t\t\tunsetPagePosition();\n\t\t\t}\n\t\t}\n\n\t\tfunction findTarget(location){\n\t\t\tfunction jumpToTarget(){\n\t\t\t\tvar jumpPosition = getElementPosition(target);\n\n\t\t\t\tlog(iframeId,'Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);\n\t\t\t\tpagePosition = {\n\t\t\t\t\tx: jumpPosition.x,\n\t\t\t\t\ty: jumpPosition.y\n\t\t\t\t};\n\n\t\t\t\tscrollTo();\n\t\t\t\tlog(iframeId,'--');\n\t\t\t}\n\n\t\t\tfunction jumpToParent(){\n\t\t\t\tif (window.parentIFrame){\n\t\t\t\t\twindow.parentIFrame.moveToAnchor(hash);\n\t\t\t\t} else {\n\t\t\t\t\tlog(iframeId,'In page link #'+hash+' not found and window.parentIFrame not found');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\thash     = location.split('#')[1] || '',\n\t\t\t\thashData = decodeURIComponent(hash),\n\t\t\t\ttarget   = document.getElementById(hashData) || document.getElementsByName(hashData)[0];\n\n\t\t\tif (target){\n\t\t\t\tjumpToTarget();\n\t\t\t} else if(window.top!==window.self){\n\t\t\t\tjumpToParent();\n\t\t\t} else {\n\t\t\t\tlog(iframeId,'In page link #'+hash+' not found');\n\t\t\t}\n\t\t}\n\n\t\tfunction callback(funcName,val){\n\t\t\treturn chkCallback(iframeId,funcName,val);\n\t\t}\n\n\t\tfunction actionMsg(){\n\n\t\t\tif(settings[iframeId].firstRun) firstRun();\n\n\t\t\tswitch(messageData.type){\n\t\t\tcase 'close':\n\t\t\t\tcloseIFrame(messageData.iframe);\n\t\t\t\tbreak;\n\t\t\tcase 'message':\n\t\t\t\tforwardMsgFromIFrame(getMsgBody(6));\n\t\t\t\tbreak;\n\t\t\tcase 'scrollTo':\n\t\t\t\tscrollRequestFromChild(false);\n\t\t\t\tbreak;\n\t\t\tcase 'scrollToOffset':\n\t\t\t\tscrollRequestFromChild(true);\n\t\t\t\tbreak;\n\t\t\tcase 'pageInfo':\n\t\t\t\tsendPageInfoToIframe(settings[iframeId].iframe,iframeId);\n\t\t\t\tstartPageInfoMonitor();\n\t\t\t\tbreak;\n\t\t\tcase 'pageInfoStop':\n\t\t\t\tstopPageInfoMonitor();\n\t\t\t\tbreak;\n\t\t\tcase 'inPageLink':\n\t\t\t\tfindTarget(getMsgBody(9));\n\t\t\t\tbreak;\n\t\t\tcase 'reset':\n\t\t\t\tresetIFrame(messageData);\n\t\t\t\tbreak;\n\t\t\tcase 'init':\n\t\t\t\tresizeIFrame();\n\t\t\t\tcallback('initCallback',messageData.iframe);\n\t\t\t\tcallback('resizedCallback',messageData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tresizeIFrame();\n\t\t\t\tcallback('resizedCallback',messageData);\n\t\t\t}\n\t\t}\n\n\t\tfunction hasSettings(iframeId){\n\t\t\tvar retBool = true;\n\n\t\t\tif (!settings[iframeId]){\n\t\t\t\tretBool = false;\n\t\t\t\twarn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);\n\t\t\t}\n\n\t\t\treturn retBool;\n\t\t}\n\n\t\tfunction iFrameReadyMsgReceived(){\n\t\t\tfor (var iframeId in settings){\n\t\t\t\ttrigger('iFrame requested init',createOutgoingMsg(iframeId),document.getElementById(iframeId),iframeId);\n\t\t\t}\n\t\t}\n\n\t\tfunction firstRun() {\n\t\t\tsettings[iframeId].firstRun = false;\n\t\t}\n\n\t\tvar\n\t\t\tmsg = event.data,\n\t\t\tmessageData = {},\n\t\t\tiframeId = null;\n\n\t\tif('[iFrameResizerChild]Ready' === msg){\n\t\t\tiFrameReadyMsgReceived();\n\t\t} else if (isMessageForUs()){\n\t\t\tmessageData = processMsg();\n\t\t\tiframeId    = logId = messageData.id;\n\n\t\t\tif (!isMessageFromMetaParent() && hasSettings(iframeId)){\n\t\t\t\tlog(iframeId,'Received: '+msg);\n\n\t\t\t\tif ( checkIFrameExists() && isMessageFromIFrame() ){\n\t\t\t\t\tactionMsg();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tinfo(iframeId,'Ignored: '+msg);\n\t\t}\n\n\t}\n\n\n\tfunction chkCallback(iframeId,funcName,val){\n\t\tvar\n\t\t\tfunc = null,\n\t\t\tretVal = null;\n\n\t\tif(settings[iframeId]){\n\t\t\tfunc = settings[iframeId][funcName];\n\n\t\t\tif( 'function' === typeof func){\n\t\t\t\tretVal = func(val);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(funcName+' on iFrame['+iframeId+'] is not a function');\n\t\t\t}\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\tfunction closeIFrame(iframe){\n\t\tvar iframeId = iframe.id;\n\n\t\tlog(iframeId,'Removing iFrame: '+iframeId);\n\t\tiframe.parentNode.removeChild(iframe);\n\t\tchkCallback(iframeId,'closedCallback',iframeId);\n\t\tlog(iframeId,'--');\n\t\tdelete settings[iframeId];\n\t}\n\n\tfunction getPagePosition(iframeId){\n\t\tif(null === pagePosition){\n\t\t\tpagePosition = {\n\t\t\t\tx: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,\n\t\t\t\ty: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop\n\t\t\t};\n\t\t\tlog(iframeId,'Get page position: '+pagePosition.x+','+pagePosition.y);\n\t\t}\n\t}\n\n\tfunction setPagePosition(iframeId){\n\t\tif(null !== pagePosition){\n\t\t\twindow.scrollTo(pagePosition.x,pagePosition.y);\n\t\t\tlog(iframeId,'Set page position: '+pagePosition.x+','+pagePosition.y);\n\t\t\tunsetPagePosition();\n\t\t}\n\t}\n\n\tfunction unsetPagePosition(){\n\t\tpagePosition = null;\n\t}\n\n\tfunction resetIFrame(messageData){\n\t\tfunction reset(){\n\t\t\tsetSize(messageData);\n\t\t\ttrigger('reset','reset',messageData.iframe,messageData.id);\n\t\t}\n\n\t\tlog(messageData.id,'Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));\n\t\tgetPagePosition(messageData.id);\n\t\tsyncResize(reset,messageData,'reset');\n\t}\n\n\tfunction setSize(messageData){\n\t\tfunction setDimension(dimension){\n\t\t\tmessageData.iframe.style[dimension] = messageData[dimension] + 'px';\n\t\t\tlog(\n\t\t\t\tmessageData.id,\n\t\t\t\t'IFrame (' + iframeId +\n\t\t\t\t') ' + dimension +\n\t\t\t\t' set to ' + messageData[dimension] + 'px'\n\t\t\t);\n\t\t}\n\n\t\tfunction chkZero(dimension){\n\t\t\t//FireFox sets dimension of hidden iFrames to zero.\n\t\t\t//So if we detect that set up an event to check for\n\t\t\t//when iFrame becomes visible.\n\n\t\t\t/* istanbul ignore next */  //Not testable in PhantomJS\n\t\t\tif (!hiddenCheckEnabled && '0' === messageData[dimension]){\n\t\t\t\thiddenCheckEnabled = true;\n\t\t\t\tlog(iframeId,'Hidden iFrame detected, creating visibility listener');\n\t\t\t\tfixHiddenIFrames();\n\t\t\t}\n\t\t}\n\n\t\tfunction processDimension(dimension){\n\t\t\tsetDimension(dimension);\n\t\t\tchkZero(dimension);\n\t\t}\n\n\t\tvar iframeId = messageData.iframe.id;\n\n\t\tif(settings[iframeId]){\n\t\t\tif( settings[iframeId].sizeHeight) { processDimension('height'); }\n\t\t\tif( settings[iframeId].sizeWidth ) { processDimension('width'); }\n\t\t}\n\t}\n\n\tfunction syncResize(func,messageData,doNotSync){\n\t\t/* istanbul ignore if */  //Not testable in PhantomJS\n\t\tif(doNotSync!==messageData.type && requestAnimationFrame){\n\t\t\tlog(messageData.id,'Requesting animation frame');\n\t\t\trequestAnimationFrame(func);\n\t\t} else {\n\t\t\tfunc();\n\t\t}\n\t}\n\n\tfunction trigger(calleeMsg,msg,iframe,id){\n\t\tfunction postMessageToIFrame(){\n\t\t\tvar target = settings[id].targetOrigin;\n\t\t\tlog(id,'[' + calleeMsg + '] Sending msg to iframe['+id+'] ('+msg+') targetOrigin: '+target);\n\t\t\tiframe.contentWindow.postMessage( msgId + msg, target );\n\t\t}\n\n\t\tfunction iFrameNotFound(){\n\t\t\tinfo(id,'[' + calleeMsg + '] IFrame('+id+') not found');\n\t\t\tif(settings[id]) {\n\t\t\t\tdelete settings[id];\n\t\t\t}\n\t\t}\n\n\t\tfunction chkAndSend(){\n\t\t\tif(iframe && 'contentWindow' in iframe && (null !== iframe.contentWindow)){ //Null test for PhantomJS\n\t\t\t\tpostMessageToIFrame();\n\t\t\t} else {\n\t\t\t\tiFrameNotFound();\n\t\t\t}\n\t\t}\n\n\t\tid = id || iframe.id;\n\n\t\tif(settings[id]) {\n\t\t\tchkAndSend();\n\t\t}\n\n\t}\n\n\tfunction createOutgoingMsg(iframeId){\n\t\treturn iframeId +\n\t\t\t':' + settings[iframeId].bodyMarginV1 +\n\t\t\t':' + settings[iframeId].sizeWidth +\n\t\t\t':' + settings[iframeId].log +\n\t\t\t':' + settings[iframeId].interval +\n\t\t\t':' + settings[iframeId].enablePublicMethods +\n\t\t\t':' + settings[iframeId].autoResize +\n\t\t\t':' + settings[iframeId].bodyMargin +\n\t\t\t':' + settings[iframeId].heightCalculationMethod +\n\t\t\t':' + settings[iframeId].bodyBackground +\n\t\t\t':' + settings[iframeId].bodyPadding +\n\t\t\t':' + settings[iframeId].tolerance +\n\t\t\t':' + settings[iframeId].inPageLinks +\n\t\t\t':' + settings[iframeId].resizeFrom +\n\t\t\t':' + settings[iframeId].widthCalculationMethod;\n\t}\n\n\tfunction setupIFrame(iframe,options){\n\t\tfunction setLimits(){\n\t\t\tfunction addStyle(style){\n\t\t\t\tif ((Infinity !== settings[iframeId][style]) && (0 !== settings[iframeId][style])){\n\t\t\t\t\tiframe.style[style] = settings[iframeId][style] + 'px';\n\t\t\t\t\tlog(iframeId,'Set '+style+' = '+settings[iframeId][style]+'px');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chkMinMax(dimension){\n\t\t\t\tif (settings[iframeId]['min'+dimension]>settings[iframeId]['max'+dimension]){\n\t\t\t\t\tthrow new Error('Value for min'+dimension+' can not be greater than max'+dimension);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchkMinMax('Height');\n\t\t\tchkMinMax('Width');\n\n\t\t\taddStyle('maxHeight');\n\t\t\taddStyle('minHeight');\n\t\t\taddStyle('maxWidth');\n\t\t\taddStyle('minWidth');\n\t\t}\n\n\t\tfunction newId(){\n\t\t\tvar id = ((options && options.id) || defaults.id + count++);\n\t\t\tif  (null!==document.getElementById(id)){\n\t\t\t\tid = id + count++;\n\t\t\t}\n\t\t\treturn id;\n\t\t}\n\n\t\tfunction ensureHasId(iframeId){\n\t\t\tlogId=iframeId;\n\t\t\tif (''===iframeId){\n\t\t\t\tiframe.id = iframeId =  newId();\n\t\t\t\tlogEnabled = (options || {}).log;\n\t\t\t\tlogId=iframeId;\n\t\t\t\tlog(iframeId,'Added missing iframe ID: '+ iframeId +' (' + iframe.src + ')');\n\t\t\t}\n\n\n\t\t\treturn iframeId;\n\t\t}\n\n\t\tfunction setScrolling(){\n\t\t\tlog(iframeId,'IFrame scrolling ' + (settings[iframeId].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId);\n\t\t\tiframe.style.overflow = false === settings[iframeId].scrolling ? 'hidden' : 'auto';\n\t\t\tiframe.scrolling      = false === settings[iframeId].scrolling ? 'no' : 'yes';\n\t\t}\n\n\t\t//The V1 iFrame script expects an int, where as in V2 expects a CSS\n\t\t//string value such as '1px 3em', so if we have an int for V2, set V1=V2\n\t\t//and then convert V2 to a string PX value.\n\t\tfunction setupBodyMarginValues(){\n\t\t\tif (('number'===typeof(settings[iframeId].bodyMargin)) || ('0'===settings[iframeId].bodyMargin)){\n\t\t\t\tsettings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;\n\t\t\t\tsettings[iframeId].bodyMargin   = '' + settings[iframeId].bodyMargin + 'px';\n\t\t\t}\n\t\t}\n\n\t\tfunction checkReset(){\n\t\t\t// Reduce scope of firstRun to function, because IE8's JS execution\n\t\t\t// context stack is borked and this value gets externally\n\t\t\t// changed midway through running this function!!!\n\t\t\tvar\n\t\t\t\tfirstRun           = settings[iframeId].firstRun,\n\t\t\t\tresetRequertMethod = settings[iframeId].heightCalculationMethod in resetRequiredMethods;\n\n\t\t\tif (!firstRun && resetRequertMethod){\n\t\t\t\tresetIFrame({iframe:iframe, height:0, width:0, type:'init'});\n\t\t\t}\n\t\t}\n\n\t\tfunction setupIFrameObject(){\n\t\t\tif(Function.prototype.bind){ //Ignore unpolyfilled IE8.\n\t\t\t\tsettings[iframeId].iframe.iFrameResizer = {\n\n\t\t\t\t\tclose        : closeIFrame.bind(null,settings[iframeId].iframe),\n\n\t\t\t\t\tresize       : trigger.bind(null,'Window resize', 'resize', settings[iframeId].iframe),\n\n\t\t\t\t\tmoveToAnchor : function(anchor){\n\t\t\t\t\t\ttrigger('Move to anchor','moveToAnchor:'+anchor, settings[iframeId].iframe,iframeId);\n\t\t\t\t\t},\n\n\t\t\t\t\tsendMessage  : function(message){\n\t\t\t\t\t\tmessage = JSON.stringify(message);\n\t\t\t\t\t\ttrigger('Send Message','message:'+message, settings[iframeId].iframe,iframeId);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t//We have to call trigger twice, as we can not be sure if all\n\t\t//iframes have completed loading when this code runs. The\n\t\t//event listener also catches the page changing in the iFrame.\n\t\tfunction init(msg){\n\t\t\tfunction iFrameLoaded(){\n\t\t\t\ttrigger('iFrame.onload',msg,iframe);\n\t\t\t\tcheckReset();\n\t\t\t}\n\n\t\t\taddEventListener(iframe,'load',iFrameLoaded);\n\t\t\ttrigger('init',msg,iframe);\n\t\t}\n\n\t\tfunction checkOptions(options){\n\t\t\tif ('object' !== typeof options){\n\t\t\t\tthrow new TypeError('Options is not an object');\n\t\t\t}\n\t\t}\n\n\t\tfunction copyOptions(options){\n\t\t\tfor (var option in defaults) {\n\t\t\t\tif (defaults.hasOwnProperty(option)){\n\t\t\t\t\tsettings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction getTargetOrigin (remoteHost){\n\t\t\treturn ('' === remoteHost || 'file://' === remoteHost) ? '*' : remoteHost;\n\t\t}\n\n\t\tfunction processOptions(options){\n\t\t\toptions = options || {};\n\t\t\tsettings[iframeId] = {\n\t\t\t\tfirstRun\t: true,\n\t\t\t\tiframe\t\t: iframe,\n\t\t\t\tremoteHost\t: iframe.src.split('/').slice(0,3).join('/')\n\t\t\t};\n\n\t\t\tcheckOptions(options);\n\t\t\tcopyOptions(options);\n\n\t\t\tsettings[iframeId].targetOrigin = true === settings[iframeId].checkOrigin ? getTargetOrigin(settings[iframeId].remoteHost) : '*';\n\t\t}\n\n\t\tfunction beenHere(){\n\t\t\treturn (iframeId in settings && 'iFrameResizer' in iframe);\n\t\t}\n\n\t\tvar iframeId = ensureHasId(iframe.id);\n\n\t\tif (!beenHere()){\n\t\t\tprocessOptions(options);\n\t\t\tsetScrolling();\n\t\t\tsetLimits();\n\t\t\tsetupBodyMarginValues();\n\t\t\tinit(createOutgoingMsg(iframeId));\n\t\t\tsetupIFrameObject();\n\t\t} else {\n\t\t\twarn(iframeId,'Ignored iFrame, already setup.');\n\t\t}\n\t}\n\n\tfunction debouce(fn,time){\n\t\tif (null === timer){\n\t\t\ttimer = setTimeout(function(){\n\t\t\t\ttimer = null;\n\t\t\t\tfn();\n\t\t\t}, time);\n\t\t}\n\t}\n\n\t/* istanbul ignore next */  //Not testable in PhantomJS\n\tfunction fixHiddenIFrames(){\n\t\tfunction checkIFrames(){\n\t\t\tfunction checkIFrame(settingId){\n\t\t\t\tfunction chkDimension(dimension){\n\t\t\t\t\treturn '0px' === settings[settingId].iframe.style[dimension];\n\t\t\t\t}\n\n\t\t\t\tfunction isVisible(el) {\n\t\t\t\t\treturn (null !== el.offsetParent);\n\t\t\t\t}\n\n\t\t\t\tif (isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))){\n\t\t\t\t\ttrigger('Visibility change', 'resize', settings[settingId].iframe,settingId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var settingId in settings){\n\t\t\t\tcheckIFrame(settingId);\n\t\t\t}\n\t\t}\n\n\t\tfunction mutationObserved(mutations){\n\t\t\tlog('window','Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);\n\t\t\tdebouce(checkIFrames,16);\n\t\t}\n\n\t\tfunction createMutationObserver(){\n\t\t\tvar\n\t\t\t\ttarget = document.querySelector('body'),\n\n\t\t\t\tconfig = {\n\t\t\t\t\tattributes            : true,\n\t\t\t\t\tattributeOldValue     : false,\n\t\t\t\t\tcharacterData         : true,\n\t\t\t\t\tcharacterDataOldValue : false,\n\t\t\t\t\tchildList             : true,\n\t\t\t\t\tsubtree               : true\n\t\t\t\t},\n\n\t\t\t\tobserver = new MutationObserver(mutationObserved);\n\n\t\t\tobserver.observe(target, config);\n\t\t}\n\n\t\tvar MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n\n\t\tif (MutationObserver) createMutationObserver();\n\t}\n\n\n\tfunction resizeIFrames(event){\n\t\tfunction resize(){\n\t\t\tsendTriggerMsg('Window '+event,'resize');\n\t\t}\n\n\t\tlog('window','Trigger event: '+event);\n\t\tdebouce(resize,16);\n\t}\n\n\t/* istanbul ignore next */  //Not testable in PhantomJS\n\tfunction tabVisible() {\n\t\tfunction resize(){\n\t\t\tsendTriggerMsg('Tab Visable','resize');\n\t\t}\n\n\t\tif('hidden' !== document.visibilityState) {\n\t\t\tlog('document','Trigger event: Visiblity change');\n\t\t\tdebouce(resize,16);\n\t\t}\n\t}\n\n\tfunction sendTriggerMsg(eventName,event){\n\t\tfunction isIFrameResizeEnabled(iframeId) {\n\t\t\treturn\t'parent' === settings[iframeId].resizeFrom &&\n\t\t\t\t\tsettings[iframeId].autoResize &&\n\t\t\t\t\t!settings[iframeId].firstRun;\n\t\t}\n\n\t\tfor (var iframeId in settings){\n\t\t\tif(isIFrameResizeEnabled(iframeId)){\n\t\t\t\ttrigger(eventName,event,document.getElementById(iframeId),iframeId);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setupEventListeners(){\n\t\taddEventListener(window,'message',iFrameListener);\n\n\t\taddEventListener(window,'resize', function(){resizeIFrames('resize');});\n\n\t\taddEventListener(document,'visibilitychange',tabVisible);\n\t\taddEventListener(document,'-webkit-visibilitychange',tabVisible); //Andriod 4.4\n\t\taddEventListener(window,'focusin',function(){resizeIFrames('focus');}); //IE8-9\n\t\taddEventListener(window,'focus',function(){resizeIFrames('focus');});\n\t}\n\n\n\tfunction factory(){\n\t\tfunction init(options,element){\n\t\t\tfunction chkType(){\n\t\t\t\tif(!element.tagName) {\n\t\t\t\t\tthrow new TypeError('Object is not a valid DOM element');\n\t\t\t\t} else if ('IFRAME' !== element.tagName.toUpperCase()) {\n\t\t\t\t\tthrow new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(element) {\n\t\t\t\tchkType();\n\t\t\t\tsetupIFrame(element, options);\n\t\t\t\tiFrames.push(element);\n\t\t\t}\n\t\t}\n\n\t\tvar iFrames;\n\n\t\tsetupRequestAnimationFrame();\n\t\tsetupEventListeners();\n\n\t\treturn function iFrameResizeF(options,target){\n\t\t\tiFrames = []; //Only return iFrames past in on this call\n\n\t\t\tswitch (typeof(target)){\n\t\t\tcase 'undefined':\n\t\t\tcase 'string':\n\t\t\t\tArray.prototype.forEach.call(\n\t\t\t\t\tdocument.querySelectorAll( target || 'iframe' ),\n\t\t\t\t\tinit.bind(undefined, options)\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'object':\n\t\t\t\tinit(options,target);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new TypeError('Unexpected data type ('+typeof(target)+')');\n\t\t\t}\n\n\t\t\treturn iFrames;\n\t\t};\n\t}\n\n\tfunction createJQueryPublicMethod($){\n\t\tif (!$.fn) {\n\t\t\tinfo('','Unable to bind to jQuery, it is not fully loaded.');\n\t\t} else {\n\t\t\t$.fn.iFrameResize = function $iFrameResizeF(options) {\n\t\t\t\tfunction init(index, element) {\n\t\t\t\t\tsetupIFrame(element, options);\n\t\t\t\t}\n\n\t\t\t\treturn this.filter('iframe').each(init).end();\n\t\t\t};\n\t\t}\n\t}\n\n\tif (window.jQuery) { createJQueryPublicMethod(jQuery); }\n\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([],factory);\n\t} else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy\n\t\tmodule.exports = factory();\n\t} else {\n\t\twindow.iFrameResize = window.iFrameResize || factory();\n\t}\n\n})(window || {});\n"]}
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.min.js b/libs/bower_components/iframe-resizer/js/iframeResizer.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..40e2ec4798bc52eb7f1a112e68a4af2c974c8676
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.min.js
@@ -0,0 +1,9 @@
+/*! iFrame Resizer (iframeSizer.min.js ) - v3.5.5 - 2016-06-16
+ *  Desc: Force cross domain iframes to size to content.
+ *  Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame.
+ *  Copyright: (c) 2016 David J. Bradshaw - dave@bradshaw.net
+ *  License: MIT
+ */
+
+!function(a){"use strict";function b(b,c,d){"addEventListener"in a?b.addEventListener(c,d,!1):"attachEvent"in a&&b.attachEvent("on"+c,d)}function c(b,c,d){"removeEventListener"in a?b.removeEventListener(c,d,!1):"detachEvent"in a&&b.detachEvent("on"+c,d)}function d(){var b,c=["moz","webkit","o","ms"];for(b=0;b<c.length&&!N;b+=1)N=a[c[b]+"RequestAnimationFrame"];N||h("setup","RequestAnimationFrame not supported")}function e(b){var c="Host page: "+b;return a.top!==a.self&&(c=a.parentIFrame&&a.parentIFrame.getId?a.parentIFrame.getId()+": "+b:"Nested host page: "+b),c}function f(a){return K+"["+e(a)+"]"}function g(a){return P[a]?P[a].log:G}function h(a,b){k("log",a,b,g(a))}function i(a,b){k("info",a,b,g(a))}function j(a,b){k("warn",a,b,!0)}function k(b,c,d,e){!0===e&&"object"==typeof a.console&&console[b](f(c),d)}function l(d){function e(){function a(){s(V),p(W)}g("Height"),g("Width"),t(a,V,"init")}function f(){var a=U.substr(L).split(":");return{iframe:P[a[0]].iframe,id:a[0],height:a[1],width:a[2],type:a[3]}}function g(a){var b=Number(P[W]["max"+a]),c=Number(P[W]["min"+a]),d=a.toLowerCase(),e=Number(V[d]);h(W,"Checking "+d+" is in range "+c+"-"+b),c>e&&(e=c,h(W,"Set "+d+" to min value")),e>b&&(e=b,h(W,"Set "+d+" to max value")),V[d]=""+e}function k(){function a(){function a(){var a=0,d=!1;for(h(W,"Checking connection is from allowed list of origins: "+c);a<c.length;a++)if(c[a]===b){d=!0;break}return d}function d(){var a=P[W].remoteHost;return h(W,"Checking connection is from: "+a),b===a}return c.constructor===Array?a():d()}var b=d.origin,c=P[W].checkOrigin;if(c&&""+b!="null"&&!a())throw new Error("Unexpected message received from: "+b+" for "+V.iframe.id+". Message was: "+d.data+". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.");return!0}function l(){return K===(""+U).substr(0,L)&&U.substr(L).split(":")[0]in P}function w(){var a=V.type in{"true":1,"false":1,undefined:1};return a&&h(W,"Ignoring init message from meta parent page"),a}function y(a){return U.substr(U.indexOf(":")+J+a)}function z(a){h(W,"MessageCallback passed: {iframe: "+V.iframe.id+", message: "+a+"}"),N("messageCallback",{iframe:V.iframe,message:JSON.parse(a)}),h(W,"--")}function A(){var b=document.body.getBoundingClientRect(),c=V.iframe.getBoundingClientRect();return JSON.stringify({iframeHeight:c.height,iframeWidth:c.width,clientHeight:Math.max(document.documentElement.clientHeight,a.innerHeight||0),clientWidth:Math.max(document.documentElement.clientWidth,a.innerWidth||0),offsetTop:parseInt(c.top-b.top,10),offsetLeft:parseInt(c.left-b.left,10),scrollTop:a.pageYOffset,scrollLeft:a.pageXOffset})}function B(a,b){function c(){u("Send Page Info","pageInfo:"+A(),a,b)}x(c,32)}function C(){function d(b,c){function d(){P[g]?B(P[g].iframe,g):e()}["scroll","resize"].forEach(function(e){h(g,b+e+" listener for sendPageInfo"),c(a,e,d)})}function e(){d("Remove ",c)}function f(){d("Add ",b)}var g=W;f(),P[g].stopPageInfo=e}function D(){P[W]&&P[W].stopPageInfo&&(P[W].stopPageInfo(),delete P[W].stopPageInfo)}function E(){var a=!0;return null===V.iframe&&(j(W,"IFrame ("+V.id+") not found"),a=!1),a}function F(a){var b=a.getBoundingClientRect();return o(W),{x:Math.floor(Number(b.left)+Number(M.x)),y:Math.floor(Number(b.top)+Number(M.y))}}function G(b){function c(){M=g,H(),h(W,"--")}function d(){return{x:Number(V.width)+f.x,y:Number(V.height)+f.y}}function e(){a.parentIFrame?a.parentIFrame["scrollTo"+(b?"Offset":"")](g.x,g.y):j(W,"Unable to scroll to requested position, window.parentIFrame not found")}var f=b?F(V.iframe):{x:0,y:0},g=d();h(W,"Reposition requested from iFrame (offset x:"+f.x+" y:"+f.y+")"),a.top!==a.self?e():c()}function H(){!1!==N("scrollCallback",M)?p(W):q()}function I(b){function c(){var a=F(g);h(W,"Moving to in page link (#"+e+") at x: "+a.x+" y: "+a.y),M={x:a.x,y:a.y},H(),h(W,"--")}function d(){a.parentIFrame?a.parentIFrame.moveToAnchor(e):h(W,"In page link #"+e+" not found and window.parentIFrame not found")}var e=b.split("#")[1]||"",f=decodeURIComponent(e),g=document.getElementById(f)||document.getElementsByName(f)[0];g?c():a.top!==a.self?d():h(W,"In page link #"+e+" not found")}function N(a,b){return m(W,a,b)}function O(){switch(P[W].firstRun&&T(),V.type){case"close":n(V.iframe);break;case"message":z(y(6));break;case"scrollTo":G(!1);break;case"scrollToOffset":G(!0);break;case"pageInfo":B(P[W].iframe,W),C();break;case"pageInfoStop":D();break;case"inPageLink":I(y(9));break;case"reset":r(V);break;case"init":e(),N("initCallback",V.iframe),N("resizedCallback",V);break;default:e(),N("resizedCallback",V)}}function Q(a){var b=!0;return P[a]||(b=!1,j(V.type+" No settings for "+a+". Message was: "+U)),b}function S(){for(var a in P)u("iFrame requested init",v(a),document.getElementById(a),a)}function T(){P[W].firstRun=!1}var U=d.data,V={},W=null;"[iFrameResizerChild]Ready"===U?S():l()?(V=f(),W=R=V.id,!w()&&Q(W)&&(h(W,"Received: "+U),E()&&k()&&O())):i(W,"Ignored: "+U)}function m(a,b,c){var d=null,e=null;if(P[a]){if(d=P[a][b],"function"!=typeof d)throw new TypeError(b+" on iFrame["+a+"] is not a function");e=d(c)}return e}function n(a){var b=a.id;h(b,"Removing iFrame: "+b),a.parentNode.removeChild(a),m(b,"closedCallback",b),h(b,"--"),delete P[b]}function o(b){null===M&&(M={x:void 0!==a.pageXOffset?a.pageXOffset:document.documentElement.scrollLeft,y:void 0!==a.pageYOffset?a.pageYOffset:document.documentElement.scrollTop},h(b,"Get page position: "+M.x+","+M.y))}function p(b){null!==M&&(a.scrollTo(M.x,M.y),h(b,"Set page position: "+M.x+","+M.y),q())}function q(){M=null}function r(a){function b(){s(a),u("reset","reset",a.iframe,a.id)}h(a.id,"Size reset requested by "+("init"===a.type?"host page":"iFrame")),o(a.id),t(b,a,"reset")}function s(a){function b(b){a.iframe.style[b]=a[b]+"px",h(a.id,"IFrame ("+e+") "+b+" set to "+a[b]+"px")}function c(b){H||"0"!==a[b]||(H=!0,h(e,"Hidden iFrame detected, creating visibility listener"),y())}function d(a){b(a),c(a)}var e=a.iframe.id;P[e]&&(P[e].sizeHeight&&d("height"),P[e].sizeWidth&&d("width"))}function t(a,b,c){c!==b.type&&N?(h(b.id,"Requesting animation frame"),N(a)):a()}function u(a,b,c,d){function e(){var e=P[d].targetOrigin;h(d,"["+a+"] Sending msg to iframe["+d+"] ("+b+") targetOrigin: "+e),c.contentWindow.postMessage(K+b,e)}function f(){i(d,"["+a+"] IFrame("+d+") not found"),P[d]&&delete P[d]}function g(){c&&"contentWindow"in c&&null!==c.contentWindow?e():f()}d=d||c.id,P[d]&&g()}function v(a){return a+":"+P[a].bodyMarginV1+":"+P[a].sizeWidth+":"+P[a].log+":"+P[a].interval+":"+P[a].enablePublicMethods+":"+P[a].autoResize+":"+P[a].bodyMargin+":"+P[a].heightCalculationMethod+":"+P[a].bodyBackground+":"+P[a].bodyPadding+":"+P[a].tolerance+":"+P[a].inPageLinks+":"+P[a].resizeFrom+":"+P[a].widthCalculationMethod}function w(a,c){function d(){function b(b){1/0!==P[w][b]&&0!==P[w][b]&&(a.style[b]=P[w][b]+"px",h(w,"Set "+b+" = "+P[w][b]+"px"))}function c(a){if(P[w]["min"+a]>P[w]["max"+a])throw new Error("Value for min"+a+" can not be greater than max"+a)}c("Height"),c("Width"),b("maxHeight"),b("minHeight"),b("maxWidth"),b("minWidth")}function e(){var a=c&&c.id||S.id+F++;return null!==document.getElementById(a)&&(a+=F++),a}function f(b){return R=b,""===b&&(a.id=b=e(),G=(c||{}).log,R=b,h(b,"Added missing iframe ID: "+b+" ("+a.src+")")),b}function g(){h(w,"IFrame scrolling "+(P[w].scrolling?"enabled":"disabled")+" for "+w),a.style.overflow=!1===P[w].scrolling?"hidden":"auto",a.scrolling=!1===P[w].scrolling?"no":"yes"}function i(){("number"==typeof P[w].bodyMargin||"0"===P[w].bodyMargin)&&(P[w].bodyMarginV1=P[w].bodyMargin,P[w].bodyMargin=""+P[w].bodyMargin+"px")}function k(){var b=P[w].firstRun,c=P[w].heightCalculationMethod in O;!b&&c&&r({iframe:a,height:0,width:0,type:"init"})}function l(){Function.prototype.bind&&(P[w].iframe.iFrameResizer={close:n.bind(null,P[w].iframe),resize:u.bind(null,"Window resize","resize",P[w].iframe),moveToAnchor:function(a){u("Move to anchor","moveToAnchor:"+a,P[w].iframe,w)},sendMessage:function(a){a=JSON.stringify(a),u("Send Message","message:"+a,P[w].iframe,w)}})}function m(c){function d(){u("iFrame.onload",c,a),k()}b(a,"load",d),u("init",c,a)}function o(a){if("object"!=typeof a)throw new TypeError("Options is not an object")}function p(a){for(var b in S)S.hasOwnProperty(b)&&(P[w][b]=a.hasOwnProperty(b)?a[b]:S[b])}function q(a){return""===a||"file://"===a?"*":a}function s(b){b=b||{},P[w]={firstRun:!0,iframe:a,remoteHost:a.src.split("/").slice(0,3).join("/")},o(b),p(b),P[w].targetOrigin=!0===P[w].checkOrigin?q(P[w].remoteHost):"*"}function t(){return w in P&&"iFrameResizer"in a}var w=f(a.id);t()?j(w,"Ignored iFrame, already setup."):(s(c),g(),d(),i(),m(v(w)),l())}function x(a,b){null===Q&&(Q=setTimeout(function(){Q=null,a()},b))}function y(){function b(){function a(a){function b(b){return"0px"===P[a].iframe.style[b]}function c(a){return null!==a.offsetParent}c(P[a].iframe)&&(b("height")||b("width"))&&u("Visibility change","resize",P[a].iframe,a)}for(var b in P)a(b)}function c(a){h("window","Mutation observed: "+a[0].target+" "+a[0].type),x(b,16)}function d(){var a=document.querySelector("body"),b={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0},d=new e(c);d.observe(a,b)}var e=a.MutationObserver||a.WebKitMutationObserver;e&&d()}function z(a){function b(){B("Window "+a,"resize")}h("window","Trigger event: "+a),x(b,16)}function A(){function a(){B("Tab Visable","resize")}"hidden"!==document.visibilityState&&(h("document","Trigger event: Visiblity change"),x(a,16))}function B(a,b){function c(a){return"parent"===P[a].resizeFrom&&P[a].autoResize&&!P[a].firstRun}for(var d in P)c(d)&&u(a,b,document.getElementById(d),d)}function C(){b(a,"message",l),b(a,"resize",function(){z("resize")}),b(document,"visibilitychange",A),b(document,"-webkit-visibilitychange",A),b(a,"focusin",function(){z("focus")}),b(a,"focus",function(){z("focus")})}function D(){function a(a,c){function d(){if(!c.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==c.tagName.toUpperCase())throw new TypeError("Expected <IFRAME> tag, found <"+c.tagName+">")}c&&(d(),w(c,a),b.push(c))}var b;return d(),C(),function(c,d){switch(b=[],typeof d){case"undefined":case"string":Array.prototype.forEach.call(document.querySelectorAll(d||"iframe"),a.bind(void 0,c));break;case"object":a(c,d);break;default:throw new TypeError("Unexpected data type ("+typeof d+")")}return b}}function E(a){a.fn?a.fn.iFrameResize=function(a){function b(b,c){w(c,a)}return this.filter("iframe").each(b).end()}:i("","Unable to bind to jQuery, it is not fully loaded.")}var F=0,G=!1,H=!1,I="message",J=I.length,K="[iFrameSizer]",L=K.length,M=null,N=a.requestAnimationFrame,O={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},P={},Q=null,R="Host Page",S={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,tolerance:0,widthCalculationMethod:"scroll",closedCallback:function(){},initCallback:function(){},messageCallback:function(){j("MessageCallback function not defined")},resizedCallback:function(){},scrollCallback:function(){return!0}};a.jQuery&&E(jQuery),"function"==typeof define&&define.amd?define([],D):"object"==typeof module&&"object"==typeof module.exports?module.exports=D():a.iFrameResize=a.iFrameResize||D()}(window||{});
+//# sourceMappingURL=iframeResizer.map
\ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/index.js b/libs/bower_components/iframe-resizer/js/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9cb2845e2540288a4f29026e9466f6a2f38737a
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/index.js
@@ -0,0 +1,2 @@
+exports.iframeResizer = require('./iframeResizer');
+exports.iframeResizerContentWindow = require('./iframeResizer.contentWindow');
diff --git a/libs/bower_components/iframe-resizer/karma.conf.js b/libs/bower_components/iframe-resizer/karma.conf.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e558511e65f88bb8a5cb5c27a3ba25ad729a817
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/karma.conf.js
@@ -0,0 +1,92 @@
+// Karma configuration
+// Generated on Tue Aug 25 2015 12:11:48 GMT+0100 (BST)
+
+module.exports = function(config) {
+  config.set({
+
+    // base path that will be used to resolve all patterns (eg. files, exclude)
+    basePath: '',
+
+
+    // frameworks to use
+    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+    frameworks: ['jasmine-jquery', 'jasmine', 'requirejs'],
+
+    // Karma will require() these plugins
+    /*
+    plugins: [
+      'logcapture',
+      'karma-verbose-summary-reporter',
+      'karma-jasmine',
+      'karma-chrome-launcher'
+    ],
+    */
+
+    // list of files / patterns to load in the browser
+    files: [
+      'test-main.js',
+      'spec/lib/*.js',
+      'js/ie8.polyfils.min.js',
+      {pattern: 'js/*.js', included: false},
+      {pattern: 'src/*.js', included: false},
+      {pattern: 'example/*.html', included: false},
+      {pattern: 'spec/*Spec.js', included: false},
+      {pattern: 'spec/resources/*', included: false},
+      {pattern: 'spec/javascripts/fixtures/*.html', included: false}
+    ],
+
+
+    // list of files to exclude
+    exclude: [
+    ],
+
+
+    // preprocess matching files before serving them to the browser
+    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+    preprocessors: {
+      'src/*.js': ['coverage']
+    },
+
+    coverageReporter: {
+      type : 'html',
+      dir : 'coverage/'
+    },
+
+    client: {
+      captureConsole: true
+    },
+
+
+    // test results reporter to use
+    // possible values: 'dots', 'progress'
+    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+    reporters: ['logcapture', 'progress', 'verbose-summary', 'coverage'],
+
+
+    // web server port
+    port: 9876,
+
+
+    // enable / disable colors in the output (reporters and logs)
+    colors: true,
+
+
+    // level of logging
+    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+    logLevel: config.LOG_INFO,
+
+
+    // enable / disable watching file and executing tests whenever any file changes
+    autoWatch: true,
+
+
+    // start these browsers
+    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+    browsers: [ ], //'Chrome', 'Firefox', 'Safari', 'PhantomJS'
+
+    // Continuous Integration mode
+    // if true, Karma captures browsers, runs the tests and exits
+    singleRun: true
+
+  })
+}
diff --git a/libs/bower_components/iframe-resizer/src/ie8.polyfils.js b/libs/bower_components/iframe-resizer/src/ie8.polyfils.js
new file mode 100644
index 0000000000000000000000000000000000000000..43dbb13d21d5a6408d727d373526fd5bcfe2c429
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/src/ie8.polyfils.js
@@ -0,0 +1,64 @@
+/*
+ * IE8 Polyfils for iframeResizer.js
+ *
+ * Public domain code - Mozilla Contributors
+ * https://developer.mozilla.org/
+ */
+
+ if (!Array.prototype.forEach){
+	Array.prototype.forEach = function(fun /*, thisArg */){
+		"use strict";
+		if (this === void 0 || this === null || typeof fun !== "function") throw new TypeError();
+
+		var
+			t = Object(this),
+			len = t.length >>> 0,
+			thisArg = arguments.length >= 2 ? arguments[1] : void 0;
+
+		for (var i = 0; i < len; i++)
+			if (i in t)
+				fun.call(thisArg, t[i], i, t);
+	};
+}
+
+
+if (!Function.prototype.bind) {
+  Function.prototype.bind = function(oThis) {
+    if (typeof this !== 'function') {
+      // closest thing possible to the ECMAScript 5
+      // internal IsCallable function
+      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+    }
+
+    var aArgs   = Array.prototype.slice.call(arguments, 1),
+        fToBind = this,
+        fNOP    = function() {},
+        fBound  = function() {
+          return fToBind.apply(this instanceof fNOP ? this : oThis,
+                 aArgs.concat(Array.prototype.slice.call(arguments)));
+        };
+
+    fNOP.prototype = this.prototype;
+    fBound.prototype = new fNOP();
+
+    return fBound;
+  };
+}
+
+if (!Array.prototype.forEach) {
+  Array.prototype.forEach = function(callback, thisArg) {
+    if (this === null) throw new TypeError(' this is null or not defined');
+    if (typeof callback !== 'function') throw new TypeError(callback + ' is not a function');
+
+    var
+      O = Object(this),
+      len = O.length >>> 0;
+
+    for (var k=0 ; k < len ; k++) {
+      if (k in O)
+        callback.call(thisArg, O[k], k, O);
+    }
+  };
+}
+
+
diff --git a/libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js b/libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js
new file mode 100644
index 0000000000000000000000000000000000000000..02d2602d8d786168b513243d086726cd665edd5b
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js
@@ -0,0 +1,1123 @@
+/*
+ * File: iframeResizer.contentWindow.js
+ * Desc: Include this file in any page being loaded into an iframe
+ *       to force the iframe to resize to the content size.
+ * Requires: iframeResizer.js on host page.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Ian Caunce - ian@hallnet.co.uk
+ */
+
+
+;(function(window, undefined) {
+	'use strict';
+
+	var
+		autoResize            = true,
+		base                  = 10,
+		bodyBackground        = '',
+		bodyMargin            = 0,
+		bodyMarginStr         = '',
+		bodyObserver          = null,
+		bodyPadding           = '',
+		calculateWidth        = false,
+		doubleEventList       = {'resize':1,'click':1},
+		eventCancelTimer      = 128,
+		firstRun              = true,
+		height                = 1,
+		heightCalcModeDefault = 'bodyOffset',
+		heightCalcMode        = heightCalcModeDefault,
+		initLock              = true,
+		initMsg               = '',
+		inPageLinks           = {},
+		interval              = 32,
+		intervalTimer         = null,
+		logging               = false,
+		msgID                 = '[iFrameSizer]',  //Must match host page msg ID
+		msgIdLen              = msgID.length,
+		myID                  = '',
+		observer              = null,
+		resetRequiredMethods  = {max:1,min:1,bodyScroll:1,documentElementScroll:1},
+		resizeFrom            = 'child',
+		sendPermit            = true,
+		target                = window.parent,
+		targetOriginDefault   = '*',
+		tolerance             = 0,
+		triggerLocked         = false,
+		triggerLockedTimer    = null,
+		throttledTimer        = 16,
+		width                 = 1,
+		widthCalcModeDefault  = 'scroll',
+		widthCalcMode         = widthCalcModeDefault,
+		win                   = window,
+		messageCallback       = function(){ warn('MessageCallback function not defined'); },
+		readyCallback         = function(){},
+		pageInfoCallback      = function(){},
+		customCalcMethods     = {
+			height: function(){
+				warn('Custom height calculation function not defined');
+				return document.documentElement.offsetHeight;
+			}, 
+			width: function(){
+				warn('Custom width calculation function not defined');
+				return document.body.scrollWidth;
+			}
+		};
+
+
+	function addEventListener(el,evt,func){
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if ('addEventListener' in window){
+			el.addEventListener(evt,func, false);
+		} else if ('attachEvent' in window){ //IE
+			el.attachEvent('on'+evt,func);
+		}
+	}
+
+	function removeEventListener(el,evt,func){
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if ('removeEventListener' in window){
+			el.removeEventListener(evt,func, false);
+		} else if ('detachEvent' in window){ //IE
+			el.detachEvent('on'+evt,func);
+		}
+	}
+
+	function capitalizeFirstLetter(string) {
+		return string.charAt(0).toUpperCase() + string.slice(1);
+	}
+
+	//Based on underscore.js
+	function throttle(func) {
+		var
+			context, args, result,
+			timeout = null,
+			previous = 0,
+			later = function() {
+				previous = getNow();
+				timeout = null;
+				result = func.apply(context, args);
+				if (!timeout) {
+					context = args = null;
+				}
+			};
+
+		return function() {
+			var now = getNow();
+
+			if (!previous) {
+				previous = now;
+			}
+
+			var remaining = throttledTimer - (now - previous);
+
+			context = this;
+			args = arguments;
+
+			if (remaining <= 0 || remaining > throttledTimer) {
+				if (timeout) {
+					clearTimeout(timeout);
+					timeout = null;
+				}
+
+				previous = now;
+				result = func.apply(context, args);
+
+				if (!timeout) {
+					context = args = null;
+				}
+
+			} else if (!timeout) {
+				timeout = setTimeout(later, remaining);
+			}
+
+			return result;
+		};
+	}
+
+	var getNow = Date.now || function() {
+		/* istanbul ignore next */ // Not testable in PhantonJS
+		return new Date().getTime();
+	};
+
+	function formatLogMsg(msg){
+		return msgID + '[' + myID + ']' + ' ' + msg;
+	}
+
+	function log(msg){
+		if (logging && ('object' === typeof window.console)){
+			console.log(formatLogMsg(msg));
+		}
+	}
+
+	function warn(msg){
+		if ('object' === typeof window.console){
+			console.warn(formatLogMsg(msg));
+		}
+	}
+
+
+	function init(){
+		readDataFromParent();
+		log('Initialising iFrame ('+location.href+')');
+		readDataFromPage();
+		setMargin();
+		setBodyStyle('background',bodyBackground);
+		setBodyStyle('padding',bodyPadding);
+		injectClearFixIntoBodyElement();
+		checkHeightMode();
+		checkWidthMode();
+		stopInfiniteResizingOfIFrame();
+		setupPublicMethods();
+		startEventListeners();
+		inPageLinks = setupInPageLinks();
+		sendSize('init','Init message from host page');
+		readyCallback();
+	}
+
+	function readDataFromParent(){
+
+		function strBool(str){
+			return 'true' === str ? true : false;
+		}
+
+		var data = initMsg.substr(msgIdLen).split(':');
+
+		myID               = data[0];
+		bodyMargin         = (undefined !== data[1]) ? Number(data[1])   : bodyMargin; //For V1 compatibility
+		calculateWidth     = (undefined !== data[2]) ? strBool(data[2])  : calculateWidth;
+		logging            = (undefined !== data[3]) ? strBool(data[3])  : logging;
+		interval           = (undefined !== data[4]) ? Number(data[4])   : interval;
+		autoResize         = (undefined !== data[6]) ? strBool(data[6])  : autoResize;
+		bodyMarginStr      = data[7];
+		heightCalcMode     = (undefined !== data[8]) ? data[8]           : heightCalcMode;
+		bodyBackground     = data[9];
+		bodyPadding        = data[10];
+		tolerance          = (undefined !== data[11]) ? Number(data[11]) : tolerance;
+		inPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;
+		resizeFrom         = (undefined !== data[13]) ? data[13]         : resizeFrom;
+		widthCalcMode      = (undefined !== data[14]) ? data[14]         : widthCalcMode;
+	}
+
+	function readDataFromPage(){
+		function readData(){
+			var data = window.iFrameResizer;
+
+			log('Reading data from page: ' + JSON.stringify(data));
+
+			messageCallback     = ('messageCallback'         in data) ? data.messageCallback         : messageCallback;
+			readyCallback       = ('readyCallback'           in data) ? data.readyCallback           : readyCallback;
+			targetOriginDefault = ('targetOrigin'            in data) ? data.targetOrigin            : targetOriginDefault;
+			heightCalcMode      = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;
+			widthCalcMode       = ('widthCalculationMethod'  in data) ? data.widthCalculationMethod  : widthCalcMode;
+		}
+
+		function setupCustomCalcMethods(calcMode, calcFunc){
+			if ('function' === typeof calcMode) {
+				log('Setup custom ' + calcFunc + 'CalcMethod');
+				customCalcMethods[calcFunc] = calcMode;
+				calcMode = 'custom';
+			}
+
+			return calcMode;
+		}
+
+		if(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {
+			readData();
+			heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
+			widthCalcMode  = setupCustomCalcMethods(widthCalcMode,  'width');
+		}
+
+		log('TargetOrigin for parent set to: ' + targetOriginDefault);
+	}
+
+
+	function chkCSS(attr,value){
+		if (-1 !== value.indexOf('-')){
+			warn('Negative CSS value ignored for '+attr);
+			value='';
+		}
+		return value;
+	}
+
+	function setBodyStyle(attr,value){
+		if ((undefined !== value) && ('' !== value) && ('null' !== value)){
+			document.body.style[attr] = value;
+			log('Body '+attr+' set to "'+value+'"');
+		}
+	}
+
+	function setMargin(){
+		//If called via V1 script, convert bodyMargin from int to str
+		if (undefined === bodyMarginStr){
+			bodyMarginStr = bodyMargin+'px';
+		}
+
+		setBodyStyle('margin',chkCSS('margin',bodyMarginStr));
+	}
+
+	function stopInfiniteResizingOfIFrame(){
+		document.documentElement.style.height = '';
+		document.body.style.height = '';
+		log('HTML & body height set to "auto"');
+	}
+
+
+	function manageTriggerEvent(options){
+		function handleEvent(){
+			sendSize(options.eventName,options.eventType);
+		}
+
+		var listener = {
+			add:    function(eventName){
+				addEventListener(window,eventName,handleEvent);
+			},
+			remove: function(eventName){
+				removeEventListener(window,eventName,handleEvent);
+			}
+		};
+
+		if(options.eventNames && Array.prototype.map){
+			options.eventName = options.eventNames[0];
+			options.eventNames.map(listener[options.method]);
+		} else {
+			listener[options.method](options.eventName);
+		}
+
+		log(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);
+	}
+
+	function manageEventListeners(method){
+		manageTriggerEvent({method:method, eventType: 'Animation Start',           eventNames: ['animationstart','webkitAnimationStart'] });
+		manageTriggerEvent({method:method, eventType: 'Animation Iteration',       eventNames: ['animationiteration','webkitAnimationIteration'] });
+		manageTriggerEvent({method:method, eventType: 'Animation End',             eventNames: ['animationend','webkitAnimationEnd'] });
+		manageTriggerEvent({method:method, eventType: 'Input',                     eventName:  'input' });
+		manageTriggerEvent({method:method, eventType: 'Mouse Up',                  eventName:  'mouseup' });
+		manageTriggerEvent({method:method, eventType: 'Mouse Down',                eventName:  'mousedown' });
+		manageTriggerEvent({method:method, eventType: 'Orientation Change',        eventName:  'orientationchange' });
+		manageTriggerEvent({method:method, eventType: 'Print',                     eventName:  ['afterprint', 'beforeprint'] });
+		manageTriggerEvent({method:method, eventType: 'Ready State Change',        eventName:  'readystatechange' });
+		manageTriggerEvent({method:method, eventType: 'Touch Start',               eventName:  'touchstart' });
+		manageTriggerEvent({method:method, eventType: 'Touch End',                 eventName:  'touchend' });
+		manageTriggerEvent({method:method, eventType: 'Touch Cancel',              eventName:  'touchcancel' });
+		manageTriggerEvent({method:method, eventType: 'Transition Start',          eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });
+		manageTriggerEvent({method:method, eventType: 'Transition Iteration',      eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });
+		manageTriggerEvent({method:method, eventType: 'Transition End',            eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
+		if('child' === resizeFrom){
+			manageTriggerEvent({method:method, eventType: 'IFrame Resized',        eventName:  'resize' });
+		}
+	}
+
+	function checkCalcMode(calcMode,calcModeDefault,modes,type){
+		if (calcModeDefault !== calcMode){
+			if (!(calcMode in modes)){
+				warn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');
+				calcMode=calcModeDefault;
+			}
+			log(type+' calculation method set to "'+calcMode+'"');
+		}
+
+		return calcMode;
+	}
+
+	function checkHeightMode(){
+		heightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');
+	}
+
+	function checkWidthMode(){
+		widthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');
+	}
+
+	function startEventListeners(){
+		if ( true === autoResize ) {
+			manageEventListeners('add');
+			setupMutationObserver();
+		}
+		else {
+			log('Auto Resize disabled');
+		}
+	}
+
+	function stopMsgsToParent(){
+		log('Disable outgoing messages');
+		sendPermit = false;
+	}
+
+	function removeMsgListener(){
+		log('Remove event listener: Message');
+		removeEventListener(window, 'message', receiver);
+	}
+
+	function disconnectMutationObserver(){
+		if (null !== bodyObserver){
+			/* istanbul ignore next */ // Not testable in PhantonJS
+			bodyObserver.disconnect();
+		}
+	}
+
+	function stopEventListeners(){
+		manageEventListeners('remove');
+		disconnectMutationObserver();
+		clearInterval(intervalTimer);
+	}
+
+	function teardown(){
+		stopMsgsToParent();
+		removeMsgListener();
+		if (true === autoResize) stopEventListeners();
+	}
+
+	function injectClearFixIntoBodyElement(){
+		var clearFix = document.createElement('div');
+		clearFix.style.clear   = 'both';
+		clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.
+		document.body.appendChild(clearFix);
+	}
+
+	function setupInPageLinks(){
+
+		function getPagePosition (){
+			return {
+				x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+				y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+			};
+		}
+
+		function getElementPosition(el){
+			var
+				elPosition   = el.getBoundingClientRect(),
+				pagePosition = getPagePosition();
+
+			return {
+				x: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),
+				y: parseInt(elPosition.top,10)  + parseInt(pagePosition.y,10)
+			};
+		}
+
+		function findTarget(location){
+			function jumpToTarget(target){
+				var jumpPosition = getElementPosition(target);
+
+				log('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+				sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+			}
+
+			var
+				hash     = location.split('#')[1] || location, //Remove # if present
+				hashData = decodeURIComponent(hash),
+				target   = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+			if (undefined !== target){
+				jumpToTarget(target);
+			} else {
+				log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
+				sendMsg(0,0,'inPageLink','#'+hash);
+			}
+		}
+
+		function checkLocationHash(){
+			if ('' !== location.hash && '#' !== location.hash){
+				findTarget(location.href);
+			}
+		}
+
+		function bindAnchors(){
+			function setupLink(el){
+				function linkClicked(e){
+					e.preventDefault();
+
+					/*jshint validthis:true */
+					findTarget(this.getAttribute('href'));
+				}
+
+				if ('#' !== el.getAttribute('href')){
+					addEventListener(el,'click',linkClicked);
+				}
+			}
+
+			Array.prototype.forEach.call( document.querySelectorAll( 'a[href^="#"]' ), setupLink );
+		}
+
+		function bindLocationHash(){
+			addEventListener(window,'hashchange',checkLocationHash);
+		}
+
+		function initCheck(){ //check if page loaded with location hash after init resize
+			setTimeout(checkLocationHash,eventCancelTimer);
+		}
+
+		function enableInPageLinks(){
+			/* istanbul ignore else */ // Not testable in phantonJS
+			if(Array.prototype.forEach && document.querySelectorAll){
+				log('Setting up location.hash handlers');
+				bindAnchors();
+				bindLocationHash();
+				initCheck();
+			} else {
+				warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
+			}
+		}
+
+		if(inPageLinks.enable){
+			enableInPageLinks();
+		} else {
+			log('In page linking not enabled');
+		}
+
+		return {
+			findTarget:findTarget
+		};
+	}
+
+	function setupPublicMethods(){
+		log('Enable public methods');
+
+		win.parentIFrame = {
+
+			autoResize: function autoResizeF(resize){
+				if (true === resize && false === autoResize) {
+					autoResize=true;
+					startEventListeners();
+					//sendSize('autoResize','Auto Resize enabled');
+				} else if (false === resize && true === autoResize) {
+					autoResize=false;
+					stopEventListeners();
+				}
+
+				return autoResize;
+			},
+
+			close: function closeF(){
+				sendMsg(0,0,'close');
+				teardown();
+			},
+
+			getId: function getIdF(){
+				return myID;
+			},
+
+			getPageInfo: function getPageInfoF(callback){
+				if ('function' === typeof callback){
+					pageInfoCallback = callback;
+					sendMsg(0,0,'pageInfo');
+				} else {
+					pageInfoCallback = function(){};
+					sendMsg(0,0,'pageInfoStop');
+				}
+			},
+
+			moveToAnchor: function moveToAnchorF(hash){
+				inPageLinks.findTarget(hash);
+			},
+
+			reset: function resetF(){
+				resetIFrame('parentIFrame.reset');
+			},
+
+			scrollTo: function scrollToF(x,y){
+				sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
+			},
+
+			scrollToOffset: function scrollToF(x,y){
+				sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+			},
+
+			sendMessage: function sendMessageF(msg,targetOrigin){
+				sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
+			},
+
+			setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){
+				heightCalcMode = heightCalculationMethod;
+				checkHeightMode();
+			},
+
+			setWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){
+				widthCalcMode = widthCalculationMethod;
+				checkWidthMode();
+			},
+
+			setTargetOrigin: function setTargetOriginF(targetOrigin){
+				log('Set targetOrigin: '+targetOrigin);
+				targetOriginDefault = targetOrigin;
+			},
+
+			size: function sizeF(customHeight, customWidth){
+				var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
+				//lockTrigger();
+				sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
+			}
+		};
+	}
+
+	function initInterval(){
+		if ( 0 !== interval ){
+			log('setInterval: '+interval+'ms');
+			intervalTimer = setInterval(function(){
+				sendSize('interval','setInterval: '+interval);
+			},Math.abs(interval));
+		}
+	}
+
+	/* istanbul ignore next */  //Not testable in PhantomJS
+	function setupBodyMutationObserver(){
+		function addImageLoadListners(mutation) {
+			function addImageLoadListener(element){
+				if (false === element.complete) {
+					log('Attach listeners to ' + element.src);
+					element.addEventListener('load', imageLoaded, false);
+					element.addEventListener('error', imageError, false);
+					elements.push(element);
+				}
+			}
+
+			if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
+				addImageLoadListener(mutation.target);
+			} else if (mutation.type === 'childList'){
+				Array.prototype.forEach.call(
+					mutation.target.querySelectorAll('img'),
+					addImageLoadListener
+				);
+			}
+		}
+
+		function removeFromArray(element){
+			elements.splice(elements.indexOf(element),1);
+		}
+
+		function removeImageLoadListener(element){
+			log('Remove listeners from ' + element.src);
+			element.removeEventListener('load', imageLoaded, false);
+			element.removeEventListener('error', imageError, false);
+			removeFromArray(element);
+		}
+
+		function imageEventTriggered(event,type,typeDesc){
+			removeImageLoadListener(event.target);
+			sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);
+		}
+
+		function imageLoaded(event) {
+			imageEventTriggered(event,'imageLoad','Image loaded');
+		}
+
+		function imageError(event) {
+			imageEventTriggered(event,'imageLoadFailed','Image load failed');
+		}
+
+		function mutationObserved(mutations) {
+			sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
+
+			//Deal with WebKit asyncing image loading when tags are injected into the page
+			mutations.forEach(addImageLoadListners);
+		}
+
+		function createMutationObserver(){
+			var
+				target = document.querySelector('body'),
+
+				config = {
+					attributes            : true,
+					attributeOldValue     : false,
+					characterData         : true,
+					characterDataOldValue : false,
+					childList             : true,
+					subtree               : true
+				};
+
+			observer = new MutationObserver(mutationObserved);
+
+			log('Create body MutationObserver');
+			observer.observe(target, config);
+
+			return observer;
+		}
+
+		var
+			elements         = [],
+			MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
+			observer         = createMutationObserver();
+
+		return {
+			disconnect: function (){
+				if ('disconnect' in observer){
+					log('Disconnect body MutationObserver');
+					observer.disconnect();
+					elements.forEach(removeImageLoadListener);
+				}
+			}
+		};
+	}
+
+	function setupMutationObserver(){
+		var	forceIntervalTimer = 0 > interval;
+
+		/* istanbul ignore if */ // Not testable in PhantomJS
+		if (window.MutationObserver || window.WebKitMutationObserver){
+			if (forceIntervalTimer) {
+				initInterval();
+			} else {
+				bodyObserver = setupBodyMutationObserver();
+			}
+		} else {
+			log('MutationObserver not supported in this browser!');
+			initInterval();
+		}
+	}
+
+
+	// document.documentElement.offsetHeight is not reliable, so
+	// we have to jump through hoops to get a better value.
+	function getComputedStyle(prop,el) {
+		/* istanbul ignore next */  //Not testable in PhantomJS
+		function convertUnitsToPxForIE8(value) {
+			var PIXEL = /^\d+(px)?$/i;
+
+			if (PIXEL.test(value)) {
+				return parseInt(value,base);
+			}
+
+			var
+				style = el.style.left,
+				runtimeStyle = el.runtimeStyle.left;
+
+			el.runtimeStyle.left = el.currentStyle.left;
+			el.style.left = value || 0;
+			value = el.style.pixelLeft;
+			el.style.left = style;
+			el.runtimeStyle.left = runtimeStyle;
+
+			return value;
+		}
+
+		var retVal = 0;
+		el =  el || document.body;
+
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
+			retVal = document.defaultView.getComputedStyle(el, null);
+			retVal = (null !== retVal) ? retVal[prop] : 0;
+		} else {//IE8
+			retVal =  convertUnitsToPxForIE8(el.currentStyle[prop]);
+		}
+
+		return parseInt(retVal,base);
+	}
+
+	function chkEventThottle(timer){
+		if(timer > throttledTimer/2){
+			throttledTimer = 2*timer;
+			log('Event throttle increased to ' + throttledTimer + 'ms');
+		}
+	}
+
+	//Idea from https://github.com/guardian/iframe-messenger
+	function getMaxElement(side,elements) {
+		var
+			elementsLength = elements.length,
+			elVal          = 0,
+			maxVal         = 0,
+			Side           = capitalizeFirstLetter(side),
+			timer          = getNow();
+
+		for (var i = 0; i < elementsLength; i++) {
+			elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);
+			if (elVal > maxVal) {
+				maxVal = elVal;
+			}
+		}
+
+		timer = getNow() - timer;
+
+		log('Parsed '+elementsLength+' HTML elements');
+		log('Element position calculated in ' + timer + 'ms');
+
+		chkEventThottle(timer);
+
+		return maxVal;
+	}
+
+	function getAllMeasurements(dimention){
+		return [
+			dimention.bodyOffset(),
+			dimention.bodyScroll(),
+			dimention.documentElementOffset(),
+			dimention.documentElementScroll()
+		];
+	}
+
+	function getTaggedElements(side,tag){
+		function noTaggedElementsFound(){
+			warn('No tagged elements ('+tag+') found on page');
+			return height; //current height
+		}
+
+		var elements = document.querySelectorAll('['+tag+']');
+
+		return 0 === elements.length ?  noTaggedElementsFound() : getMaxElement(side,elements);
+	}
+
+	function getAllElements(){
+		return document.querySelectorAll('body *');
+	}
+
+	var
+		getHeight = {
+			bodyOffset: function getBodyOffsetHeight(){
+				return  document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
+			},
+
+			offset: function(){
+				return getHeight.bodyOffset(); //Backwards compatability
+			},
+
+			bodyScroll: function getBodyScrollHeight(){
+				return document.body.scrollHeight;
+			},
+
+			custom: function getCustomWidth(){
+				return customCalcMethods.height();
+			},
+
+			documentElementOffset: function getDEOffsetHeight(){
+				return document.documentElement.offsetHeight;
+			},
+
+			documentElementScroll: function getDEScrollHeight(){
+				return document.documentElement.scrollHeight;
+			},
+
+			max: function getMaxHeight(){
+				return Math.max.apply(null,getAllMeasurements(getHeight));
+			},
+
+			min: function getMinHeight(){
+				return Math.min.apply(null,getAllMeasurements(getHeight));
+			},
+
+			grow: function growHeight(){
+				return getHeight.max(); //Run max without the forced downsizing
+			},
+
+			lowestElement: function getBestHeight(){
+				return Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));
+			},
+
+			taggedElement: function getTaggedElementsHeight(){
+				return getTaggedElements('bottom','data-iframe-height');
+			}
+		},
+
+		getWidth = {
+			bodyScroll: function getBodyScrollWidth(){
+				return document.body.scrollWidth;
+			},
+
+			bodyOffset: function getBodyOffsetWidth(){
+				return document.body.offsetWidth;
+			},
+
+			custom: function getCustomWidth(){
+				return customCalcMethods.width();
+			},
+
+			documentElementScroll: function getDEScrollWidth(){
+				return document.documentElement.scrollWidth;
+			},
+
+			documentElementOffset: function getDEOffsetWidth(){
+				return document.documentElement.offsetWidth;
+			},
+
+			scroll: function getMaxWidth(){
+				return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());
+			},
+
+			max: function getMaxWidth(){
+				return Math.max.apply(null,getAllMeasurements(getWidth));
+			},
+
+			min: function getMinWidth(){
+				return Math.min.apply(null,getAllMeasurements(getWidth));
+			},
+
+			rightMostElement: function rightMostElement(){
+				return getMaxElement('right', getAllElements());
+			},
+
+			taggedElement: function getTaggedElementsWidth(){
+				return getTaggedElements('right', 'data-iframe-width');
+			}
+		};
+
+
+	function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){
+
+		function resizeIFrame(){
+			height = currentHeight;
+			width  = currentWidth;
+
+			sendMsg(height,width,triggerEvent);
+		}
+
+		function isSizeChangeDetected(){
+			function checkTolarance(a,b){
+				var retVal = Math.abs(a-b) <= tolerance;
+				return !retVal;
+			}
+
+			currentHeight = (undefined !== customHeight)  ? customHeight : getHeight[heightCalcMode]();
+			currentWidth  = (undefined !== customWidth )  ? customWidth  : getWidth[widthCalcMode]();
+
+			return	checkTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));
+		}
+
+		function isForceResizableEvent(){
+			return !(triggerEvent in {'init':1,'interval':1,'size':1});
+		}
+
+		function isForceResizableCalcMode(){
+			return (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);
+		}
+
+		function logIgnored(){
+			log('No change in size detected');
+		}
+
+		function checkDownSizing(){
+			if (isForceResizableEvent() && isForceResizableCalcMode()){
+				resetIFrame(triggerEventDesc);
+			} else if (!(triggerEvent in {'interval':1})){
+				logIgnored();
+			}
+		}
+
+		var	currentHeight,currentWidth;
+
+		if (isSizeChangeDetected() || 'init' === triggerEvent){
+			lockTrigger();
+			resizeIFrame();
+		} else {
+			checkDownSizing();
+		}
+	}
+
+	var sizeIFrameThrottled = throttle(sizeIFrame);
+
+	function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){
+		function recordTrigger(){
+			if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){
+				log( 'Trigger event: ' + triggerEventDesc );
+			}
+		}
+
+		function isDoubleFiredEvent(){
+			return  triggerLocked && (triggerEvent in doubleEventList);
+		}
+
+		if (!isDoubleFiredEvent()){
+			recordTrigger();
+			sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
+		} else {
+			log('Trigger event cancelled: '+triggerEvent);
+		}
+	}
+
+	function lockTrigger(){
+		if (!triggerLocked){
+			triggerLocked = true;
+			log('Trigger event lock on');
+		}
+		clearTimeout(triggerLockedTimer);
+		triggerLockedTimer = setTimeout(function(){
+			triggerLocked = false;
+			log('Trigger event lock off');
+			log('--');
+		},eventCancelTimer);
+	}
+
+	function triggerReset(triggerEvent){
+		height = getHeight[heightCalcMode]();
+		width  = getWidth[widthCalcMode]();
+
+		sendMsg(height,width,triggerEvent);
+	}
+
+	function resetIFrame(triggerEventDesc){
+		var hcm = heightCalcMode;
+		heightCalcMode = heightCalcModeDefault;
+
+		log('Reset trigger event: ' + triggerEventDesc);
+		lockTrigger();
+		triggerReset('reset');
+
+		heightCalcMode = hcm;
+	}
+
+	function sendMsg(height,width,triggerEvent,msg,targetOrigin){
+		function setTargetOrigin(){
+			if (undefined === targetOrigin){
+				targetOrigin = targetOriginDefault;
+			} else {
+				log('Message targetOrigin: '+targetOrigin);
+			}
+		}
+
+		function sendToParent(){
+			var
+				size  = height + ':' + width,
+				message = myID + ':' +  size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
+
+			log('Sending message to host page (' + message + ')');
+			target.postMessage( msgID + message, targetOrigin);
+		}
+
+		if(true === sendPermit){
+			setTargetOrigin();
+			sendToParent();
+		}
+	}
+
+	function receiver(event) {
+		function isMessageForUs(){
+			return msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages
+		}
+
+		function initFromParent(){
+			function fireInit(){
+				initMsg = event.data;
+				target  = event.source;
+
+				init();
+				firstRun = false;
+				setTimeout(function(){ initLock = false;},eventCancelTimer);
+			}
+
+			if (document.body){
+				fireInit();
+			} else {
+				log('Waiting for page ready');
+				addEventListener(window,'readystatechange',initFromParent);
+			}
+		}
+
+		function resetFromParent(){
+			if (!initLock){
+				log('Page size reset by host page');
+				triggerReset('resetPage');
+			} else {
+				log('Page reset ignored by init');
+			}
+		}
+
+		function resizeFromParent(){
+			sendSize('resizeParent','Parent window requested size check');
+		}
+
+		function moveToAnchor(){
+			var anchor = getData();
+			inPageLinks.findTarget(anchor);
+		}
+
+		function getMessageType(){
+			return event.data.split(']')[1].split(':')[0];
+		}
+
+		function getData(){
+			return event.data.substr(event.data.indexOf(':')+1);
+		}
+
+		function isMiddleTier(){
+			return ('iFrameResize' in window);
+		}
+
+		function messageFromParent(){
+			var msgBody = getData();
+
+			log('MessageCallback called from parent: ' + msgBody );
+			messageCallback(JSON.parse(msgBody));
+			log(' --');
+		}
+
+		function pageInfoFromParent(){
+			var msgBody = getData();
+			log('PageInfoFromParent called from parent: ' + msgBody );
+			pageInfoCallback(JSON.parse(msgBody));
+			log(' --');
+		}
+
+		function isInitMsg(){
+			//Test if this message is from a child below us. This is an ugly test, however, updating
+			//the message format would break backwards compatibity.
+			return event.data.split(':')[2] in {'true':1,'false':1};
+		}
+
+		function callFromParent(){
+			switch (getMessageType()){
+			case 'reset':
+				resetFromParent();
+				break;
+			case 'resize':
+				resizeFromParent();
+				break;
+			case 'inPageLink':
+			case 'moveToAnchor':
+				moveToAnchor();
+				break;
+			case 'message':
+				messageFromParent();
+				break;
+			case 'pageInfo':
+				pageInfoFromParent();
+				break;
+			default:
+				if (!isMiddleTier() && !isInitMsg()){
+					warn('Unexpected message ('+event.data+')');
+				}
+			}
+		}
+
+		function processMessage(){
+			if (false === firstRun) {
+				callFromParent();
+			} else if (isInitMsg()) {
+				initFromParent();
+			} else {
+				log('Ignored message of type "' + getMessageType() + '". Received before initialization.');
+			}
+		}
+
+		if (isMessageForUs()){
+			processMessage();
+		}
+	}
+
+	//Normally the parent kicks things off when it detects the iFrame has loaded.
+	//If this script is async-loaded, then tell parent page to retry init.
+	function chkLateLoaded(){
+		if('loading' !== document.readyState){
+			window.parent.postMessage('[iFrameResizerChild]Ready','*');
+		}
+	}
+
+	addEventListener(window, 'message', receiver);
+	chkLateLoaded();
+
+	// TEST CODE START //
+
+	//Create test hooks
+
+	function mockMsgListener(msgObject){
+		receiver(msgObject);
+		return win;
+	}
+
+	win={};
+
+	removeEventListener(window, 'message', receiver);
+
+	define([], function() {return mockMsgListener;});
+
+	// TEST CODE END //
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/src/iframeResizer.js b/libs/bower_components/iframe-resizer/src/iframeResizer.js
new file mode 100644
index 0000000000000000000000000000000000000000..897a632ce4c879b739d19e9b52e5eeaf12aefc3a
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/src/iframeResizer.js
@@ -0,0 +1,1002 @@
+/*
+ * File: iframeResizer.js
+ * Desc: Force iframes to size to content.
+ * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Reed Dadoune - reed@dadoune.com
+ */
+
+
+;(function(window) {
+	'use strict';
+
+	var
+		count                 = 0,
+		logEnabled            = false,
+		hiddenCheckEnabled    = false,
+		msgHeader             = 'message',
+		msgHeaderLen          = msgHeader.length,
+		msgId                 = '[iFrameSizer]', //Must match iframe msg ID
+		msgIdLen              = msgId.length,
+		pagePosition          = null,
+		requestAnimationFrame = window.requestAnimationFrame,
+		resetRequiredMethods  = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
+		settings              = {},
+		timer                 = null,
+		logId                 = 'Host Page',
+
+		defaults              = {
+			autoResize                : true,
+			bodyBackground            : null,
+			bodyMargin                : null,
+			bodyMarginV1              : 8,
+			bodyPadding               : null,
+			checkOrigin               : true,
+			inPageLinks               : false,
+			enablePublicMethods       : true,
+			heightCalculationMethod   : 'bodyOffset',
+			id                        : 'iFrameResizer',
+			interval                  : 32,
+			log                       : false,
+			maxHeight                 : Infinity,
+			maxWidth                  : Infinity,
+			minHeight                 : 0,
+			minWidth                  : 0,
+			resizeFrom                : 'parent',
+			scrolling                 : false,
+			sizeHeight                : true,
+			sizeWidth                 : false,
+			tolerance                 : 0,
+			widthCalculationMethod    : 'scroll',
+			closedCallback            : function(){},
+			initCallback              : function(){},
+			messageCallback           : function(){warn('MessageCallback function not defined');},
+			resizedCallback           : function(){},
+			scrollCallback            : function(){return true;}
+		};
+
+	function addEventListener(obj,evt,func){
+		/* istanbul ignore else */ // Not testable in PhantonJS
+		if ('addEventListener' in window){
+			obj.addEventListener(evt,func, false);
+		} else if ('attachEvent' in window){//IE
+			obj.attachEvent('on'+evt,func);
+		}
+	}
+
+	function removeEventListener(el,evt,func){
+		/* istanbul ignore else */ // Not testable in phantonJS
+		if ('removeEventListener' in window){
+			el.removeEventListener(evt,func, false);
+		} else if ('detachEvent' in window){ //IE
+			el.detachEvent('on'+evt,func);
+		}
+	}
+
+	function setupRequestAnimationFrame(){
+		var
+			vendors = ['moz', 'webkit', 'o', 'ms'],
+			x;
+
+		// Remove vendor prefixing if prefixed and break early if not
+		for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
+			requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+		}
+
+		if (!(requestAnimationFrame)){
+			log('setup','RequestAnimationFrame not supported');
+		}
+	}
+
+	function getMyID(iframeId){
+		var retStr = 'Host page: '+iframeId;
+
+		if (window.top!==window.self){
+			if (window.parentIFrame && window.parentIFrame.getId){
+				retStr = window.parentIFrame.getId()+': '+iframeId;
+			} else {
+				retStr = 'Nested host page: '+iframeId;
+			}
+		}
+
+		return retStr;
+	}
+
+	function formatLogHeader(iframeId){
+		return msgId + '[' + getMyID(iframeId) + ']';
+	}
+
+	function isLogEnabled(iframeId){
+		return settings[iframeId] ? settings[iframeId].log : logEnabled;
+	}
+
+	function log(iframeId,msg){
+		output('log',iframeId,msg,isLogEnabled(iframeId));
+	}
+
+	function info(iframeId,msg){
+		output('info',iframeId,msg,isLogEnabled(iframeId));
+	}
+
+	function warn(iframeId,msg){
+		output('warn',iframeId,msg,true);
+	}
+
+	function output(type,iframeId,msg,enabled){
+		if (true === enabled && 'object' === typeof window.console){
+			console[type](formatLogHeader(iframeId),msg);
+		}
+	}
+
+	function iFrameListener(event){
+		function resizeIFrame(){
+			function resize(){
+				setSize(messageData);
+				setPagePosition(iframeId);
+			}
+
+			ensureInRange('Height');
+			ensureInRange('Width');
+
+			syncResize(resize,messageData,'init');
+		}
+
+		function processMsg(){
+			var data = msg.substr(msgIdLen).split(':');
+
+			return {
+				iframe: settings[data[0]].iframe,
+				id:     data[0],
+				height: data[1],
+				width:  data[2],
+				type:   data[3]
+			};
+		}
+
+		function ensureInRange(Dimension){
+			var
+				max  = Number(settings[iframeId]['max' + Dimension]),
+				min  = Number(settings[iframeId]['min' + Dimension]),
+				dimension = Dimension.toLowerCase(),
+				size = Number(messageData[dimension]);
+
+			log(iframeId,'Checking ' + dimension + ' is in range ' + min + '-' + max);
+
+			if (size<min) {
+				size=min;
+				log(iframeId,'Set ' + dimension + ' to min value');
+			}
+
+			if (size>max) {
+				size=max;
+				log(iframeId,'Set ' + dimension + ' to max value');
+			}
+
+			messageData[dimension] = '' + size;
+		}
+
+
+		function isMessageFromIFrame(){
+			function checkAllowedOrigin(){
+				function checkList(){
+					var
+						i = 0,
+						retCode = false;
+
+					log(iframeId,'Checking connection is from allowed list of origins: ' + checkOrigin);
+
+					for (; i < checkOrigin.length; i++) {
+						if (checkOrigin[i] === origin) {
+							retCode = true;
+							break;
+						}
+					}
+					return retCode;
+				}
+
+				function checkSingle(){
+					var remoteHost  = settings[iframeId].remoteHost;
+					log(iframeId,'Checking connection is from: '+remoteHost);
+					return origin === remoteHost;
+				}
+
+				return checkOrigin.constructor === Array ? checkList() : checkSingle();
+			}
+
+			var
+				origin      = event.origin,
+				checkOrigin = settings[iframeId].checkOrigin;
+
+			if (checkOrigin && (''+origin !== 'null') && !checkAllowedOrigin()) {
+				throw new Error(
+					'Unexpected message received from: ' + origin +
+					' for ' + messageData.iframe.id +
+					'. Message was: ' + event.data +
+					'. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
+				);
+			}
+
+			return true;
+		}
+
+		function isMessageForUs(){
+			return msgId === (('' + msg).substr(0,msgIdLen)) && (msg.substr(msgIdLen).split(':')[0] in settings); //''+Protects against non-string msg
+		}
+
+		function isMessageFromMetaParent(){
+			//Test if this message is from a parent above us. This is an ugly test, however, updating
+			//the message format would break backwards compatibity.
+			var retCode = messageData.type in {'true':1,'false':1,'undefined':1};
+
+			if (retCode){
+				log(iframeId,'Ignoring init message from meta parent page');
+			}
+
+			return retCode;
+		}
+
+		function getMsgBody(offset){
+			return msg.substr(msg.indexOf(':')+msgHeaderLen+offset);
+		}
+
+		function forwardMsgFromIFrame(msgBody){
+			log(iframeId,'MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');
+			callback('messageCallback',{
+				iframe: messageData.iframe,
+				message: JSON.parse(msgBody)
+			});
+			log(iframeId,'--');
+		}
+
+		function getPageInfo(){
+			var
+				bodyPosition   = document.body.getBoundingClientRect(),
+				iFramePosition = messageData.iframe.getBoundingClientRect();
+
+			return JSON.stringify({
+				iframeHeight: iFramePosition.height,
+				iframeWidth:  iFramePosition.width,
+				clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
+				clientWidth:  Math.max(document.documentElement.clientWidth,  window.innerWidth  || 0),
+				offsetTop:    parseInt(iFramePosition.top  - bodyPosition.top,  10),
+				offsetLeft:   parseInt(iFramePosition.left - bodyPosition.left, 10),
+				scrollTop:    window.pageYOffset,
+				scrollLeft:   window.pageXOffset
+			});
+		}
+
+		function sendPageInfoToIframe(iframe,iframeId){
+			function debouncedTrigger(){
+				trigger(
+					'Send Page Info',
+					'pageInfo:' + getPageInfo(), 
+					iframe, 
+					iframeId
+				);
+			}
+
+			debouce(debouncedTrigger,32);
+		}
+
+
+		function startPageInfoMonitor(){
+			function setListener(type,func){
+				function sendPageInfo(){
+					if (settings[id]){
+						sendPageInfoToIframe(settings[id].iframe,id);
+					} else {
+						stop();
+					}
+				}
+
+				['scroll','resize'].forEach(function(evt){
+					log(id, type +  evt + ' listener for sendPageInfo');
+					func(window,evt,sendPageInfo);
+				});
+			}
+
+			function stop(){
+				setListener('Remove ', removeEventListener);
+			}
+
+			function start(){
+				setListener('Add ', addEventListener);
+			}
+			
+			var id = iframeId; //Create locally scoped copy of iFrame ID
+
+			start();
+
+			settings[id].stopPageInfo = stop;
+		}
+
+		function stopPageInfoMonitor(){
+			if (settings[iframeId] && settings[iframeId].stopPageInfo){
+				settings[iframeId].stopPageInfo();
+				delete settings[iframeId].stopPageInfo;
+			}
+		}
+
+		function checkIFrameExists(){
+			var retBool = true;
+
+			if (null === messageData.iframe) {
+				warn(iframeId,'IFrame ('+messageData.id+') not found');
+				retBool = false;
+			}
+			return retBool;
+		}
+
+		function getElementPosition(target){
+			var iFramePosition = target.getBoundingClientRect();
+
+			getPagePosition(iframeId);
+
+			return {
+				x: Math.floor( Number(iFramePosition.left) + Number(pagePosition.x) ),
+				y: Math.floor( Number(iFramePosition.top)  + Number(pagePosition.y) )
+			};
+		}
+
+		function scrollRequestFromChild(addOffset){
+			/* istanbul ignore next */  //Not testable in Karma
+			function reposition(){
+				pagePosition = newPosition;
+				scrollTo();
+				log(iframeId,'--');
+			}
+
+			function calcOffset(){
+				return {
+					x: Number(messageData.width) + offset.x,
+					y: Number(messageData.height) + offset.y
+				};
+			}
+
+			function scrollParent(){
+				if (window.parentIFrame){
+					window.parentIFrame['scrollTo'+(addOffset?'Offset':'')](newPosition.x,newPosition.y);
+				} else {
+					warn(iframeId,'Unable to scroll to requested position, window.parentIFrame not found');
+				}
+			}
+
+			var
+				offset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},
+				newPosition = calcOffset();
+
+			log(iframeId,'Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');
+
+			if(window.top!==window.self){
+				scrollParent();
+			} else {
+				reposition();
+			}
+		}
+
+		function scrollTo(){
+			if (false !== callback('scrollCallback',pagePosition)){
+				setPagePosition(iframeId);
+			} else {
+				unsetPagePosition();
+			}
+		}
+
+		function findTarget(location){
+			function jumpToTarget(){
+				var jumpPosition = getElementPosition(target);
+
+				log(iframeId,'Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+				pagePosition = {
+					x: jumpPosition.x,
+					y: jumpPosition.y
+				};
+
+				scrollTo();
+				log(iframeId,'--');
+			}
+
+			function jumpToParent(){
+				if (window.parentIFrame){
+					window.parentIFrame.moveToAnchor(hash);
+				} else {
+					log(iframeId,'In page link #'+hash+' not found and window.parentIFrame not found');
+				}
+			}
+
+			var
+				hash     = location.split('#')[1] || '',
+				hashData = decodeURIComponent(hash),
+				target   = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+			if (target){
+				jumpToTarget();
+			} else if(window.top!==window.self){
+				jumpToParent();
+			} else {
+				log(iframeId,'In page link #'+hash+' not found');
+			}
+		}
+
+		function callback(funcName,val){
+			return chkCallback(iframeId,funcName,val);
+		}
+
+		function actionMsg(){
+
+			if(settings[iframeId].firstRun) firstRun();
+
+			switch(messageData.type){
+			case 'close':
+				closeIFrame(messageData.iframe);
+				break;
+			case 'message':
+				forwardMsgFromIFrame(getMsgBody(6));
+				break;
+			case 'scrollTo':
+				scrollRequestFromChild(false);
+				break;
+			case 'scrollToOffset':
+				scrollRequestFromChild(true);
+				break;
+			case 'pageInfo':
+				sendPageInfoToIframe(settings[iframeId].iframe,iframeId);
+				startPageInfoMonitor();
+				break;
+			case 'pageInfoStop':
+				stopPageInfoMonitor();
+				break;
+			case 'inPageLink':
+				findTarget(getMsgBody(9));
+				break;
+			case 'reset':
+				resetIFrame(messageData);
+				break;
+			case 'init':
+				resizeIFrame();
+				callback('initCallback',messageData.iframe);
+				callback('resizedCallback',messageData);
+				break;
+			default:
+				resizeIFrame();
+				callback('resizedCallback',messageData);
+			}
+		}
+
+		function hasSettings(iframeId){
+			var retBool = true;
+
+			if (!settings[iframeId]){
+				retBool = false;
+				warn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);
+			}
+
+			return retBool;
+		}
+
+		function iFrameReadyMsgReceived(){
+			for (var iframeId in settings){
+				trigger('iFrame requested init',createOutgoingMsg(iframeId),document.getElementById(iframeId),iframeId);
+			}
+		}
+
+		function firstRun() {
+			settings[iframeId].firstRun = false;
+		}
+
+		var
+			msg = event.data,
+			messageData = {},
+			iframeId = null;
+
+		if('[iFrameResizerChild]Ready' === msg){
+			iFrameReadyMsgReceived();
+		} else if (isMessageForUs()){
+			messageData = processMsg();
+			iframeId    = logId = messageData.id;
+
+			if (!isMessageFromMetaParent() && hasSettings(iframeId)){
+				log(iframeId,'Received: '+msg);
+
+				if ( checkIFrameExists() && isMessageFromIFrame() ){
+					actionMsg();
+				}
+			}
+		} else {
+			info(iframeId,'Ignored: '+msg);
+		}
+
+	}
+
+
+	function chkCallback(iframeId,funcName,val){
+		var
+			func = null,
+			retVal = null;
+
+		if(settings[iframeId]){
+			func = settings[iframeId][funcName];
+
+			if( 'function' === typeof func){
+				retVal = func(val);
+			} else {
+				throw new TypeError(funcName+' on iFrame['+iframeId+'] is not a function');
+			}
+		}
+
+		return retVal;
+	}
+
+	function closeIFrame(iframe){
+		var iframeId = iframe.id;
+
+		log(iframeId,'Removing iFrame: '+iframeId);
+		iframe.parentNode.removeChild(iframe);
+		chkCallback(iframeId,'closedCallback',iframeId);
+		log(iframeId,'--');
+		delete settings[iframeId];
+	}
+
+	function getPagePosition(iframeId){
+		if(null === pagePosition){
+			pagePosition = {
+				x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+				y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+			};
+			log(iframeId,'Get page position: '+pagePosition.x+','+pagePosition.y);
+		}
+	}
+
+	function setPagePosition(iframeId){
+		if(null !== pagePosition){
+			window.scrollTo(pagePosition.x,pagePosition.y);
+			log(iframeId,'Set page position: '+pagePosition.x+','+pagePosition.y);
+			unsetPagePosition();
+		}
+	}
+
+	function unsetPagePosition(){
+		pagePosition = null;
+	}
+
+	function resetIFrame(messageData){
+		function reset(){
+			setSize(messageData);
+			trigger('reset','reset',messageData.iframe,messageData.id);
+		}
+
+		log(messageData.id,'Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));
+		getPagePosition(messageData.id);
+		syncResize(reset,messageData,'reset');
+	}
+
+	function setSize(messageData){
+		function setDimension(dimension){
+			messageData.iframe.style[dimension] = messageData[dimension] + 'px';
+			log(
+				messageData.id,
+				'IFrame (' + iframeId +
+				') ' + dimension +
+				' set to ' + messageData[dimension] + 'px'
+			);
+		}
+
+		function chkZero(dimension){
+			//FireFox sets dimension of hidden iFrames to zero.
+			//So if we detect that set up an event to check for
+			//when iFrame becomes visible.
+
+			/* istanbul ignore next */  //Not testable in PhantomJS
+			if (!hiddenCheckEnabled && '0' === messageData[dimension]){
+				hiddenCheckEnabled = true;
+				log(iframeId,'Hidden iFrame detected, creating visibility listener');
+				fixHiddenIFrames();
+			}
+		}
+
+		function processDimension(dimension){
+			setDimension(dimension);
+			chkZero(dimension);
+		}
+
+		var iframeId = messageData.iframe.id;
+
+		if(settings[iframeId]){
+			if( settings[iframeId].sizeHeight) { processDimension('height'); }
+			if( settings[iframeId].sizeWidth ) { processDimension('width'); }
+		}
+	}
+
+	function syncResize(func,messageData,doNotSync){
+		/* istanbul ignore if */  //Not testable in PhantomJS
+		if(doNotSync!==messageData.type && requestAnimationFrame){
+			log(messageData.id,'Requesting animation frame');
+			requestAnimationFrame(func);
+		} else {
+			func();
+		}
+	}
+
+	function trigger(calleeMsg,msg,iframe,id){
+		function postMessageToIFrame(){
+			var target = settings[id].targetOrigin;
+			log(id,'[' + calleeMsg + '] Sending msg to iframe['+id+'] ('+msg+') targetOrigin: '+target);
+			iframe.contentWindow.postMessage( msgId + msg, target );
+		}
+
+		function iFrameNotFound(){
+			info(id,'[' + calleeMsg + '] IFrame('+id+') not found');
+			if(settings[id]) {
+				delete settings[id];
+			}
+		}
+
+		function chkAndSend(){
+			if(iframe && 'contentWindow' in iframe && (null !== iframe.contentWindow)){ //Null test for PhantomJS
+				postMessageToIFrame();
+			} else {
+				iFrameNotFound();
+			}
+		}
+
+		id = id || iframe.id;
+
+		if(settings[id]) {
+			chkAndSend();
+		}
+
+	}
+
+	function createOutgoingMsg(iframeId){
+		return iframeId +
+			':' + settings[iframeId].bodyMarginV1 +
+			':' + settings[iframeId].sizeWidth +
+			':' + settings[iframeId].log +
+			':' + settings[iframeId].interval +
+			':' + settings[iframeId].enablePublicMethods +
+			':' + settings[iframeId].autoResize +
+			':' + settings[iframeId].bodyMargin +
+			':' + settings[iframeId].heightCalculationMethod +
+			':' + settings[iframeId].bodyBackground +
+			':' + settings[iframeId].bodyPadding +
+			':' + settings[iframeId].tolerance +
+			':' + settings[iframeId].inPageLinks +
+			':' + settings[iframeId].resizeFrom +
+			':' + settings[iframeId].widthCalculationMethod;
+	}
+
+	function setupIFrame(iframe,options){
+		function setLimits(){
+			function addStyle(style){
+				if ((Infinity !== settings[iframeId][style]) && (0 !== settings[iframeId][style])){
+					iframe.style[style] = settings[iframeId][style] + 'px';
+					log(iframeId,'Set '+style+' = '+settings[iframeId][style]+'px');
+				}
+			}
+
+			function chkMinMax(dimension){
+				if (settings[iframeId]['min'+dimension]>settings[iframeId]['max'+dimension]){
+					throw new Error('Value for min'+dimension+' can not be greater than max'+dimension);
+				}
+			}
+
+			chkMinMax('Height');
+			chkMinMax('Width');
+
+			addStyle('maxHeight');
+			addStyle('minHeight');
+			addStyle('maxWidth');
+			addStyle('minWidth');
+		}
+
+		function newId(){
+			var id = ((options && options.id) || defaults.id + count++);
+			if  (null!==document.getElementById(id)){
+				id = id + count++;
+			}
+			return id;
+		}
+
+		function ensureHasId(iframeId){
+			logId=iframeId;
+			if (''===iframeId){
+				iframe.id = iframeId =  newId();
+				logEnabled = (options || {}).log;
+				logId=iframeId;
+				log(iframeId,'Added missing iframe ID: '+ iframeId +' (' + iframe.src + ')');
+			}
+
+
+			return iframeId;
+		}
+
+		function setScrolling(){
+			log(iframeId,'IFrame scrolling ' + (settings[iframeId].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId);
+			iframe.style.overflow = false === settings[iframeId].scrolling ? 'hidden' : 'auto';
+			iframe.scrolling      = false === settings[iframeId].scrolling ? 'no' : 'yes';
+		}
+
+		//The V1 iFrame script expects an int, where as in V2 expects a CSS
+		//string value such as '1px 3em', so if we have an int for V2, set V1=V2
+		//and then convert V2 to a string PX value.
+		function setupBodyMarginValues(){
+			if (('number'===typeof(settings[iframeId].bodyMargin)) || ('0'===settings[iframeId].bodyMargin)){
+				settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;
+				settings[iframeId].bodyMargin   = '' + settings[iframeId].bodyMargin + 'px';
+			}
+		}
+
+		function checkReset(){
+			// Reduce scope of firstRun to function, because IE8's JS execution
+			// context stack is borked and this value gets externally
+			// changed midway through running this function!!!
+			var
+				firstRun           = settings[iframeId].firstRun,
+				resetRequertMethod = settings[iframeId].heightCalculationMethod in resetRequiredMethods;
+
+			if (!firstRun && resetRequertMethod){
+				resetIFrame({iframe:iframe, height:0, width:0, type:'init'});
+			}
+		}
+
+		function setupIFrameObject(){
+			if(Function.prototype.bind){ //Ignore unpolyfilled IE8.
+				settings[iframeId].iframe.iFrameResizer = {
+
+					close        : closeIFrame.bind(null,settings[iframeId].iframe),
+
+					resize       : trigger.bind(null,'Window resize', 'resize', settings[iframeId].iframe),
+
+					moveToAnchor : function(anchor){
+						trigger('Move to anchor','moveToAnchor:'+anchor, settings[iframeId].iframe,iframeId);
+					},
+
+					sendMessage  : function(message){
+						message = JSON.stringify(message);
+						trigger('Send Message','message:'+message, settings[iframeId].iframe,iframeId);
+					}
+				};
+			}
+		}
+
+		//We have to call trigger twice, as we can not be sure if all
+		//iframes have completed loading when this code runs. The
+		//event listener also catches the page changing in the iFrame.
+		function init(msg){
+			function iFrameLoaded(){
+				trigger('iFrame.onload',msg,iframe);
+				checkReset();
+			}
+
+			addEventListener(iframe,'load',iFrameLoaded);
+			trigger('init',msg,iframe);
+		}
+
+		function checkOptions(options){
+			if ('object' !== typeof options){
+				throw new TypeError('Options is not an object');
+			}
+		}
+
+		function copyOptions(options){
+			for (var option in defaults) {
+				if (defaults.hasOwnProperty(option)){
+					settings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];
+				}
+			}
+		}
+
+		function getTargetOrigin (remoteHost){
+			return ('' === remoteHost || 'file://' === remoteHost) ? '*' : remoteHost;
+		}
+
+		function processOptions(options){
+			options = options || {};
+			settings[iframeId] = {
+				firstRun	: true,
+				iframe		: iframe,
+				remoteHost	: iframe.src.split('/').slice(0,3).join('/')
+			};
+
+			checkOptions(options);
+			copyOptions(options);
+
+			settings[iframeId].targetOrigin = true === settings[iframeId].checkOrigin ? getTargetOrigin(settings[iframeId].remoteHost) : '*';
+		}
+
+		function beenHere(){
+			return (iframeId in settings && 'iFrameResizer' in iframe);
+		}
+
+		var iframeId = ensureHasId(iframe.id);
+
+		if (!beenHere()){
+			processOptions(options);
+			setScrolling();
+			setLimits();
+			setupBodyMarginValues();
+			init(createOutgoingMsg(iframeId));
+			setupIFrameObject();
+		} else {
+			warn(iframeId,'Ignored iFrame, already setup.');
+		}
+	}
+
+	function debouce(fn,time){
+		if (null === timer){
+			timer = setTimeout(function(){
+				timer = null;
+				fn();
+			}, time);
+		}
+	}
+
+	/* istanbul ignore next */  //Not testable in PhantomJS
+	function fixHiddenIFrames(){
+		function checkIFrames(){
+			function checkIFrame(settingId){
+				function chkDimension(dimension){
+					return '0px' === settings[settingId].iframe.style[dimension];
+				}
+
+				function isVisible(el) {
+					return (null !== el.offsetParent);
+				}
+
+				if (isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))){
+					trigger('Visibility change', 'resize', settings[settingId].iframe,settingId);
+				}
+			}
+
+			for (var settingId in settings){
+				checkIFrame(settingId);
+			}
+		}
+
+		function mutationObserved(mutations){
+			log('window','Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);
+			debouce(checkIFrames,16);
+		}
+
+		function createMutationObserver(){
+			var
+				target = document.querySelector('body'),
+
+				config = {
+					attributes            : true,
+					attributeOldValue     : false,
+					characterData         : true,
+					characterDataOldValue : false,
+					childList             : true,
+					subtree               : true
+				},
+
+				observer = new MutationObserver(mutationObserved);
+
+			observer.observe(target, config);
+		}
+
+		var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+		if (MutationObserver) createMutationObserver();
+	}
+
+
+	function resizeIFrames(event){
+		function resize(){
+			sendTriggerMsg('Window '+event,'resize');
+		}
+
+		log('window','Trigger event: '+event);
+		debouce(resize,16);
+	}
+
+	/* istanbul ignore next */  //Not testable in PhantomJS
+	function tabVisible() {
+		function resize(){
+			sendTriggerMsg('Tab Visable','resize');
+		}
+
+		if('hidden' !== document.visibilityState) {
+			log('document','Trigger event: Visiblity change');
+			debouce(resize,16);
+		}
+	}
+
+	function sendTriggerMsg(eventName,event){
+		function isIFrameResizeEnabled(iframeId) {
+			return	'parent' === settings[iframeId].resizeFrom &&
+					settings[iframeId].autoResize &&
+					!settings[iframeId].firstRun;
+		}
+
+		for (var iframeId in settings){
+			if(isIFrameResizeEnabled(iframeId)){
+				trigger(eventName,event,document.getElementById(iframeId),iframeId);
+			}
+		}
+	}
+
+	function setupEventListeners(){
+		addEventListener(window,'message',iFrameListener);
+
+		addEventListener(window,'resize', function(){resizeIFrames('resize');});
+
+		addEventListener(document,'visibilitychange',tabVisible);
+		addEventListener(document,'-webkit-visibilitychange',tabVisible); //Andriod 4.4
+		addEventListener(window,'focusin',function(){resizeIFrames('focus');}); //IE8-9
+		addEventListener(window,'focus',function(){resizeIFrames('focus');});
+	}
+
+
+	function factory(){
+		function init(options,element){
+			function chkType(){
+				if(!element.tagName) {
+					throw new TypeError('Object is not a valid DOM element');
+				} else if ('IFRAME' !== element.tagName.toUpperCase()) {
+					throw new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>');
+				}
+			}
+
+			if(element) {
+				chkType();
+				setupIFrame(element, options);
+				iFrames.push(element);
+			}
+		}
+
+		var iFrames;
+
+		setupRequestAnimationFrame();
+		setupEventListeners();
+
+		return function iFrameResizeF(options,target){
+			iFrames = []; //Only return iFrames past in on this call
+
+			switch (typeof(target)){
+			case 'undefined':
+			case 'string':
+				Array.prototype.forEach.call(
+					document.querySelectorAll( target || 'iframe' ),
+					init.bind(undefined, options)
+				);
+				break;
+			case 'object':
+				init(options,target);
+				break;
+			default:
+				throw new TypeError('Unexpected data type ('+typeof(target)+')');
+			}
+
+			return iFrames;
+		};
+	}
+
+	function createJQueryPublicMethod($){
+		if (!$.fn) {
+			info('','Unable to bind to jQuery, it is not fully loaded.');
+		} else {
+			$.fn.iFrameResize = function $iFrameResizeF(options) {
+				function init(index, element) {
+					setupIFrame(element, options);
+				}
+
+				return this.filter('iframe').each(init).end();
+			};
+		}
+	}
+
+	if (window.jQuery) { createJQueryPublicMethod(jQuery); }
+
+	if (typeof define === 'function' && define.amd) {
+		define([],factory);
+	} else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy
+		module.exports = factory();
+	} else {
+		window.iFrameResize = window.iFrameResize || factory();
+	}
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/test-main.js b/libs/bower_components/iframe-resizer/test-main.js
new file mode 100644
index 0000000000000000000000000000000000000000..1abfe13131fb4420d98cca4ef27c9ea9b345f8aa
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/test-main.js
@@ -0,0 +1,33 @@
+var allTestFiles = [];
+
+var TEST_REGEXP = /(spec|test)\.js$/i;
+
+// Get a list of all the test files to include
+Object.keys(window.__karma__.files).forEach(function(file) {
+  if (TEST_REGEXP.test(file)) {
+    // Normalize paths to RequireJS module names.
+    // If you require sub-dependencies of test files to be loaded as-is (requiring file extension)
+    // then do not normalize the paths
+    var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, '');
+    allTestFiles.push(normalizedTestModule);
+  }
+});
+
+require.config({
+  // Karma serves files under /base, which is the basePath from your config file
+  baseUrl: '/base',
+
+  paths: {
+    jquery                  : 'node_modules/jquery/dist/jquery',
+    iframeResizerMin        : 'js/iframeResizer.min',
+    iframeResizer           : 'src/iframeResizer',
+    iframeResizerContentMin : 'js/iframeResizer.contentWindow.min',
+    iframeResizerContent    : 'src/iframeResizer.contentWindow'
+  },
+
+  // dynamically load all test files
+  deps: allTestFiles,
+
+  // we have to kickoff jasmine, as it is asynchronous
+  callback: window.__karma__.start
+});
diff --git a/piwik.js b/piwik.js
index 9c105558827473a95b5e242415caeec2bcb1e851..6fa09e8deb573213af901cb2f94fa8e63f9afd51 100644
--- a/piwik.js
+++ b/piwik.js
@@ -63,10 +63,10 @@ ci=cG&&(cF==="yes"||cF==="1");if(ci){this.disableCookies()}};this.addListener=fu
 }};this.setCountPreRendered=function(cF){aV=cF};this.trackGoal=function(cF,cH,cG){bQ(function(){cl(cF,cH,cG)})};this.trackLink=function(cG,cF,cI,cH){bQ(function(){cs(cG,cF,cI,cH)})};this.trackPageView=function(cF,cH,cG){bJ=[];if(H(bF)){bQ(function(){S(ap,bi,bF)})}else{bQ(function(){bz(cF,cH,cG)})}};this.trackAllContentImpressions=function(){if(H(bF)){return}bQ(function(){m(function(){var cF=r.findContentNodes();var cG=b6(cF);cC(cG,bj)})})};this.trackVisibleContentImpressions=function(cF,cG){if(H(bF)){return}if(!D(cF)){cF=true}if(!D(cG)){cG=750}aC(cF,cG,this);bQ(function(){j(function(){var cH=r.findContentNodes();var cI=aR(cH);cC(cI,bj)})})};this.trackContentImpression=function(cH,cF,cG){if(H(bF)){return}if(!cH){return}cF=cF||"Unknown";bQ(function(){var cI=ar(cH,cF,cG);bg(cI,bj)})};this.trackContentImpressionsWithinNode=function(cF){if(H(bF)||!cF){return}bQ(function(){if(bO){j(function(){var cG=r.findContentNodesWithinNode(cF);var cH=aR(cG);cC(cH,bj)})}else{m(function(){var cG=r.findContentNodesWithinNode(cF);
 var cH=b6(cG);cC(cH,bj)})}})};this.trackContentInteraction=function(cH,cI,cF,cG){if(H(bF)){return}if(!cH||!cI){return}cF=cF||"Unknown";bQ(function(){var cJ=az(cH,cI,cF,cG);bg(cJ,bj)})};this.trackContentInteractionNode=function(cG,cF){if(H(bF)||!cG){return}bQ(function(){var cH=cA(cG,cF);bg(cH,bj)})};this.logAllContentBlocksOnPage=function(){var cG=r.findContentNodes();var cF=r.collectContent(cG);if(console!==undefined&&console&&console.log){console.log(cF)}};this.trackEvent=function(cG,cI,cF,cH,cK,cJ){bQ(function(){ak(cG,cI,cF,cH,cK,cJ)})};this.trackSiteSearch=function(cF,cH,cG,cI){bQ(function(){bI(cF,cH,cG,cI)})};this.setEcommerceView=function(cI,cF,cH,cG){if(!D(cH)||!cH.length){cH=""}else{if(cH instanceof Array){cH=JSON2.stringify(cH)}}bv[5]=["_pkc",cH];if(D(cG)&&String(cG).length){bv[2]=["_pkp",cG]}if((!D(cI)||!cI.length)&&(!D(cF)||!cF.length)){return}if(D(cI)&&cI.length){bv[3]=["_pks",cI]}if(!D(cF)||!cF.length){cF=""}bv[4]=["_pkn",cF]};this.addEcommerceItem=function(cJ,cF,cH,cG,cI){if(cJ.length){cr[cJ]=[cJ,cF,cH,cG,cI]
 }};this.trackEcommerceOrder=function(cF,cJ,cI,cH,cG,cK){by(cF,cJ,cI,cH,cG,cK)};this.trackEcommerceCartUpdate=function(cF){a6(cF)};this.trackRequest=function(cF,cH,cG){bQ(function(){var cI=b0(cF,cH);bg(cI,bj,cG)})};d.trigger("TrackerSetup",[this])}function B(){return{push:X}}function b(ak,aj){var al={};var ah,ai;for(ah=0;ah<aj.length;ah++){var af=aj[ah];al[af]=1;for(ai=0;ai<ak.length;ai++){if(ak[ai]&&ak[ai][0]){var ag=ak[ai][0];if(af===ag){X(ak[ai]);delete ak[ai];if(al[ag]>1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;
-z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C[0]){ai=C[0]}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()
-}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
+z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C.length&&C[0]){ai=C[0]}else{return V(ag,aj)}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()
+}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
 /*!!! pluginTrackerHook */
-}(function(){if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}window.Piwik.addTracker();window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return
-}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
+}(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
+if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
 /*!! @license-end */
 };
\ No newline at end of file
diff --git a/plugins/API/Menu.php b/plugins/API/Menu.php
index 12995fcb99a777874055f151e54de4ffd7959e5d..312f03a2ef8515525e022c34ea719eaf14c55be0 100644
--- a/plugins/API/Menu.php
+++ b/plugins/API/Menu.php
@@ -28,7 +28,7 @@ class Menu extends \Piwik\Plugin\Menu
     {
         $menu->addPlatformItem('General_API',
             $this->urlForAction('listAllAPI', array('segment' => false)),
-            6,
+            7,
             Piwik::translate('API_TopLinkTooltip')
         );
 
diff --git a/plugins/Actions/Actions/ActionSiteSearch.php b/plugins/Actions/Actions/ActionSiteSearch.php
index 392e3777f8dc4a15675c9d74d0baac89125add9c..6bd6be4e7b4e275ac88d84242a08ca9d5fcc0e48 100644
--- a/plugins/Actions/Actions/ActionSiteSearch.php
+++ b/plugins/Actions/Actions/ActionSiteSearch.php
@@ -64,6 +64,16 @@ class ActionSiteSearch extends Action
         return null;
     }
 
+    public function getIdActionUrlForEntryAndExitIds()
+    {
+        return $this->getIdActionUrl();
+    }
+
+    public function getIdActionNameForEntryAndExitIds()
+    {
+        return $this->getIdActionName();
+    }
+
     public function getCustomFloatValue()
     {
         return $this->request->getPageGenerationTime();
diff --git a/plugins/Actions/Columns/VisitTotalActions.php b/plugins/Actions/Columns/VisitTotalActions.php
index 914f18ba8ecdab502bf190ade647f7d1dbe882ab..750cfc866790233996ee514ff782d166e0efee1b 100644
--- a/plugins/Actions/Columns/VisitTotalActions.php
+++ b/plugins/Actions/Columns/VisitTotalActions.php
@@ -79,8 +79,9 @@ class VisitTotalActions extends VisitDimension
         }
 
         $actionType = $action->getActionType();
+        $types = array(Action::TYPE_SITE_SEARCH, Action::TYPE_EVENT, Action::TYPE_OUTLINK, Action::TYPE_DOWNLOAD);
 
-        if (in_array($actionType, array(Action::TYPE_SITE_SEARCH, Action::TYPE_EVENT))) {
+        if (in_array($actionType, $types)) {
             return $increment;
         }
 
diff --git a/plugins/Contents/Actions/ActionContent.php b/plugins/Contents/Actions/ActionContent.php
index 024c403d8136873c3275a28f3b5d56cca0375573..b328ebcc6c9a302d850bf5c958a2a561085a1dc7 100644
--- a/plugins/Contents/Actions/ActionContent.php
+++ b/plugins/Contents/Actions/ActionContent.php
@@ -40,15 +40,4 @@ class ActionContent extends Action
         );
     }
 
-    // Do not track this Event URL as Entry/Exit Page URL (leave the existing entry/exit)
-    public function getIdActionUrlForEntryAndExitIds()
-    {
-        return false;
-    }
-
-    // Do not track this Event Name as Entry/Exit Page Title (leave the existing entry/exit)
-    public function getIdActionNameForEntryAndExitIds()
-    {
-        return false;
-    }
 }
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index dcda3b0378e53e05f0c29759603b27c4c8e3db17..7621aa1f789793130f5de7cb715dde085806b67d 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -17,14 +17,13 @@ use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 use Piwik\Plugin;
 use Piwik\Plugin\ControllerAdmin;
-use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
+use Piwik\Plugins\Marketplace\Marketplace;
 use Piwik\Plugins\CustomVariables\CustomVariables;
 use Piwik\Plugins\LanguagesManager\LanguagesManager;
 use Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker;
 use Piwik\Plugins\SitesManager\API as APISitesManager;
 use Piwik\Site;
 use Piwik\Translation\Translator;
-use Piwik\UpdateCheck;
 use Piwik\Url;
 use Piwik\View;
 use Piwik\Widget\WidgetsList;
@@ -49,7 +48,7 @@ class Controller extends ControllerAdmin
 
     public function home()
     {
-        $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
+        $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
         $isFeedbackEnabled = Plugin\Manager::getInstance()->isPluginLoaded('Feedback');
         $widgetsList = WidgetsList::get();
 
diff --git a/plugins/CoreAdminHome/templates/home.twig b/plugins/CoreAdminHome/templates/home.twig
index b090ae046528b572fc9e41eab64301eefae92e9c..aaf5afc5baac8c0547ebf1bfa778e2e58f59e3f9 100644
--- a/plugins/CoreAdminHome/templates/home.twig
+++ b/plugins/CoreAdminHome/templates/home.twig
@@ -35,7 +35,7 @@
     {% endif %}
 
     {% if isMarketplaceEnabled %}
-        <div piwik-widget-loader='{"module":"CorePluginsAdmin","action":"getNewPlugins", "isAdminPage": "1"}'></div>
+        <div piwik-widget-loader='{"module":"Marketplace","action":"getNewPlugins", "isAdminPage": "1"}'></div>
     {% endif %}
 
     {{ postEvent('Template.adminHome') }}
diff --git a/plugins/CoreConsole/Commands/GeneratePlugin.php b/plugins/CoreConsole/Commands/GeneratePlugin.php
index cfdaee35f5b28e6ad7fe7dbcac9c641816c97089..611a177fbb8381854a2e0a0d6c2855c81ded2fd3 100644
--- a/plugins/CoreConsole/Commands/GeneratePlugin.php
+++ b/plugins/CoreConsole/Commands/GeneratePlugin.php
@@ -11,11 +11,11 @@ namespace Piwik\Plugins\CoreConsole\Commands;
 
 use Piwik\Filesystem;
 use Piwik\Plugins\ExamplePlugin\ExamplePlugin;
-use Piwik\Version;
 use Piwik\Plugin;
-use Symfony\Component\Console\Input\ArrayInput;
+use Piwik\Version;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\NullOutput;
 use Symfony\Component\Console\Output\OutputInterface;
 
 /**
@@ -79,6 +79,7 @@ class GeneratePlugin extends GeneratePluginBase
         }
 
         $this->copyTemplateToPlugin($exampleFolder, $pluginName, $replace, $whitelistFiles);
+        $this->checkAndUpdateRequiredPiwikVersion($pluginName, new NullOutput());
 
         if ($isTheme) {
             $this->writeSuccessMessage($output, array(
diff --git a/plugins/CoreConsole/Commands/GeneratePluginBase.php b/plugins/CoreConsole/Commands/GeneratePluginBase.php
index f5ca71a405c3ce61cbacac7b5835ee5ca8fa18f3..38f53b4d1b6eda62e8c9a91e92229744a2bfbcc3 100644
--- a/plugins/CoreConsole/Commands/GeneratePluginBase.php
+++ b/plugins/CoreConsole/Commands/GeneratePluginBase.php
@@ -123,10 +123,18 @@ abstract class GeneratePluginBase extends ConsoleCommand
             $pluginJson['require'] = array();
         }
 
-        $piwikVersion       = Version::VERSION;
-        $nextMajorVersion = (int) $piwikVersion + 1;
+        $piwikVersion     = Version::VERSION;
+        $nextMajorVersion = (int) substr($piwikVersion, 0, strpos($piwikVersion, '.')) + 1;
         $secondPartPiwikVersionRequire = ',<' . $nextMajorVersion . '.0.0-b1';
-        $newRequiredVersion = '>=' . $piwikVersion .  $secondPartPiwikVersionRequire;
+        if (false === strpos($piwikVersion, '-')) {
+            // see https://github.com/composer/composer/issues/4080 we need to specify -stable otherwise it would match
+            // $piwikVersion-dev meaning it would also match all pre-released. However, we only want to match a stable
+            // release
+            $piwikVersion.= '-stable';
+        }
+
+        $newRequiredVersion = sprintf('>=%s,<%d.0.0', $piwikVersion, $nextMajorVersion);
+
 
         if (!empty($pluginJson['require']['piwik'])) {
             $requiredVersion = trim($pluginJson['require']['piwik']);
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index 9a554fb2b8045661e20a82c165ab1e485fcb5a9c..60f0aa22f92da3f66c1ec9dadd1bb33dff50c31a 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\CoreHome;
 use Exception;
 use Piwik\API\Request;
 use Piwik\Common;
+use Piwik\Container\StaticContainer;
 use Piwik\Date;
 use Piwik\FrontController;
 use Piwik\Notification\Manager as NotificationManager;
@@ -19,7 +20,6 @@ use Piwik\Plugin\Report;
 use Piwik\Widget\Widget;
 use Piwik\Plugins\CoreHome\DataTableRowAction\MultiRowEvolution;
 use Piwik\Plugins\CoreHome\DataTableRowAction\RowEvolution;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
 use Piwik\Plugins\Dashboard\DashboardManagerControl;
 use Piwik\Plugins\UsersManager\API;
 use Piwik\Site;
@@ -264,7 +264,8 @@ class Controller extends \Piwik\Plugin\Controller
         // perform check (but only once every 10s)
         UpdateCheck::check($force = false, UpdateCheck::UI_CLICK_CHECK_INTERVAL);
 
-        MarketplaceApiClient::clearAllCacheEntries();
+        $marketplace = StaticContainer::get('Piwik\Plugins\Marketplace\Api\Client');
+        $marketplace->clearAllCacheEntries();
 
         $view = new View('@CoreHome/checkForUpdates');
         $this->setGeneralVariablesView($view);
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index 4c5abc8071a515101cda152e90b01312afcbd834..f5a1a594bc13568b717d1506c7e98cd3370e02ff 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -239,10 +239,7 @@ class CoreHome extends \Piwik\Plugin
         $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/field/field.directive.js";
         $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/save-button/save-button.directive.js";
         $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-filter.directive.js";
-        $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js";
         $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js";
-        $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js";
-        $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js";
         $jsFiles[] = "plugins/CoreHome/javascripts/iframeResizer.min.js";
     }
 
diff --git a/plugins/CoreHome/lang/en.json b/plugins/CoreHome/lang/en.json
index 3f58bbb4061b300b6c786ffeb746ca171370eb65..808250348e7a555aa534f9677ea628267cabe5e0 100644
--- a/plugins/CoreHome/lang/en.json
+++ b/plugins/CoreHome/lang/en.json
@@ -65,6 +65,7 @@
         "QuickAccessTitle": "Search for %s. Use the arrow keys to navigate through search results. Shortcut: Press 'f' to search.",
         "MenuEntries": "Menu entries",
         "Segments": "Segments",
+        "OneClickUpdateNotPossibleAsMultiServerEnvironment": "The one-click update is not available as you are using Piwik with multiple servers. Please download the latest version from %1$s to proceed.",
         "AdblockIsMaybeUsed": "In case you are using an ad blocker, please disable it for this site to make sure Piwik works without any issues.",
         "ChangeCurrentWebsite": "Choose a website, currently selected website: %s"
     }
diff --git a/plugins/CoreHome/templates/_headerMessage.twig b/plugins/CoreHome/templates/_headerMessage.twig
index 051e10f74d4344d05230584463d6ef79bb5ddc30..97ed8271a7edf585bff339efeb2d20d4004b95b9 100644
--- a/plugins/CoreHome/templates/_headerMessage.twig
+++ b/plugins/CoreHome/templates/_headerMessage.twig
@@ -29,14 +29,18 @@
 
     <div class="dropdown positionInViewport">
         {% if isPiwikDemo %}
-            {{ 'General_DownloadFullVersion'|translate("<a href='http://piwik.org/'>","</a>","<a href='http://piwik.org'>piwik.org</a>")|raw }}
+            {{ 'General_DownloadFullVersion'|translate("<a rel='noreferrer' href='https://piwik.org/'>","</a>","<a rel='noreferrer' href='https://piwik.org'>piwik.org</a>")|raw }}
             <br/>
             {% if isSuperUser and isAdminArea is defined and isAdminArea %}
                 <br/>
             {% endif %}
         {% endif %}
         {% if latest_version_available and isSuperUser %}
-            {{ 'General_PiwikXIsAvailablePleaseUpdateNow'|translate(latest_version_available,"<br /><a href='index.php?module=CoreUpdater&amp;action=newVersionAvailable'>","</a>","<a href='?module=Proxy&amp;action=redirect&amp;url=http://piwik.org/changelog/' target='_blank'>","</a>")|raw }}
+            {% if isMultiServerEnvironment %}
+                {{ 'CoreHome_OneClickUpdateNotPossibleAsMultiServerEnvironment'|translate("<a rel='noreferrer' href='https://builds.piwik.org/piwik-" ~ latest_version_available ~ ".zip'>","</a>")|raw }}
+            {% else %}
+                {{ 'General_PiwikXIsAvailablePleaseUpdateNow'|translate(latest_version_available,"<br /><a href='index.php?module=CoreUpdater&amp;action=newVersionAvailable'>","</a>","<a href='?module=Proxy&amp;action=redirect&amp;url=http://piwik.org/changelog/' target='_blank'>","</a>")|raw }}
+            {% endif %}
             <br />
         {% elseif latest_version_available and not isPiwikDemo and hasSomeViewAccess and not isUserIsAnonymous %}
             {% set updateSubject = 'General_NewUpdatePiwikX'|translate(latest_version_available)|e('url') %}
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php
index f4d08fc12ab971d14a0755f5118964a12daf0674..860cee74041aedcb8d1ab409393dce745dd9c8e5 100644
--- a/plugins/CorePluginsAdmin/Controller.php
+++ b/plugins/CorePluginsAdmin/Controller.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\CorePluginsAdmin;
 use Exception;
 use Piwik\API\Request;
 use Piwik\Common;
+use Piwik\Container\StaticContainer;
 use Piwik\Exception\MissingFilePermissionException;
 use Piwik\Filechecks;
 use Piwik\Filesystem;
@@ -18,6 +19,9 @@ use Piwik\Nonce;
 use Piwik\Notification;
 use Piwik\Piwik;
 use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Marketplace;
+use Piwik\Plugins\Marketplace\Controller as MarketplaceController;
+use Piwik\Plugins\Marketplace\Plugins;
 use Piwik\Translation\Translator;
 use Piwik\Url;
 use Piwik\Version;
@@ -25,15 +29,10 @@ use Piwik\View;
 
 class Controller extends Plugin\ControllerAdmin
 {
-    const UPDATE_NONCE = 'CorePluginsAdmin.updatePlugin';
-    const INSTALL_NONCE = 'CorePluginsAdmin.installPlugin';
     const ACTIVATE_NONCE = 'CorePluginsAdmin.activatePlugin';
     const DEACTIVATE_NONCE = 'CorePluginsAdmin.deactivatePlugin';
     const UNINSTALL_NONCE = 'CorePluginsAdmin.uninstallPlugin';
 
-    private $validSortMethods = array('popular', 'newest', 'alpha');
-    private $defaultSortMethod = 'popular';
-
     /**
      * @var Translator
      */
@@ -44,94 +43,42 @@ class Controller extends Plugin\ControllerAdmin
      */
     private $settingsProvider;
 
-    public function __construct(Translator $translator, Plugin\SettingsProvider $settingsProvider)
-    {
-        $this->translator = $translator;
-        $this->settingsProvider = $settingsProvider;
-
-        parent::__construct();
-    }
-    
-    public function marketplace()
-    {
-        self::dieIfMarketplaceIsDisabled();
-
-        $show = Common::getRequestVar('show', 'plugins', 'string');
-        $query = Common::getRequestVar('query', '', 'string', $_POST);
-        $sort = Common::getRequestVar('sort', $this->defaultSortMethod, 'string');
-        if (!in_array($sort, $this->validSortMethods)) {
-            $sort = $this->defaultSortMethod;
-        }
-
-        $view = $this->configureView('@CorePluginsAdmin/marketplace');
-
-        $marketplace = new Marketplace();
-
-        $showThemes = ($show === 'themes');
-        $view->plugins = $marketplace->searchPlugins($query, $sort, $showThemes);
-        $view->showThemes = $showThemes;
-        $view->query = $query;
-        $view->sort = $sort;
-        $view->pluginType = $show;
-        $view->pluginTypeOptions = array(
-            'plugins' => Piwik::translate('General_Plugins'),
-            'themes' => Piwik::translate('CorePluginsAdmin_Themes')
-        );
-        $view->pluginSortOptions = array(
-            'popular' => Piwik::translate('CorePluginsAdmin_SortByPopular'),
-            'newest' => Piwik::translate('CorePluginsAdmin_SortByNewest'),
-            'alpha' => Piwik::translate('CorePluginsAdmin_SortByAlpha'),
-        );
-        $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
-        $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
-        $view->isSuperUser = Piwik::hasUserSuperUserAccess();
+    /**
+     * @var PluginInstaller
+     */
+    private $pluginInstaller;
+    /**
+     * @var Plugin\Manager
+     */
+    private $pluginManager;
 
-        return $view->render();
-    }
+    /**
+     * @var Plugins
+     */
+    private $marketplacePlugins;
 
-    private function createUpdateOrInstallView($template, $nonceName)
+    /**
+     * Controller constructor.
+     * @param Translator $translator
+     * @param Plugin\SettingsProvider $settingsProvider
+     * @param PluginInstaller $pluginInstaller
+     * @param Plugins $marketplacePlugins
+     */
+    public function __construct(Translator $translator, Plugin\SettingsProvider $settingsProvider, PluginInstaller $pluginInstaller, $marketplacePlugins = null)
     {
-        static::dieIfMarketplaceIsDisabled();
-
-        $pluginName = $this->initPluginModification($nonceName);
-        $this->dieIfPluginsAdminIsDisabled();
-
-        $view = $this->configureView('@CorePluginsAdmin/' . $template);
-
-        $view->plugin = array('name' => $pluginName);
-
-        try {
-            $pluginInstaller = new PluginInstaller($pluginName);
-            $pluginInstaller->installOrUpdatePluginFromMarketplace();
-
-        } catch (\Exception $e) {
-
-            $notification = new Notification($e->getMessage());
-            $notification->context = Notification::CONTEXT_ERROR;
-            Notification\Manager::notify('CorePluginsAdmin_InstallPlugin', $notification);
-
-            $this->redirectAfterModification(true);
-            return;
+        $this->translator = $translator;
+        $this->settingsProvider = $settingsProvider;
+        $this->pluginInstaller = $pluginInstaller;
+        $this->pluginManager = Plugin\Manager::getInstance();
+
+        if (!empty($marketplacePlugins)) {
+            $this->marketplacePlugins = $marketplacePlugins;
+        } elseif (Marketplace::isMarketplaceEnabled()) {
+            // we load it manually as marketplace might not be loaded
+            $this->marketplacePlugins = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins');
         }
 
-        $marketplace = new Marketplace();
-        $view->plugin = $marketplace->getPluginInfo($pluginName);
-
-        return $view;
-    }
-
-    public function updatePlugin()
-    {
-        $view = $this->createUpdateOrInstallView('updatePlugin', static::UPDATE_NONCE);
-        return $view->render();
-    }
-
-    public function installPlugin()
-    {
-        $view = $this->createUpdateOrInstallView('installPlugin', static::INSTALL_NONCE);
-        $view->nonce = Nonce::getNonce(static::ACTIVATE_NONCE);
-
-        return $view->render();
+        parent::__construct();
     }
 
     public function uploadPlugin()
@@ -141,11 +88,11 @@ class Controller extends Plugin\ControllerAdmin
 
         $nonce = Common::getRequestVar('nonce', null, 'string');
 
-        if (!Nonce::verifyNonce(static::INSTALL_NONCE, $nonce)) {
+        if (!Nonce::verifyNonce(MarketplaceController::INSTALL_NONCE, $nonce)) {
             throw new \Exception($this->translator->translate('General_ExceptionNonceMismatch'));
         }
 
-        Nonce::discardNonce(static::INSTALL_NONCE);
+        Nonce::discardNonce(MarketplaceController::INSTALL_NONCE);
 
         if (empty($_FILES['pluginZip'])) {
             throw new \Exception('You did not specify a ZIP file.');
@@ -162,52 +109,25 @@ class Controller extends Plugin\ControllerAdmin
 
         $view = $this->configureView('@CorePluginsAdmin/uploadPlugin');
 
-        $pluginInstaller = new PluginInstaller('uploaded');
-        $pluginMetadata  = $pluginInstaller->installOrUpdatePluginFromFile($file);
+        $pluginMetadata = $this->pluginInstaller->installOrUpdatePluginFromFile($file);
 
         $view->nonce = Nonce::getNonce(static::ACTIVATE_NONCE);
         $view->plugin = array(
             'name'        => $pluginMetadata->name,
             'version'     => $pluginMetadata->version,
             'isTheme'     => !empty($pluginMetadata->theme),
-            'isActivated' => \Piwik\Plugin\Manager::getInstance()->isPluginActivated($pluginMetadata->name)
+            'isActivated' => $this->pluginManager->isPluginActivated($pluginMetadata->name)
         );
 
         return $view->render();
     }
 
-    public function pluginDetails()
-    {
-        static::dieIfMarketplaceIsDisabled();
-
-        $pluginName = Common::getRequestVar('pluginName', null, 'string');
-        $activeTab  = Common::getRequestVar('activeTab', '', 'string');
-        if ('changelog' !== $activeTab) {
-            $activeTab = '';
-        }
-
-        $view = $this->configureView('@CorePluginsAdmin/pluginDetails');
-
-        try {
-            $marketplace  = new Marketplace();
-            $view->plugin = $marketplace->getPluginInfo($pluginName);
-            $view->isSuperUser  = Piwik::hasUserSuperUserAccess();
-            $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
-            $view->updateNonce  = Nonce::getNonce(static::UPDATE_NONCE);
-            $view->activeTab    = $activeTab;
-        } catch (\Exception $e) {
-            $view->errorMessage = $e->getMessage();
-        }
-
-        return $view->render();
-    }
-
     /**
      * @deprecated
      */
     public function browsePlugins()
     {
-        $this->redirectToIndex('CorePluginsAdmin', 'marketplace');
+        $this->redirectToIndex('Marketplace', 'overview');
     }
 
     /**
@@ -215,26 +135,7 @@ class Controller extends Plugin\ControllerAdmin
      */
     public function browseThemes()
     {
-        $this->redirectToIndex('CorePluginsAdmin', 'marketplace', null, null, null, array('show' => 'themes'));
-    }
-
-    /**
-     * @deprecated
-     */
-    public function userBrowsePlugins()
-    {
-        $this->redirectToIndex('CorePluginsAdmin', 'marketplace', null, null, null, array('mode' => 'user'));
-    }
-
-    private function dieIfMarketplaceIsDisabled()
-    {
-        if (!CorePluginsAdmin::isMarketplaceEnabled()) {
-            throw new \Exception('The Marketplace feature has been disabled.
-            You may enable the Marketplace by changing the config entry "enable_marketplace" to 1.
-            Please contact your Piwik admins with your request so they can assist.');
-        }
-
-        $this->dieIfPluginsAdminIsDisabled();
+        $this->redirectToIndex('Marketplace', 'overview', null, null, null, array('show' => 'themes'));
     }
 
     private function dieIfPluginsAdminIsDisabled()
@@ -251,7 +152,7 @@ class Controller extends Plugin\ControllerAdmin
 
         $view = $this->configureView('@CorePluginsAdmin/' . $template);
 
-        $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
+        $view->updateNonce = Nonce::getNonce(MarketplaceController::UPDATE_NONCE);
         $view->activateNonce = Nonce::getNonce(static::ACTIVATE_NONCE);
         $view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE);
         $view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE);
@@ -259,23 +160,19 @@ class Controller extends Plugin\ControllerAdmin
 
         $users = Request::processRequest('UsersManager.getUsers');
         $view->otherUsersCount = count($users) - 1;
-        $view->themeEnabled = \Piwik\Plugin\Manager::getInstance()->getThemeEnabled()->getPluginName();
+        $view->themeEnabled = $this->pluginManager->getThemeEnabled()->getPluginName();
 
         $view->pluginNamesHavingSettings = array_keys($this->settingsProvider->getAllSystemSettings());
-        $view->isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
+        $view->isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
         $view->isPluginsAdminEnabled = CorePluginsAdmin::isPluginsAdminEnabled();
 
         $view->pluginsHavingUpdate    = array();
         $view->marketplacePluginNames = array();
 
-        if (CorePluginsAdmin::isMarketplaceEnabled()) {
+        if (Marketplace::isMarketplaceEnabled() && $this->marketplacePlugins) {
             try {
-                $marketplace = new Marketplace();
-                $view->marketplacePluginNames = $marketplace->getAvailablePluginNames($themesOnly);
-
-                $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate(true);
-                $themesHavingUpdate  = $marketplace->getPluginsHavingUpdate(false);
-                $view->pluginsHavingUpdate    = $pluginsHavingUpdate + $themesHavingUpdate;
+                $view->marketplacePluginNames = $this->marketplacePlugins->getAvailablePluginNames($themesOnly);
+                $view->pluginsHavingUpdate    = $this->marketplacePlugins->getPluginsHavingUpdate();
             } catch(Exception $e) {
                 // curl exec connection error (ie. server not connected to internet)
             }
@@ -315,12 +212,11 @@ class Controller extends Plugin\ControllerAdmin
 
     protected function getPluginsInfo($themesOnly = false)
     {
-        $pluginManager = \Piwik\Plugin\Manager::getInstance();
-        $plugins = $pluginManager->loadAllPluginsAndGetTheirInfo();
+        $plugins = $this->pluginManager->loadAllPluginsAndGetTheirInfo();
 
         foreach ($plugins as $pluginName => &$plugin) {
 
-            $plugin['isCorePlugin'] = $pluginManager->isPluginBundledWithCore($pluginName);
+            $plugin['isCorePlugin'] = $this->pluginManager->isPluginBundledWithCore($pluginName);
 
             if (!empty($plugin['info']['description'])) {
                 $plugin['info']['description'] = $this->translator->translate($plugin['info']['description']);
@@ -408,7 +304,7 @@ class Controller extends Plugin\ControllerAdmin
         $view->lastError   = $lastError;
         $view->isSuperUser = Piwik::hasUserSuperUserAccess();
         $view->isAnonymousUser = Piwik::isUserIsAnonymous();
-        $view->plugins         = Plugin\Manager::getInstance()->loadAllPluginsAndGetTheirInfo();
+        $view->plugins         = $this->pluginManager->loadAllPluginsAndGetTheirInfo();
         $view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE);
         $view->uninstallNonce  = Nonce::getNonce(static::UNINSTALL_NONCE);
         $view->emailSuperUser  = implode(',', Piwik::getAllSuperUserAccessEmailAddresses());
@@ -432,16 +328,9 @@ class Controller extends Plugin\ControllerAdmin
         $pluginName = $this->initPluginModification(static::ACTIVATE_NONCE);
         $this->dieIfPluginsAdminIsDisabled();
 
-        \Piwik\Plugin\Manager::getInstance()->activatePlugin($pluginName);
+        $this->pluginManager->activatePlugin($pluginName);
 
         if ($redirectAfter) {
-            $plugin = \Piwik\Plugin\Manager::getInstance()->loadPlugin($pluginName);
-
-            $actionToRedirect = 'plugins';
-            if ($plugin->isTheme()) {
-                $actionToRedirect = 'themes';
-            }
-
             $message = $this->translator->translate('CorePluginsAdmin_SuccessfullyActicated', array($pluginName));
             
             if ($this->settingsProvider->getSystemSettings($pluginName)) {
@@ -457,7 +346,22 @@ class Controller extends Plugin\ControllerAdmin
             $notification->context = Notification::CONTEXT_SUCCESS;
             Notification\Manager::notify('CorePluginsAdmin_PluginActivated', $notification);
 
-            $this->redirectToIndex('CorePluginsAdmin', $actionToRedirect);
+            $redirectTo = Common::getRequestVar('redirectTo', '', 'string');
+            if (!empty($redirectTo) && $redirectTo === 'marketplace') {
+                $this->redirectToIndex('Marketplace', 'overview');
+            } elseif (!empty($redirectTo) && $redirectTo === 'referrer') {
+                $this->redirectAfterModification($redirectAfter);
+            } else {
+                $plugin = $this->pluginManager->loadPlugin($pluginName);
+
+                $actionToRedirect = 'plugins';
+                if ($plugin->isTheme()) {
+                    $actionToRedirect = 'themes';
+                }
+
+                $this->redirectToIndex('CorePluginsAdmin', $actionToRedirect);
+            }
+
         }
     }
 
@@ -466,7 +370,7 @@ class Controller extends Plugin\ControllerAdmin
         $pluginName = $this->initPluginModification(static::DEACTIVATE_NONCE);
         $this->dieIfPluginsAdminIsDisabled();
 
-        \Piwik\Plugin\Manager::getInstance()->deactivatePlugin($pluginName);
+        $this->pluginManager->deactivatePlugin($pluginName);
         $this->redirectAfterModification($redirectAfter);
     }
 
@@ -475,7 +379,7 @@ class Controller extends Plugin\ControllerAdmin
         $pluginName = $this->initPluginModification(static::UNINSTALL_NONCE);
         $this->dieIfPluginsAdminIsDisabled();
 
-        $uninstalled = \Piwik\Plugin\Manager::getInstance()->uninstallPlugin($pluginName);
+        $uninstalled = $this->pluginManager->uninstallPlugin($pluginName);
 
         if (!$uninstalled) {
             $path = Filesystem::getPathToPiwikRoot() . '/plugins/' . $pluginName . '/';
@@ -495,6 +399,25 @@ class Controller extends Plugin\ControllerAdmin
         $this->redirectAfterModification($redirectAfter);
     }
 
+    public function showLicense()
+    {
+        $pluginName = Common::getRequestVar('pluginName', null, 'string');
+
+        $metadata = new Plugin\MetadataLoader($pluginName);
+        $license_file = $metadata->getPathToLicenseFile();
+
+        $license = 'No license file found for this plugin.';
+        if(!empty($license_file)) {
+            $license = file_get_contents($license_file);
+            $license = nl2br($license);
+        }
+
+        $view = $this->configureView('@CorePluginsAdmin/license');
+        $view->pluginName = $pluginName;
+        $view->license = $license;
+        return $view->render();
+    }
+
     protected function initPluginModification($nonceName)
     {
         Piwik::checkUserHasSuperUserAccess();
@@ -509,6 +432,10 @@ class Controller extends Plugin\ControllerAdmin
 
         $pluginName = Common::getRequestVar('pluginName', null, 'string');
 
+        if (!$this->pluginManager->isValidPluginName($pluginName)) {
+            throw new Exception('Invalid plugin name');
+        }
+
         return $pluginName;
     }
 
diff --git a/plugins/CorePluginsAdmin/CorePluginsAdmin.php b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
index 21217f77435ebbcfe7b4c34d3048b12cbe0a4fd9..df8934519beed401c6791212bf4d549d8a05d2da 100644
--- a/plugins/CorePluginsAdmin/CorePluginsAdmin.php
+++ b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
@@ -11,10 +11,10 @@ namespace Piwik\Plugins\CorePluginsAdmin;
 use Piwik\Config;
 use Piwik\Plugin;
 
-class CorePluginsAdmin extends \Piwik\Plugin
+class CorePluginsAdmin extends Plugin
 {
     /**
-     * @see Piwik\Plugin::registerEvents
+     * @see Plugin::registerEvents
      */
     public function registerEvents()
     {
@@ -27,18 +27,10 @@ class CorePluginsAdmin extends \Piwik\Plugin
 
     public function getStylesheetFiles(&$stylesheets)
     {
-        $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/marketplace.less";
-        $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less";
         $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/plugins_admin.less";
-        $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/plugin-details.less";
         $stylesheets[] = "plugins/CorePluginsAdmin/angularjs/plugin-settings/plugin-settings.directive.less";
     }
 
-    public static function isMarketplaceEnabled()
-    {
-        return (bool) Config::getInstance()->General['enable_marketplace'];
-    }
-
     public static function isPluginsAdminEnabled()
     {
         return (bool) Config::getInstance()->General['enable_plugins_admin'];
diff --git a/plugins/CorePluginsAdmin/Marketplace.php b/plugins/CorePluginsAdmin/Marketplace.php
deleted file mode 100644
index c8cfc114e863bfbf5fe030fd52ebad5dbad8468f..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/Marketplace.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Plugins\CorePluginsAdmin;
-
-use Piwik\Date;
-use Piwik\Plugin\Dependency as PluginDependency;
-
-/**
- *
- */
-class Marketplace
-{
-    /**
-     * @var MarketplaceApiClient
-     */
-    private $client;
-
-    public function __construct()
-    {
-        $this->client = new MarketplaceApiClient();
-    }
-
-    public function getPluginInfo($pluginName)
-    {
-        $marketplace = new MarketplaceApiClient();
-
-        $plugin = $marketplace->getPluginInfo($pluginName);
-        $plugin = $this->enrichPluginInformation($plugin);
-
-        return $plugin;
-    }
-
-    public function getAvailablePluginNames($themesOnly)
-    {
-        if ($themesOnly) {
-            $plugins = $this->client->searchForThemes('', '', '');
-        } else {
-            $plugins = $this->client->searchForPlugins('', '', '');
-        }
-
-        $names = array();
-        foreach ($plugins as $plugin) {
-            $names[] = $plugin['name'];
-        }
-
-        return $names;
-    }
-
-    public function getAllAvailablePluginNames()
-    {
-        return array_merge(
-            $this->getAvailablePluginNames(true),
-            $this->getAvailablePluginNames(false)
-        );
-    }
-
-    public function searchPlugins($query, $sort, $themesOnly)
-    {
-        if ($themesOnly) {
-            $plugins = $this->client->searchForThemes('', $query, $sort);
-        } else {
-            $plugins = $this->client->searchForPlugins('', $query, $sort);
-        }
-
-        foreach ($plugins as $key => $plugin) {
-            $plugins[$key] = $this->enrichPluginInformation($plugin);
-        }
-
-        return $plugins;
-    }
-
-    private function getPluginUpdateInformation($plugin)
-    {
-        if (empty($plugin['name'])) {
-            return;
-        }
-
-        $pluginsHavingUpdate = $this->getPluginsHavingUpdate($plugin['isTheme']);
-
-        foreach ($pluginsHavingUpdate as $pluginHavingUpdate) {
-            if ($plugin['name'] == $pluginHavingUpdate['name']) {
-                return $pluginHavingUpdate;
-            }
-        }
-    }
-
-    private function hasPluginUpdate($plugin)
-    {
-        $update = $this->getPluginUpdateInformation($plugin);
-
-        return !empty($update);
-    }
-
-    /**
-     * @param bool $themesOnly
-     * @return array
-     */
-    public function getPluginsHavingUpdate($themesOnly)
-    {
-        $pluginManager = \Piwik\Plugin\Manager::getInstance();
-        $pluginManager->loadAllPluginsAndGetTheirInfo();
-        $loadedPlugins = $pluginManager->getLoadedPlugins();
-
-        try {
-            $pluginsHavingUpdate = $this->client->getInfoOfPluginsHavingUpdate($loadedPlugins, $themesOnly);
-        } catch (\Exception $e) {
-            $pluginsHavingUpdate = array();
-        }
-
-        foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
-            foreach ($loadedPlugins as $loadedPlugin) {
-                if (!empty($updatePlugin['name'])
-                    && $loadedPlugin->getPluginName() == $updatePlugin['name']
-                ) {
-                    $updatePlugin['currentVersion'] = $loadedPlugin->getVersion();
-                    $updatePlugin['isActivated'] = $pluginManager->isPluginActivated($updatePlugin['name']);
-                    $pluginsHavingUpdate[$key] = $this->addMissingRequirements($updatePlugin);
-                    break;
-                }
-            }
-        }
-
-        // remove plugins that have updates but for some reason are not loaded
-        foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
-            if (empty($updatePlugin['currentVersion'])) {
-                unset($pluginsHavingUpdate[$key]);
-            }
-        }
-
-        return $pluginsHavingUpdate;
-    }
-
-    private function enrichPluginInformation($plugin)
-    {
-        $plugin['isInstalled']  = \Piwik\Plugin\Manager::getInstance()->isPluginLoaded($plugin['name']);
-        $plugin['canBeUpdated'] = $plugin['isInstalled'] && $this->hasPluginUpdate($plugin);
-        if (!empty($plugin['lastUpdated'])) {
-            $plugin['lastUpdated']  = Date::factory($plugin['lastUpdated'])->getLocalized(Date::DATE_FORMAT_SHORT);
-        }
-
-        if ($plugin['canBeUpdated']) {
-            $pluginUpdate = $this->getPluginUpdateInformation($plugin);
-            $plugin['repositoryChangelogUrl'] = $pluginUpdate['repositoryChangelogUrl'];
-            $plugin['currentVersion']         = $pluginUpdate['currentVersion'];
-        }
-
-        if (!empty($plugin['activity']['lastCommitDate'])
-            && false === strpos($plugin['activity']['lastCommitDate'], '0000')) {
-
-            $plugin['activity']['lastCommitDate'] = Date::factory($plugin['activity']['lastCommitDate'])->getLocalized(Date::DATE_FORMAT_LONG);
-        } else {
-            $plugin['activity']['lastCommitDate'] = null;
-        }
-
-        if (!empty($plugin['versions'])) {
-
-            foreach ($plugin['versions'] as $index => $version) {
-                if (!empty($version['release'])) {
-                    $plugin['versions'][$index]['release'] = Date::factory($version['release'])->getLocalized(Date::DATE_FORMAT_LONG);
-                }
-            }
-        }
-
-        $plugin = $this->addMissingRequirements($plugin);
-
-        return $plugin;
-    }
-
-    /**
-     * @param $plugin
-     */
-    private function addMissingRequirements($plugin)
-    {
-        $plugin['missingRequirements'] = array();
-
-        if (empty($plugin['versions']) || !is_array($plugin['versions'])) {
-            return $plugin;
-        }
-
-        $latestVersion = $plugin['versions'][count($plugin['versions']) - 1];
-
-        if (empty($latestVersion['requires'])) {
-            return $plugin;
-        }
-
-        $requires = $latestVersion['requires'];
-
-        $dependency = new PluginDependency();
-        $plugin['missingRequirements'] = $dependency->getMissingDependencies($requires);
-
-        return $plugin;
-    }
-}
diff --git a/plugins/CorePluginsAdmin/MarketplaceApiClient.php b/plugins/CorePluginsAdmin/MarketplaceApiClient.php
deleted file mode 100644
index eebc3d843b9ee0eb8f61284ffb77197b2e01df5c..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/MarketplaceApiClient.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Plugins\CorePluginsAdmin;
-
-use Piwik\Cache;
-use Piwik\Container\StaticContainer;
-use Piwik\Http;
-use Piwik\Version;
-
-/**
- *
- */
-class MarketplaceApiClient
-{
-    const CACHE_TIMEOUT_IN_SECONDS = 1200;
-    const HTTP_REQUEST_TIMEOUT = 60;
-
-    private $domain = 'http://plugins.piwik.org';
-
-    public static function clearAllCacheEntries()
-    {
-        $cache = Cache::getLazyCache();
-        $cache->flushAll();
-    }
-
-    public function getPluginInfo($name)
-    {
-        $action = sprintf('plugins/%s/info', $name);
-
-        return $this->fetch($action, array());
-    }
-
-    public function download($pluginOrThemeName, $target)
-    {
-        $downloadUrl = $this->getDownloadUrl($pluginOrThemeName);
-
-        if (empty($downloadUrl)) {
-            return false;
-        }
-
-        $success = Http::fetchRemoteFile($downloadUrl, $target, 0, static::HTTP_REQUEST_TIMEOUT);
-
-        return $success;
-    }
-
-    /**
-     * @param \Piwik\Plugin[] $plugins
-     * @return array|mixed
-     */
-    public function checkUpdates($plugins)
-    {
-        $params = array();
-
-        foreach ($plugins as $plugin) {
-            $pluginName = $plugin->getPluginName();
-            if (!\Piwik\Plugin\Manager::getInstance()->isPluginBundledWithCore($pluginName)) {
-                $params[] = array('name' => $plugin->getPluginName(), 'version' => $plugin->getVersion());
-            }
-        }
-
-        if (empty($params)) {
-            return array();
-        }
-
-        $params = array('plugins' => $params);
-
-        $hasUpdates = $this->fetch('plugins/checkUpdates', array('plugins' => json_encode($params)));
-
-        if (empty($hasUpdates)) {
-            return array();
-        }
-
-        return $hasUpdates;
-    }
-
-    /**
-     * @param  \Piwik\Plugin[] $plugins
-     * @param  bool $themesOnly
-     * @return array
-     */
-    public function getInfoOfPluginsHavingUpdate($plugins, $themesOnly)
-    {
-        $hasUpdates = $this->checkUpdates($plugins);
-
-        $pluginDetails = array();
-
-        foreach ($hasUpdates as $pluginHavingUpdate) {
-            $plugin = $this->getPluginInfo($pluginHavingUpdate['name']);
-            $plugin['repositoryChangelogUrl'] = $pluginHavingUpdate['repositoryChangelogUrl'];
-
-            if (!empty($plugin['isTheme']) == $themesOnly) {
-                $pluginDetails[] = $plugin;
-            }
-        }
-
-        return $pluginDetails;
-    }
-
-    public function searchForPlugins($keywords, $query, $sort)
-    {
-        $response = $this->fetch('plugins', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort));
-
-        if (!empty($response['plugins'])) {
-            return $response['plugins'];
-        }
-
-        return array();
-    }
-
-    public function searchForThemes($keywords, $query, $sort)
-    {
-        $response = $this->fetch('themes', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort));
-
-        if (!empty($response['plugins'])) {
-            return $response['plugins'];
-        }
-
-        return array();
-    }
-
-    private function getPhpVersion()
-    {
-        return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION;
-    }
-
-    public static function getPiwikVersion()
-    {
-        return StaticContainer::get('marketplacePiwikVersion');
-    }
-
-    private function fetch($action, $params)
-    {
-        $params['php'] = $this->getPhpVersion();
-        $params['piwik'] = self::getPiwikVersion();
-        $params['prefer_stable'] = '1';
-        ksort($params);
-        $query = http_build_query($params);
-
-        $cacheId = $this->getCacheKey($action, $query);
-        $cache  = $this->buildCache();
-        $result = $cache->fetch($cacheId);
-
-        if (false === $result) {
-            $endpoint = $this->domain . '/api/2.0/';
-            $url = sprintf('%s%s?%s', $endpoint, $action, $query);
-            $response = Http::sendHttpRequest($url, static::HTTP_REQUEST_TIMEOUT);
-            $result = json_decode($response, true);
-
-            if (is_null($result)) {
-                $message = sprintf('There was an error reading the response from the Marketplace: %s. Please try again later.',
-                    substr($response, 0, 50));
-                throw new MarketplaceApiException($message);
-            }
-
-            if (!empty($result['error'])) {
-                throw new MarketplaceApiException($result['error']);
-            }
-
-            $cache->save($cacheId, $result, self::CACHE_TIMEOUT_IN_SECONDS);
-        }
-
-        return $result;
-    }
-
-    private function buildCache()
-    {
-        return Cache::getLazyCache();
-    }
-
-    private function getCacheKey($action, $query)
-    {
-        return sprintf('marketplace.api.2.0.%s.%s', str_replace('/', '.', $action), md5($query));
-    }
-
-    /**
-     * @param  $pluginOrThemeName
-     * @throws MarketplaceApiException
-     * @return string
-     */
-    public function getDownloadUrl($pluginOrThemeName)
-    {
-        $plugin = $this->getPluginInfo($pluginOrThemeName);
-
-        if (empty($plugin['versions'])) {
-            throw new MarketplaceApiException('Plugin has no versions.');
-        }
-
-        $latestVersion = array_pop($plugin['versions']);
-        $downloadUrl = $latestVersion['download'];
-
-        return $this->domain . $downloadUrl . '?coreVersion=' . self::getPiwikVersion();
-    }
-
-}
diff --git a/plugins/CorePluginsAdmin/Menu.php b/plugins/CorePluginsAdmin/Menu.php
index 69a69b9e7f6a1e2a198382f7791c91068d73f6ee..8e1b57ef4053d6c08ebe51a5d5d4445ab44e0778 100644
--- a/plugins/CorePluginsAdmin/Menu.php
+++ b/plugins/CorePluginsAdmin/Menu.php
@@ -8,30 +8,43 @@
  */
 namespace Piwik\Plugins\CorePluginsAdmin;
 
-use Piwik\Db;
+use Piwik\Container\StaticContainer;
 use Piwik\Menu\MenuAdmin;
 use Piwik\Piwik;
+use Piwik\Plugins\Marketplace\Marketplace;
+use Piwik\Plugins\Marketplace\Plugins;
 
-/**
- */
 class Menu extends \Piwik\Plugin\Menu
 {
+    private $marketplacePlugins;
+
+    /**
+     * Menu constructor.
+     * @param Plugins $marketplacePlugins
+     */
+    public function __construct($marketplacePlugins = null)
+    {
+        if (!empty($marketplacePlugins)) {
+            $this->marketplacePlugins = $marketplacePlugins;
+        } elseif (Marketplace::isMarketplaceEnabled()) {
+            // we load it manually as marketplace plugin might not be loaded
+            $this->marketplacePlugins = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins');
+        }
+    }
 
     public function configureAdminMenu(MenuAdmin $menu)
     {
         $hasSuperUserAcess    = Piwik::hasUserSuperUserAccess();
         $isAnonymous          = Piwik::isUserIsAnonymous();
-        $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
+        $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
 
         $pluginsUpdateMessage = '';
 
-        if ($hasSuperUserAcess && $isMarketplaceEnabled) {
-            $marketplace = new Marketplace();
-            $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false);
-            $themesHavingUpdate  = $marketplace->getPluginsHavingUpdate($themesOnly = true);
+        if ($hasSuperUserAcess && $isMarketplaceEnabled && $this->marketplacePlugins) {
+            $pluginsHavingUpdate = $this->marketplacePlugins->getPluginsHavingUpdate();
 
             if (!empty($pluginsHavingUpdate)) {
-                $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate) + count($themesHavingUpdate));
+                $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate));
             }
         }
 
@@ -44,18 +57,6 @@ class Menu extends \Piwik\Plugin\Menu
                 $this->urlForAction('plugins', array('activated' => '')),
                 $order = 20);
         }
-
-        if ($this->isAllowedToSeeMarketPlace()) {
-            $menu->addPlatformItem('CorePluginsAdmin_Marketplace',
-                $this->urlForAction('marketplace', array('activated' => '', 'mode' => 'user')),
-                $order = 5);
-        }
     }
 
-    private function isAllowedToSeeMarketPlace()
-    {
-        $isAnonymous          = Piwik::isUserIsAnonymous();
-        $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
-        return $isMarketplaceEnabled && !$isAnonymous;
-    }
 }
diff --git a/plugins/CorePluginsAdmin/PluginInstaller.php b/plugins/CorePluginsAdmin/PluginInstaller.php
index ab4f7b8622ac627676337a8e4d7e6f883bdea1df..d2fad35c7697cf849087a08184a798915663a952 100644
--- a/plugins/CorePluginsAdmin/PluginInstaller.php
+++ b/plugins/CorePluginsAdmin/PluginInstaller.php
@@ -8,13 +8,16 @@
  */
 namespace Piwik\Plugins\CorePluginsAdmin;
 
+use Piwik\Common;
 use Piwik\Container\StaticContainer;
 use Piwik\Filechecks;
 use Piwik\Filesystem;
 use Piwik\Piwik;
 use Piwik\Plugin\Manager as PluginManager;
 use Piwik\Plugin\Dependency as PluginDependency;
+use Piwik\Plugins\Marketplace\Marketplace;
 use Piwik\Unzip;
+use Piwik\Plugins\Marketplace\Api\Client;
 
 /**
  *
@@ -26,22 +29,38 @@ class PluginInstaller
 
     private $pluginName;
 
-    public function __construct($pluginName)
+    /**
+     * Null if Marketplace Plugin is not installed
+     * @var Client|null
+     */
+    private $marketplaceClient;
+
+    /**
+     * PluginInstaller constructor.
+     * @param Client|null $client
+     */
+    public function __construct($client = null)
     {
-        $this->pluginName = $pluginName;
+        if (!empty($client)) {
+            $this->marketplaceClient = $client;
+        } elseif (Marketplace::isMarketplaceEnabled()) {
+            // we load it manually as marketplace might not be loaded
+            $this->marketplaceClient = StaticContainer::get('Piwik\Plugins\Marketplace\Api\Client');
+        }
     }
 
-    public function installOrUpdatePluginFromMarketplace()
+    public function installOrUpdatePluginFromMarketplace($pluginName)
     {
-        $tmpPluginPath = StaticContainer::get('path.tmp') . '/latest/plugins/';
+        $this->checkMarketplaceIsEnabled();
 
-        $tmpPluginZip = $tmpPluginPath . $this->pluginName . '.zip';
-        $tmpPluginFolder = $tmpPluginPath . $this->pluginName;
+        $this->pluginName = $pluginName;
 
         try {
             $this->makeSureFoldersAreWritable();
             $this->makeSurePluginNameIsValid();
-            $this->downloadPluginFromMarketplace($tmpPluginZip);
+
+            $tmpPluginZip = $this->downloadPluginFromMarketplace();
+            $tmpPluginFolder = dirname($tmpPluginZip) . '/' . basename($tmpPluginZip, '.zip') .  '/';
             $this->extractPluginFiles($tmpPluginZip, $tmpPluginFolder);
             $this->makeSurePluginJsonExists($tmpPluginFolder);
             $metadata = $this->getPluginMetadataIfValid($tmpPluginFolder);
@@ -50,15 +69,22 @@ class PluginInstaller
 
             Filesystem::deleteAllCacheOnUpdate($this->pluginName);
 
-            $plugin = PluginManager::getInstance()->getLoadedPlugin($this->pluginName);
-            if (!empty($plugin)) {
-                $plugin->reloadPluginInformation();
+            $pluginManager = PluginManager::getInstance();
+            if ($pluginManager->isPluginLoaded($this->pluginName)) {
+                $plugin = PluginManager::getInstance()->getLoadedPlugin($this->pluginName);
+                if (!empty($plugin)) {
+                    $plugin->reloadPluginInformation();
+                }
             }
 
         } catch (\Exception $e) {
 
-            $this->removeFileIfExists($tmpPluginZip);
-            $this->removeFolderIfExists($tmpPluginFolder);
+            if (!empty($tmpPluginZip)) {
+                Filesystem::deleteFileIfExists($tmpPluginZip);
+            }
+            if (!empty($tmpPluginFolder)) {
+                $this->removeFolderIfExists($tmpPluginFolder);
+            }
 
             throw $e;
         }
@@ -69,7 +95,8 @@ class PluginInstaller
 
     public function installOrUpdatePluginFromFile($pathToZip)
     {
-        $tmpPluginFolder = StaticContainer::get('path.tmp') . self::PATH_TO_DOWNLOAD . $this->pluginName;
+        $tmpPluginName = 'uploaded' . Common::generateUniqId();
+        $tmpPluginFolder = StaticContainer::get('path.tmp') . self::PATH_TO_DOWNLOAD . $tmpPluginName;
 
         try {
             $this->makeSureFoldersAreWritable();
@@ -108,18 +135,18 @@ class PluginInstaller
         ));
     }
 
-    private function downloadPluginFromMarketplace($pluginZipTargetFile)
+    /**
+     * @return false|string   false on failed download, or a path to the downloaded zip file
+     * @throws PluginInstallerException
+     */
+    private function downloadPluginFromMarketplace()
     {
-        $this->removeFileIfExists($pluginZipTargetFile);
-
-        $marketplace = new MarketplaceApiClient();
-
         try {
-            $marketplace->download($this->pluginName, $pluginZipTargetFile);
+            return $this->marketplaceClient->download($this->pluginName);
         } catch (\Exception $e) {
 
             try {
-                $downloadUrl = $marketplace->getDownloadUrl($this->pluginName);
+                $downloadUrl = $this->marketplaceClient->getDownloadUrl($this->pluginName);
                 $errorMessage = sprintf('Failed to download plugin from %s: %s', $downloadUrl, $e->getMessage());
 
             } catch (\Exception $ex) {
@@ -166,10 +193,8 @@ class PluginInstaller
             $requires = (array) $metadata->require;
         }
 
-        $piwikVersion = MarketplaceApiClient::getPiwikVersion();
-
         $dependency = new PluginDependency();
-        $dependency->setPiwikVersion($piwikVersion);
+        $dependency->setEnvironment($this->marketplaceClient->getEnvironment());
         $missingDependencies = $dependency->getMissingDependencies($requires);
 
         if (!empty($missingDependencies)) {
@@ -289,9 +314,7 @@ class PluginInstaller
      */
     private function removeFileIfExists($targetTmpFile)
     {
-        if (file_exists($targetTmpFile)) {
-            unlink($targetTmpFile);
-        }
+        Filesystem::deleteFileIfExists($targetTmpFile);
     }
 
     /**
@@ -300,8 +323,7 @@ class PluginInstaller
     private function makeSurePluginNameIsValid()
     {
         try {
-            $marketplace = new MarketplaceApiClient();
-            $pluginDetails = $marketplace->getPluginInfo($this->pluginName);
+            $pluginDetails = $this->marketplaceClient->getPluginInfo($this->pluginName);
         } catch (\Exception $e) {
             throw new PluginInstallerException($e->getMessage());
         }
@@ -311,4 +333,11 @@ class PluginInstaller
         }
     }
 
+    private function checkMarketplaceIsEnabled()
+    {
+        if (!isset($this->marketplaceClient)) {
+            throw new PluginInstallerException('Marketplace plugin needs to be enabled to perform this action.');
+        }
+    }
+
 }
diff --git a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js b/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js
deleted file mode 100644
index e528c03bd09d4818f86cb854f6046a8a26b3578e..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*!
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-marketplace>
- */
-(function () {
-
-    angular.module('piwikApp').directive('piwikMarketplace', piwikMarketplace);
-
-    piwikMarketplace.$inject = ['piwik', '$timeout'];
-
-    function piwikMarketplace(piwik, $timeout){
-
-        return {
-            restrict: 'A',
-            compile: function (element, attrs) {
-
-                return function (scope, element, attrs) {
-
-                    $timeout(function () {
-
-                        $('.uploadPlugin').click(function (event) {
-                            event.preventDefault();
-
-                            piwikHelper.modalConfirm('#installPluginByUpload', {
-                                yes: function () {
-                                    window.location = link;
-                                }
-                            });
-                        });
-
-                        $('#uploadPluginForm').submit(function (event) {
-
-                            var $zipFile = $('[name=pluginZip]');
-                            var fileName = $zipFile.val();
-
-                            if (!fileName || '.zip' != fileName.slice(-4)) {
-                                event.preventDefault();
-                                alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));
-                            }
-                        });
-
-                        // Keeps the plugin descriptions the same height
-                        $('.marketplace .plugin .description').dotdotdot({
-                            after: 'a.more',
-                            watch: 'window'
-                        });
-                    });
-                };
-            }
-        };
-    }
-})();
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js b/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js
index e09c1e3d28c8823722f57f1fdd66c77df3f7df4f..404d9a40a58b90415af8847d24cfc3a617c1f60a 100644
--- a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js
+++ b/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js
@@ -58,26 +58,6 @@
                         piwikHelper.modalConfirm('#'+overlayId, {});
                     });
 
-                    $('.uploadPlugin').click(function (event) {
-                        event.preventDefault();
-
-                        piwikHelper.modalConfirm('#installPluginByUpload', {
-                            yes: function () {
-                                window.location = link;
-                            }
-                        });
-                    });
-
-                    $('#uploadPluginForm').submit(function (event) {
-
-                        var $zipFile = $('[name=pluginZip]');
-                        var fileName = $zipFile.val();
-
-                        if (!fileName || '.zip' != fileName.slice(-4)) {
-                            event.preventDefault();
-                            alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));
-                        }
-                    });
                 };
             }
         };
diff --git a/plugins/CorePluginsAdmin/config/config.php b/plugins/CorePluginsAdmin/config/config.php
deleted file mode 100644
index 5d30748a94503f18f374f646f5d01eb7ca9c6248..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/config/config.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-return array(
-    'marketplacePiwikVersion' => function () {
-        return \Piwik\Version::VERSION;
-    }
-);
diff --git a/plugins/CorePluginsAdmin/lang/en.json b/plugins/CorePluginsAdmin/lang/en.json
index 05199477475749039351523145dc7f356471a346..1fe5a78fa99a4cadcf4a1ce5cb66254803011892 100644
--- a/plugins/CorePluginsAdmin/lang/en.json
+++ b/plugins/CorePluginsAdmin/lang/en.json
@@ -1,43 +1,27 @@
 {
     "CorePluginsAdmin": {
-        "ActionActivatePlugin": "Activate plugin",
-        "ActionActivateTheme": "Activate theme",
-        "ActionInstall": "Install",
         "ActionUninstall": "Uninstall",
         "Activate": "Activate",
         "Activated": "Activated",
         "Active": "Active",
         "Activity": "Activity",
-        "AllowedUploadFormats": "You may upload a plugin or theme in .zip format via this page.",
+        "AlwaysActivatedPluginsList": "The following plugins are always activated and cannot be disabled: %s",
         "AuthorHomepage": "Author Homepage",
-        "Authors": "Authors",
-        "BackToExtendPiwik": "Back to Marketplace",
-        "BeCarefulUsingPlugins": "Plugins that are not authored by Piwik team must be used with care: we did not review them.",
-        "BeCarefulUsingThemes": "Themes that are not authored by Piwik team must be used with care: we did not review them.",
-        "ByXDevelopers": "by %s developers",
-        "CannotInstall": "Cannot install (help)",
         "Changelog": "Changelog",
         "ChangeSettingsPossible": "You can change %1$ssettings%2$s for this plugin.",
         "CorePluginTooltip": "Core plugins have no version since they are distributed with Piwik.",
         "Deactivate": "Deactivate",
-        "Developer": "Developer",
-        "DevelopersLearnHowToDevelopPlugins": "Developers: Learn how you can extend and customize Piwik by %1$sdeveloping plugins or themes%2$s.",
         "DoMoreContactPiwikAdmins": "To install a new plugin or a new theme, please get in touch with your Piwik admins.",
-        "FeaturedPlugin": "Featured plugin",
         "ChangeLookByManageThemes": "You can change the appearance of Piwik by %1$sManaging Themes%2$s.",
-        "GetEarlyAccessForPaidPlugins": "Note: all plugins are available for free at present; in the future we will enable Paid Plugins in the Marketplace (%1$scontact us%2$s for early access).",
         "History": "History",
         "Inactive": "Inactive",
+        "InstalledPlugins": "Installed plugins",
+        "InstalledThemes": "Installed themes",
         "InfoPluginUpdateIsRecommended": "Update your plugins now to benefit from the latest improvements.",
         "InfoThemeIsUsedByOtherUsersAsWell": "Note: the other %1$s users registered in this Piwik are also using the theme %2$s.",
         "InfoThemeUpdateIsRecommended": "Update your themes to enjoy the latest version.",
-        "InstallingPlugin": "Installing %s",
         "InstallNewPlugins": "Install new plugins",
         "InstallNewThemes": "Install new themes",
-        "InstalledPlugins": "Installed plugins",
-        "InstalledThemes": "Installed themes",
-        "LastCommitTime": "(last commit %s)",
-        "LastUpdated": "Last Updated",
         "LicenseHomepage": "License Homepage",
         "LikeThisPlugin": "Like this plugin?",
         "ConsiderDonating": "Consider donating",
@@ -45,66 +29,38 @@
         "ConsiderDonatingCreatorOf": "Please consider donating to the creator of %s",
         "PluginsExtendPiwik": "Plugins extend and expand the functionality of Piwik.",
         "OncePluginIsInstalledYouMayActivateHere": "Once a plugin is installed, you may activate it or deactivate it here.",
-        "Marketplace": "Marketplace",
-        "MarketplaceSellPluginSubject": "Marketplace - Sell Plugin",
         "MenuPlatform": "Platform",
         "MissingRequirementsNotice": "Please update %1$s %2$s to a newer version, %1$s %3$s is required.",
         "MissingRequirementsPleaseInstallNotice": "Please install %1$s %2$s as it is required by %3$s.",
-        "NewVersion": "new version",
-        "NoPluginsFound": "No plugins found",
-        "NoPluginSettings": "No plugin settings that can be configured",
-        "NotAllowedToBrowseMarketplacePlugins": "You can browse the list of plugins that can be installed to customize or extend your Piwik platform. Please contact your administrator if you need any of these installed.",
-        "NotAllowedToBrowseMarketplaceThemes": "You can browse the list of themes that can be installed to customize the appearance of the Piwik platform. Please contact your administrator to get any of these installed for you.",
-        "NoThemesFound": "No themes found",
         "NoZipFileSelected": "Please select a ZIP file.",
-        "NumDownloadsLatestVersion": "Latest version: %s Downloads",
         "NumUpdatesAvailable": "%s Update(s) available",
+        "NoPluginSettings": "No plugin settings that can be configured",
         "Origin": "Origin",
         "OriginCore": "Core",
         "OriginThirdParty": "Third-party",
         "PluginHomepage": "Plugin Homepage",
-        "PluginKeywords": "Keywords",
         "PluginNotCompatibleWith": "%1$s plugin is not compatible with %2$s.",
         "PluginNotWorkingAlternative": "If you've been using this plugin, maybe you can find a more recent version in the Marketplace. If not, you may want to uninstall it.",
         "PluginRequirement": "%1$s requires %2$s.",
         "PluginsManagement": "Manage Plugins",
-        "PluginUpdateAvailable": "You are using version %1$s and a new version %2$s is available.",
-        "PluginVersionInfo": "%1$s from %2$s",
-        "PluginWebsite": "Plugin Website",
-        "Screenshots": "Screenshots",
-        "SortByAlpha": "Alpha",
-        "SortByNewest": "Newest",
-        "SortByPopular": "Popular",
+        "NotDownloadable": "Not downloadable",
+        "PluginNotDownloadable": "The plugin is not downloadable.",
+        "PluginNotDownloadablePaidReason": "Possible reasons are an expired or exceeded license.",
+        "PluginActivated": "Plugin activated",
         "Status": "Status",
-        "StepDownloadingPluginFromMarketplace": "Downloading plugin from Marketplace",
-        "StepDownloadingThemeFromMarketplace": "Downloading theme from Marketplace",
-        "StepPluginSuccessfullyInstalled": "You have successfully installed the plugin %1$s %2$s.",
-        "StepPluginSuccessfullyUpdated": "You have successfully updated the plugin %1$s %2$s.",
-        "StepReplaceExistingPlugin": "Replacing existing plugin",
-        "StepReplaceExistingTheme": "Replacing existing theme",
-        "StepThemeSuccessfullyInstalled": "You have successfully installed the theme %1$s %2$s.",
-        "StepThemeSuccessfullyUpdated": "You have successfully updated the theme %1$s %2$s.",
-        "StepUnzippingPlugin": "Unzipping plugin",
-        "StepUnzippingTheme": "Unzipping theme",
         "SuccessfullyActicated": "You have successfully activated <strong>%s<\/strong>.",
-        "Support": "Support",
         "TeaserExtendPiwik": "Extend Piwik with Plugins and Themes",
         "TeaserExtendPiwikByPlugin": "Extend Piwik by %1$sinstalling a new plugin%2$s.",
         "TeaserExtendPiwikByTheme": "Enjoy another look & feel by %1$sinstalling a new theme%2$s.",
-        "TeaserExtendPiwikByUpload": "Extend Piwik by uploading a ZIP file",
         "InstallingNewPluginViaMarketplaceOrUpload": "You may automatically install plugins from the Marketplace or %1$supload a plugin%2$s in .zip format.",
         "Theme": "Theme",
         "Themes": "Themes",
         "ThemesDescription": "Themes can change the appearance of Piwik user interface, and provide a completely new visual experience to enjoy your analytics reports.",
         "ThemesManagement": "Manage Themes",
         "UninstallConfirm": "You are about to uninstall a plugin %s. The plugin will be completely removed from your platform and it won't be recoverable. Are you sure you want to do this?",
-        "Updated": "Updated",
-        "UpdatingPlugin": "Updating %s",
-        "UploadZipFile": "Upload ZIP file",
         "Version": "Version",
-        "ViewRepositoryChangelog": "View the changes",
         "ViewAllMarketplacePlugins": "View all Marketplace plugins",
-        "Websites": "Websites",
-        "WeDeactivatedThePluginAsItHasMissingDependencies": "We disabled the plugin %s as it has missing dependencies:"
+        "WeDeactivatedThePluginAsItHasMissingDependencies": "We disabled the plugin %s as it has missing dependencies:",
+        "Websites": "Websites"
     }
 }
diff --git a/plugins/CorePluginsAdmin/lang/hr.json b/plugins/CorePluginsAdmin/lang/hr.json
deleted file mode 100644
index 3b6c746dd3367a530b5505310ce3ab043460bf2a..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/lang/hr.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "CorePluginsAdmin": {
-        "ActionInstall": "Instaliraj"
-    }
-}
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less b/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less
index 467b9fe49bfbf11657c8069b3934c3521b1d62c8..0adcbc12169a5a417ee3acc04c45b19e6114d0b9 100644
--- a/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less
+++ b/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less
@@ -1,6 +1,28 @@
+.pluginsManagement {
+    .footer-message {
+       margin-top: 32px;
+        .font-default(13px, 21px);
+    }
+}
+
+table.dataTable tr.active-plugin > td {
+    background-color:@theme-color-background-base !important;
+}
+
+table.dataTable tr.active-plugin:hover > td {
+    background-color:@theme-color-background-base !important;
+}
+
+table.dataTable tr.inactive-plugin > td {
+    background-color:#ddd !important;
+}
+
+table.dataTable tr.inactive-plugin:hover > td {
+    background-color:#ddd !important;
+}
 
 .plugin-desc-text {
-    margin-top:0em;
+    margin-top:0;
     margin-bottom:1.5em;
 }
 
@@ -44,12 +66,6 @@
 
 .plugin-license {
     float:right;
-    font-style:italic;
-}
-
-.plugin-homepage {
-    font-size:.8em;
-    font-style:italic;
 }
 
 table.entityTable tr td .plugin-homepage a {
@@ -96,7 +112,6 @@ table.entityTable tr td a.uninstall {
 
     .plugin-desc-missingrequirements {
         font-weight:bold;
-        font-style: italic;
         a {
             text-decoration: underline !important;
             color: black;
@@ -107,7 +122,6 @@ table.entityTable tr td a.uninstall {
         text-align: right;
         width: 100%;
         display: inline-block;
-        font-style: italic;
     }
 }
 
diff --git a/plugins/CorePluginsAdmin/templates/installPlugin.twig b/plugins/CorePluginsAdmin/templates/installPlugin.twig
deleted file mode 100644
index 9f55777684ccaaf6460518b045b6833e0e5cff2b..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/templates/installPlugin.twig
+++ /dev/null
@@ -1,41 +0,0 @@
-{% extends 'admin.twig' %}
-
-{% block content %}
-
-    <div style="max-width:980px;">
-
-        <h2>{{ 'CorePluginsAdmin_InstallingPlugin'|translate(plugin.name) }}</h2>
-
-        <div>
-
-            {% if plugin.isTheme %}
-
-                <p>{{ 'CorePluginsAdmin_StepDownloadingThemeFromMarketplace'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepUnzippingTheme'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
-
-                <p><strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivateTheme'|translate }}</a></strong>
-
-                    |
-                    <a href="{{ linkTo({'action': 'browseThemes'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a></p>
-
-            {% else %}
-
-                <p>{{ 'CorePluginsAdmin_StepDownloadingPluginFromMarketplace'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepUnzippingPlugin'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
-
-                <p><strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivatePlugin'|translate }}</a></strong>
-
-                    |
-                    <a href="{{ linkTo({'action': 'browsePlugins'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a></p>
-
-            {% endif %}
-        </div>
-    </div>
-
-{% endblock %}
diff --git a/plugins/CorePluginsAdmin/templates/license.twig b/plugins/CorePluginsAdmin/templates/license.twig
new file mode 100644
index 0000000000000000000000000000000000000000..9b2c9c0ae21b5b161154cb4aa01cf6095d427573
--- /dev/null
+++ b/plugins/CorePluginsAdmin/templates/license.twig
@@ -0,0 +1,4 @@
+
+<h1>License for {{ pluginName|raw }}</h1>
+
+{{ license|raw }}
diff --git a/plugins/CorePluginsAdmin/templates/macros.twig b/plugins/CorePluginsAdmin/templates/macros.twig
index eca8e609a66e3257964c705e876f6926269cd1d6..78be51f24e41423459a9377ad1497419184114f8 100644
--- a/plugins/CorePluginsAdmin/templates/macros.twig
+++ b/plugins/CorePluginsAdmin/templates/macros.twig
@@ -1,9 +1,11 @@
-{% macro tablePluginUpdates(pluginsHavingUpdate, nonce, isTheme) %}
+
+{% macro tablePluginUpdates(pluginsHavingUpdate, updateNonce, isMultiServerEnvironment) %}
+    {% import '@Marketplace/macros.twig' as marketplaceMacro %}
 
     <table piwik-content-table>
         <thead>
         <tr>
-            <th>{% if isTheme %}{{ 'CorePluginsAdmin_Theme'|translate }}{% else %}{{ 'General_Plugin'|translate }}{% endif %}</th>
+            <th>{{ 'General_Plugin'|translate }}</th>
             <th class="num">{{ 'CorePluginsAdmin_Version'|translate }}</th>
             <th>{{ 'General_Description'|translate }}</th>
             <th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
@@ -27,7 +29,7 @@
                 </td>
                 <td class="desc">
                     {{ plugin.description }}
-                    {{ _self.missingRequirementsPleaseUpdateNotice(plugin) }}
+                    {{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
                 </td>
                 <td class="status">
                     {% if plugin.isActivated %}
@@ -37,8 +39,13 @@
                     {% endif %}
                 </td>
                 <td class="togl action-links">
-                    {% if 0 == plugin.missingRequirements|length %}
-                        <a href="{{ linkTo({'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': nonce}) }}">Update</a>
+                    {% if plugin.isDownloadable is defined and not plugin.isDownloadable %}
+                        <span title="{{ 'CorePluginsAdmin_PluginNotDownloadable'|translate|e('html_attr') }} {% if plugin.isPaid %}{{ 'CorePluginsAdmin_PluginNotDownloadablePaidReason'|translate|e('html_attr') }}{% endif %}"
+                          >{{ 'CorePluginsAdmin_NotDownloadable'|translate|e('html_attr') }}</span>
+                    {% elseif isMultiServerEnvironment %}
+                        <a onclick="$(this).css('display', 'none')" href="{{ linkTo({'action':'download', 'module': 'Marketplace', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}">{{ 'General_Download'|translate }}</a>
+                    {% elseif 0 == plugin.missingRequirements|length %}
+                        <a href="{{ linkTo({'action':'updatePlugin', 'module': 'Marketplace', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
                     {% else %}
                         -
                     {% endif %}
@@ -50,16 +57,15 @@
 
 {% endmacro %}
 
-{% macro pluginDeveloper(owner) %}
-    {% if 'piwik' == owner %}<img title="Piwik" alt="Piwik" style="padding-bottom:2px;height:11px;" src="plugins/Morpheus/images/logo-marketplace.png"/>{% else %}{{ owner }}{% endif %}
-{% endmacro %}
-
-{% macro featuredIcon(align='') %}
-    <img class="featuredIcon"
-         title="{{ 'CorePluginsAdmin_FeaturedPlugin'|translate }}"
-         src="plugins/CorePluginsAdmin/images/rating_important.png"
-         align="{{ align }}" />
-{% endmacro %}
+{% macro pluginActivateDeactivateAction(name, isActivated, missingRequirements, deactivateNonce, activateNonce) -%}
+    {%- if isActivated -%}
+        <a href='index.php?module=CorePluginsAdmin&action=deactivate&pluginName={{ name }}&nonce={{ deactivateNonce }}&redirectTo=referrer'>{{ 'CorePluginsAdmin_Deactivate'|translate }}</a>
+    {%- elseif missingRequirements %}
+        -
+    {% else -%}
+        <a href='index.php?module=CorePluginsAdmin&action=activate&pluginName={{ name }}&nonce={{  activateNonce }}&redirectTo=referrer'>{{ 'CorePluginsAdmin_Activate'|translate }}</a>
+    {%- endif -%}
+{%- endmacro %}
 
 {% macro pluginsFilter() %}
 
@@ -81,175 +87,166 @@
 
 {% endmacro %}
 
-{% macro missingRequirementsPleaseUpdateNotice(plugin) %}
-    {% if plugin.missingRequirements and 0 < plugin.missingRequirements|length %}
-        {% for req in plugin.missingRequirements -%}
-            <div class="alert alert-danger">
-                {% set requirement = req.requirement|capitalize %}
-                {% if 'Php' == requirement %}
-                    {% set requirement = 'PHP' %}
-                {% endif %}
-                {{ 'CorePluginsAdmin_MissingRequirementsNotice'|translate(requirement, req.actualVersion, req.requiredVersion) }}
-            </div>
-        {%- endfor %}
-    {% endif %}
-{% endmacro %}
-
 {% macro tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, isTheme, marketplacePluginNames, displayAdminLinks) %}
 
-<div id="confirmUninstallPlugin" class="ui-confirm">
+    <div id="confirmUninstallPlugin" class="ui-confirm">
 
-    <h2 id="uninstallPluginConfirm">{{ 'CorePluginsAdmin_UninstallConfirm'|translate }}</h2>
-    <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
-    <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
+        <h2 id="uninstallPluginConfirm">{{ 'CorePluginsAdmin_UninstallConfirm'|translate }}</h2>
+        <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
+        <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
 
-</div>
+    </div>
 
-<table piwik-content-table>
-    <thead>
-    <tr>
-        <th>{% if isTheme %}{{ 'CorePluginsAdmin_Theme'|translate }}{% else %}{{ 'General_Plugin'|translate }}{% endif %}</th>
-        <th>{{ 'General_Description'|translate }}</th>
-        <th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
-        {% if (displayAdminLinks) %}
-        <th class="action-links">{{ 'General_Action'|translate }}</th>
-        {% endif %}
-    </tr>
-    </thead>
-    <tbody id="plugins">
-    {% for name,plugin in pluginsInfo %}
-        {% set isDefaultTheme = isTheme and name == 'Morpheus' %}
-        {% if (plugin.alwaysActivated is defined and not plugin.alwaysActivated) or isTheme %}
-            <tr {% if plugin.activated %}class="active-plugin"{% else %}class="inactive-plugin"{% endif %} data-filter-status="{% if plugin.activated %}active{% else %}inactive{% endif %}" data-filter-origin="{% if plugin.isCorePlugin %}core{% else %}noncore{% endif %}">
-                <td class="name">
-                    <a name="{{ name|e('html_attr') }}"></a>
-                    {% if not plugin.isCorePlugin and name in marketplacePluginNames -%}
-                        <a href="javascript:void(0);"
-                           piwik-plugin-name="{{ name|e('html_attr') }}"
-                           >{{ name }}</a>
-                    {%- else %}
-                        {{ name }}
-                    {% endif %}
-                    <span class="plugin-version" {% if plugin.isCorePlugin %}title="{{ 'CorePluginsAdmin_CorePluginTooltip'|translate }}"{% endif %}>({% if plugin.isCorePlugin %}{{ 'CorePluginsAdmin_OriginCore'|translate }}{% else %}v{{ plugin.info.version }}{% endif %})</span>
+    <table piwik-content-table>
+        <thead>
+        <tr>
+            <th>{% if isTheme %}{{ 'CorePluginsAdmin_Theme'|translate }}{% else %}{{ 'General_Plugin'|translate }}{% endif %}</th>
+            <th>{{ 'General_Description'|translate }}</th>
+            <th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
+            {% if (displayAdminLinks) %}
+                <th class="action-links">{{ 'General_Action'|translate }}</th>
+            {% endif %}
+        </tr>
+        </thead>
+        <tbody id="plugins">
+        {% for name,plugin in pluginsInfo %}
+            {% set isDefaultTheme = isTheme and name == 'Morpheus' %}
+            {% if (plugin.alwaysActivated is defined and not plugin.alwaysActivated) or isTheme %}
+                <tr {% if plugin.activated %}class="active-plugin"{% else %}class="inactive-plugin"{% endif %} data-filter-status="{% if plugin.activated %}active{% else %}inactive{% endif %}" data-filter-origin="{% if plugin.isCorePlugin %}core{% else %}noncore{% endif %}">
+                    <td class="name">
+                        <a name="{{ name|e('html_attr') }}"></a>
+                        {% if not plugin.isCorePlugin and name in marketplacePluginNames -%}
+                            <a href="javascript:void(0);"
+                               piwik-plugin-name="{{ name|e('html_attr') }}"
+                            >{{ name }}</a>
+                        {%- else %}
+                            {{ name }}
+                        {% endif %}
+                        <span class="plugin-version" {% if plugin.isCorePlugin %}title="{{ 'CorePluginsAdmin_CorePluginTooltip'|translate }}"{% endif %}>({% if plugin.isCorePlugin %}{{ 'CorePluginsAdmin_OriginCore'|translate }}{% else %}v{{ plugin.info.version }}{% endif %})</span>
 
-                    {% if name in pluginNamesHavingSettings %}
-                        <br /><br />
-                        <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'generalSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
-                    {% endif %}
-                </td>
-                <td class="desc">
-                    <div class="plugin-desc-missingrequirements">
-                        {% if plugin.missingRequirements is defined and plugin.missingRequirements %}
-                            {{  plugin.missingRequirements }}
-                            <br />
+                        {% if name in pluginNamesHavingSettings %}
+                            <br /><br />
+                            <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'generalSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
                         {% endif %}
-                    </div>
-                    <div class="plugin-desc-text">
+                    </td>
+                    <td class="desc">
+                        <div class="plugin-desc-missingrequirements">
+                            {% if plugin.missingRequirements is defined and plugin.missingRequirements %}
+                                {{  plugin.missingRequirements }}
+                                <br />
+                            {% endif %}
+                        </div>
+                        <div class="plugin-desc-text">
 
-                        {{ plugin.info.description|raw|nl2br }}
+                            {{ plugin.info.description|raw|nl2br }}
 
-                        {% if plugin.info.homepage|default is not empty and plugin.info.homepage not in [
-                              'http://piwik.org', 'http://www.piwik.org', 'http://piwik.org/', 'http://www.piwik.org/'
-                        ] %}
-                        <span class="plugin-homepage">
+                            {% if plugin.info.homepage|default is not empty and plugin.info.homepage not in [
+                            'http://piwik.org', 'http://www.piwik.org', 'http://piwik.org/', 'http://www.piwik.org/'
+                            ] %}
+                                <span class="plugin-homepage">
                             <a target="_blank" href="{{ plugin.info.homepage }}">({{ 'CorePluginsAdmin_PluginHomepage'|translate|replace({' ': '&nbsp;'})|raw }})</a>
                         </span>
-                        {% endif %}
+                            {% endif %}
 
-                        {% if plugin.info.donate is defined and plugin.info.donate|length %}
-                            <div class="plugin-donation">
-                                {{ 'CorePluginsAdmin_LikeThisPlugin'|translate }} <a href="javascript:;" class="plugin-donation-link" data-overlay-id="overlay-{{ name|escape('html_attr') }}">{{ 'CorePluginsAdmin_ConsiderDonating'|translate }}</a>
-                                <div id="overlay-{{ name|escape('html_attr') }}" class="donation-overlay ui-confirm" title="{{ 'CorePluginsAdmin_LikeThisPlugin'|translate }}">
-                                    <p>{{ 'CorePluginsAdmin_CommunityContributedPlugin'|translate }}</p>
-                                    <p>{{ 'CorePluginsAdmin_ConsiderDonatingCreatorOf'|translate("<b>" ~ name ~ "</b>")|raw }}</p>
-                                    <div class="donation-links">
-                                    {% if plugin.info.donate.paypal is defined and plugin.info.donate.paypal %}
-                                        <a class="donation-link paypal" target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&item_name=Piwik%20Plugin%20{{ name|escape('url') }}&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted&business={{ plugin.info.donate.paypal|escape('url') }}"><img src="plugins/CorePluginsAdmin/images/paypal_donate.jpg" height="30"/></a>
-                                    {% endif %}
-                                    {% if plugin.info.donate.flattr is defined and plugin.info.donate.flattr %}
-                                        <a class="donation-link flattr" target="_blank" href="{{ plugin.info.donate.flattr }}"><img class="alignnone" title="Flattr" alt="" src="plugins/CorePluginsAdmin/images/flattr.png" height="29" /></a>
-                                    {% endif %}
-                                    {% if plugin.info.donate.bitcoin is defined and plugin.info.donate.bitcoin %}
-                                        <div class="donation-link bitcoin">
-                                            <span>Donate Bitcoins to:</span>
-                                            <a href="bitcoin:{{ plugin.info.donate.bitcoin|escape('url') }}">{{ plugin.info.donate.bitcoin }}</a>
+                            {% if plugin.info.donate is defined and plugin.info.donate|length %}
+                                <div class="plugin-donation">
+                                    {{ 'CorePluginsAdmin_LikeThisPlugin'|translate }} <a href="javascript:;" class="plugin-donation-link" data-overlay-id="overlay-{{ name|escape('html_attr') }}">{{ 'CorePluginsAdmin_ConsiderDonating'|translate }}</a>
+                                    <div id="overlay-{{ name|escape('html_attr') }}" class="donation-overlay ui-confirm" title="{{ 'CorePluginsAdmin_LikeThisPlugin'|translate }}">
+                                        <p>{{ 'CorePluginsAdmin_CommunityContributedPlugin'|translate }}</p>
+                                        <p>{{ 'CorePluginsAdmin_ConsiderDonatingCreatorOf'|translate("<b>" ~ name ~ "</b>")|raw }}</p>
+                                        <div class="donation-links">
+                                            {% if plugin.info.donate.paypal is defined and plugin.info.donate.paypal %}
+                                                <a class="donation-link paypal" target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&item_name=Piwik%20Plugin%20{{ name|escape('url') }}&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted&business={{ plugin.info.donate.paypal|escape('url') }}"><img src="plugins/CorePluginsAdmin/images/paypal_donate.jpg" height="30"/></a>
+                                            {% endif %}
+                                            {% if plugin.info.donate.flattr is defined and plugin.info.donate.flattr %}
+                                                <a class="donation-link flattr" target="_blank" href="{{ plugin.info.donate.flattr }}"><img class="alignnone" title="Flattr" alt="" src="plugins/CorePluginsAdmin/images/flattr.png" height="29" /></a>
+                                            {% endif %}
+                                            {% if plugin.info.donate.bitcoin is defined and plugin.info.donate.bitcoin %}
+                                                <div class="donation-link bitcoin">
+                                                    <span>Donate Bitcoins to:</span>
+                                                    <a href="bitcoin:{{ plugin.info.donate.bitcoin|escape('url') }}">{{ plugin.info.donate.bitcoin }}</a>
+                                                </div>
+                                            {% endif %}
                                         </div>
-                                    {% endif %}
+                                        <input role="no" type="button" value="{{ 'General_Close'|translate }}"/>
                                     </div>
-                                    <input role="no" type="button" value="{{ 'General_Close'|translate }}"/>
                                 </div>
+                            {% endif %}
+                        </div>
+                        {% if plugin.info.license is defined %}
+                            <div class="plugin-license">
+                                {% if plugin.info.license_file is defined %}<a title="{{ 'CorePluginsAdmin_LicenseHomepage'|translate }}" rel="noreferrer" target="_blank" href="index.php?module=CorePluginsAdmin&action=showLicense&pluginName={{ name }}">{% endif %}{{ plugin.info.license }}{% if plugin.info.license_file is defined %}</a>{% endif %}
                             </div>
                         {% endif %}
-                    </div>
-                    {% if plugin.info.license is defined %}
-                    <div class="plugin-license">
-                        {% if plugin.info.license_homepage is defined %}<a title="{{ 'CorePluginsAdmin_LicenseHomepage'|translate }}" rel="noreferrer" target="_blank" href="{{ plugin.info.license_homepage }}">{% endif %}{{ plugin.info.license }}{% if plugin.info.license_homepage is defined %}</a>{% endif %}
-                    </div>
-                    {% endif %}
-                    {% if plugin.info.authors is defined %}
-                    <div class="plugin-author">
-                        <cite>By
-                        {% if plugin.info.authors is defined -%}
-                        {% spaceless %}
-                        {% for author in plugin.info.authors if author.name %}
-                            {% if author.homepage is defined %}
-                                <a title="{{ 'CorePluginsAdmin_AuthorHomepage'|translate }}" href="{{ author.homepage }}" rel="noreferrer" target="_blank">{{ author.name }}</a>
+                        {% if plugin.info.authors is defined %}
+                            <div class="plugin-author">
+                                By
+                                    {% if plugin.info.authors is defined -%}
+                                    {% spaceless %}
+                                        {% for author in plugin.info.authors if author.name %}
+                                            {% if author.homepage is defined %}
+                                                <a title="{{ 'CorePluginsAdmin_AuthorHomepage'|translate }}" href="{{ author.homepage }}" rel="noreferrer" target="_blank">{{ author.name }}</a>
+                                            {% else %}
+                                                {{ author.name }}
+                                            {% endif %}
+                                            {% if loop.index < plugin.info.authors|length %}
+                                                ,
+                                            {% endif %}
+                                        {% endfor %}
+                                    {% endspaceless %}
+                                    {%- endif %}.
+                            </div>
+                        {% endif %}
+                    </td>
+                    <td class="status" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
+                        {% if not isDefaultTheme -%}
+
+                            {% if plugin.activated %}
+                                {{ 'CorePluginsAdmin_Active'|translate }}
                             {% else %}
-                                {{ author.name }}
+                                {{ 'CorePluginsAdmin_Inactive'|translate }}
+                                {% if plugin.uninstallable and displayAdminLinks %} <br/> - <a data-plugin-name="{{ name|escape('html_attr') }}" class="uninstall" href='index.php?module=CorePluginsAdmin&action=uninstall&pluginName={{ name }}&nonce={{ uninstallNonce }}'>{{ 'CorePluginsAdmin_ActionUninstall'|translate }}</a>{% endif %}
                             {% endif %}
-                            {% if loop.index < plugin.info.authors|length %}
-                                    ,
-                                {% endif %}
-                        {% endfor %}
-                        {% endspaceless %}
-                        {%- endif %}.</cite>
-                    </div>
-                    {% endif %}
-                </td>
-                <td class="status" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
-                    {% if not isDefaultTheme -%}
 
-                    {% if plugin.activated %}
-                        {{ 'CorePluginsAdmin_Active'|translate }}
-                    {% else %}
-                        {{ 'CorePluginsAdmin_Inactive'|translate }}
-                        {% if plugin.uninstallable and displayAdminLinks %} <br/> - <a data-plugin-name="{{ name|escape('html_attr') }}" class="uninstall" href='index.php?module=CorePluginsAdmin&action=uninstall&pluginName={{ name }}&nonce={{ uninstallNonce }}'>{{ 'CorePluginsAdmin_ActionUninstall'|translate }}</a>{% endif %}
-                    {% endif %}
+                        {%- endif %}
+                    </td>
 
-                    {%- endif %}
-                </td>
+                    {% if displayAdminLinks %}
+                        <td class="togl action-links" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
+                            {% if not isDefaultTheme -%}
 
-                {% if displayAdminLinks %}
-                <td class="togl action-links" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
-                    {% if not isDefaultTheme -%}
+                                {% if plugin.invalid is defined or plugin.alwaysActivated %}
+                                    -
+                                {% else %}
+                                    {{ _self.pluginActivateDeactivateAction(name, plugin.activated, plugin.missingRequirements, deactivateNonce, activateNonce) }}
+                                {% endif %}
 
-                    {% if plugin.invalid is defined or plugin.alwaysActivated %}
-                        -
-                    {% else %}
-                        {% if plugin.activated %}
-                            <a href='index.php?module=CorePluginsAdmin&action=deactivate&pluginName={{ name }}&nonce={{ deactivateNonce }}'>{{ 'CorePluginsAdmin_Deactivate'|translate }}</a>
-                        {% elseif plugin.missingRequirements %}
-                            -
-                        {% else %}
-                            <a href='index.php?module=CorePluginsAdmin&action=activate&pluginName={{ name }}&nonce={{  activateNonce }}'>{{ 'CorePluginsAdmin_Activate'|translate }}</a>
-                        {% endif %}
+                            {%- endif %}
+                        </td>
                     {% endif %}
+                </tr>
+            {% endif %}
+        {% endfor %}
+        </tbody>
+    </table>
 
-                    {%- endif %}
-                </td>
-                {% endif %}
-            </tr>
+    <div class="tableActionBar">
+        {% if isTheme %}
+            <a href="{{ linkTo({'action':'browseThemes', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewThemes'|translate }}</a>
+        {% else %}
+            <a href="{{ linkTo({'action':'browsePlugins', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewPlugins'|translate }}</a>
         {% endif %}
-    {% endfor %}
-    </tbody>
-</table>
-
-<div class="tableActionBar">
-    {% if isTheme %}
-        <a href="{{ linkTo({'action':'browseThemes', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewThemes'|translate }}</a>
-    {% else %}
-        <a href="{{ linkTo({'action':'browsePlugins', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewPlugins'|translate }}</a>
-    {% endif %}
-</div>
+    </div>
+
+    <div class="footer-message">
+        {% set pluginsAlwaysActivated %}
+            {% for name,plugin in pluginsInfo %}
+                {% if plugin.alwaysActivated is defined and plugin.alwaysActivated %}
+                    {{ name }}{% if not loop.last %}, {% endif %}
+                 {% endif %}
+            {% endfor %}
+        {% endset %}
+        {{ 'CorePluginsAdmin_AlwaysActivatedPluginsList'|translate(pluginsAlwaysActivated) }}
+    </div>
 
 {% endmacro %}
diff --git a/plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig b/plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig
deleted file mode 100644
index 8fe294eadbe252c7b8f4c2236332acfa25627d1a..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig
+++ /dev/null
@@ -1,82 +0,0 @@
-{% if plugins|length > 0 %}
-    <div class="row">
-    {% for plugin in plugins %}
-        {% if plugin.isDownloadable %}
-        <div class="col s12 m6 l4">
-            {% embed 'contentBlock.twig' with {'title': ''} %}
-            {% block content %}
-                <div class="plugin">
-                    <h3 class="card-title" title="{{ 'General_MoreDetails'|translate }}">
-                        <a href="#" piwik-plugin-name="{{ plugin.name }}">{{ plugin.name }}</a>
-                    </h3>
-
-                    <p class="description">
-                        {{ plugin.description }}
-                        <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
-                            &rsaquo; {{ 'General_MoreLowerCase'|translate }}</a>
-                    </p>
-
-                    {% if showThemes %}
-                        {# Screenshot for themes #}
-                        <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}">
-                            <img title="{{ 'General_MoreDetails'|translate }}"
-                                 class="preview" src="{{ plugin.screenshots|first }}?w=250&h=150"/></a>
-                    {% endif %}
-
-                    <ul class="metadata">
-                        <li>
-                            {{ 'CorePluginsAdmin_Version'|translate }}: {{ plugin.latestVersion }}
-                            {% if plugin.canBeUpdated %}
-                                <a class="update-available" href="#" piwik-plugin-name="{{ plugin.name }}" data-activePluginTab="changelog"
-                                   title="{{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}">
-                                    {{ 'CorePluginsAdmin_NewVersion'|translate }}</a>
-                            {% endif %}
-                        </li>
-                        <li>{{ 'CorePluginsAdmin_Updated'|translate }}: {{ plugin.lastUpdated }}</li>
-                        <li>{{ 'General_Downloads'|translate }}: {{ plugin.numDownloads }}</li>
-                        <li>{{ 'CorePluginsAdmin_Developer'|translate }}: {{ pluginsMacro.pluginDeveloper(plugin.owner) }}</li>
-                    </ul>
-
-                    {% if isSuperUser %}
-                        <div class="footer" piwik-plugin-name="{{ plugin.name }}">
-                            {% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
-                                <a class="btn"
-                                   href="{{ linkTo({'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">
-                                    {{ 'CoreUpdater_UpdateTitle'|translate }}
-                                </a>
-                            {% elseif plugin.isInstalled %}
-                                <button class="btn btn-noop btn-block">
-                                    {{ 'General_Installed'|translate }}
-                                </button>
-                            {% elseif plugin.missingRequirements|length > 0 %}
-                                <a class="btn btn-link btn-block" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
-                                    {{ 'CorePluginsAdmin_CannotInstall'|translate }}
-                                </a>
-                            {% else %}
-                                <a href="{{ linkTo({'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
-                                   class="btn">
-                                    {{ 'CorePluginsAdmin_ActionInstall'|translate }}
-                                </a>
-                            {% endif %}
-                        </div>
-                    {% endif %}
-
-                </div>
-            {% endblock %}
-            {% endembed %}
-        </div>
-        {% endif %}
-{% endfor %}
-    </div>
-{% endif %}
-
-{% if plugins|length == 0 %}
-    <div piwik-content-block>
-        {% if showThemes %}
-            {{ 'CorePluginsAdmin_NoThemesFound'|translate }}
-        {% else %}
-            {{ 'CorePluginsAdmin_NoPluginsFound'|translate }}
-        {% endif %}
-    </div>
-{% endif %}
-
diff --git a/plugins/CorePluginsAdmin/templates/pluginDetails.twig b/plugins/CorePluginsAdmin/templates/pluginDetails.twig
deleted file mode 100644
index 33a73f3c8015681fde6986a25ecfd4f992b1992e..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/templates/pluginDetails.twig
+++ /dev/null
@@ -1,209 +0,0 @@
-{% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
-
-{% block content %}
-
-    <div class="pluginDetails">
-        {% if errorMessage %}
-            {{ errorMessage }}
-        {% elseif plugin and plugin.isDownloadable %}
-
-            {% set latestVersion = plugin.versions[plugin.versions|length - 1] %}
-
-            <div class="header">
-                <div class="intro">
-                    <h2>{{ plugin.name }}</h2>
-                    <p class="description">
-                        {% if plugin.featured %}
-                            {{ pluginsMacro.featuredIcon('left') }}
-                        {% endif %}
-                        {{ plugin.description }}
-                    </p>
-                </div>
-                <div class="actionButton">
-                    {% if isSuperUser %}
-                        {% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
-                            <a class="install update"
-                               href="{{ linkTo({'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}"
-                                    >{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
-                        {% elseif plugin.isInstalled %}
-                        {% elseif 0 < plugin.missingRequirements|length %}
-                        {% else %}
-                            <a href="{{ linkTo({'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
-                               class="install">{{ 'CorePluginsAdmin_ActionInstall'|translate }}</a>
-                        {% endif %}
-                    {% endif %}
-                </div>
-            </div>
-
-            <div class="content">
-                <div class="contentDetails">
-                    <div id="pluginDetailsTabs" class="row">
-                        <div class="col s12">
-                            <ul class="tabs">
-                                <li class="tab col s3"><a href="#tabs-description">{{ 'General_Description'|translate }}</a></li>
-
-                                {% if latestVersion.readmeHtml.faq %}
-                                    <li class="tab col s3"><a href="#tabs-faq">{{ 'General_Faq'|translate }}</a></li>
-                                {% endif %}
-
-                                <li class="tab col s3"><a href="#tabs-changelog">{{ 'CorePluginsAdmin_Changelog'|translate }}</a></li>
-
-                                {% if plugin.screenshots|length %}
-                                    <li class="tab col s3"><a href="#tabs-screenshots">{{ 'CorePluginsAdmin_Screenshots'|translate }}</a></li>
-                                {% endif %}
-
-                                {% if latestVersion.readmeHtml.support is defined and latestVersion.readmeHtml.support %}
-                                    <li class="tab col s3"><a href="#tabs-support">{{ 'CorePluginsAdmin_Support'|translate }}</a></li>
-                                {% endif %}
-                            </ul>
-                        </div>
-
-                        <div id="tabs-description" class="tab-content col s12">
-                            {{ pluginsMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
-                            {{ latestVersion.readmeHtml.description|raw }}
-                        </div>
-
-                        {% if latestVersion.readmeHtml.faq %}
-                            <div id="tabs-faq" class="tab-content col s12">
-                                {{ latestVersion.readmeHtml.faq|raw }}
-                            </div>
-                        {% endif %}
-
-                        <div id="tabs-changelog" class="tab-content col s12">
-                            {{ pluginsMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
-                            {% if plugin.canBeUpdated %}
-                                <div class="alert alert-warning">
-                                    {{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}
-                                    {% if plugin.repositoryChangelogUrl %}<a rel="noreferrer"  target="_blank" href="{{ plugin.repositoryChangelogUrl }}">{{ 'CorePluginsAdmin_ViewRepositoryChangelog'|translate }}</a>{% endif %}
-                                </div>
-                            {% endif %}
-
-                            {% if latestVersion.readmeHtml.changelog %}
-                                {{ latestVersion.readmeHtml.changelog|raw }}
-                            {% endif %}
-
-                            <h3>{{ 'CorePluginsAdmin_History'|translate }}</h3>
-
-                            <ul>
-                                {% for version in plugin.versions|reverse %}
-                                    <li>
-                                        {% set versionName %}
-                                            <strong>
-                                                {% if version.repositoryChangelogUrl %}
-                                                    <a target="_blank" title="{{ 'CorePluginsAdmin_Changelog'|translate }}" href="{{ version.repositoryChangelogUrl }}">{{ version.name }}</a>
-                                                {% else %}
-                                                    {{ version.name }}
-                                                {% endif %}
-                                            </strong>
-                                        {% endset %}
-                                        {{ 'CorePluginsAdmin_PluginVersionInfo'|translate(versionName, version.release)|raw }}
-                                        </li>
-                                {% endfor %}
-                            </ul>
-                        </div>
-
-                        {% if plugin.screenshots|length %}
-                            <div id="tabs-screenshots" class="tab-content col s12">
-                                <div class="thumbnails">
-                                    {% for screenshot in plugin.screenshots %}
-                                        <div class="thumbnail">
-                                            <a href="{{ screenshot }}" target="_blank"><img src="{{ screenshot }}?w=400" width="400" alt=""></a>
-                                            <p>
-                                                {{ screenshot|split('/')|last|replace({'_': ' ', '.png': '', '.jpg': '', '.jpeg': ''}) }}
-                                            </p>
-                                        </div>
-                                    {% endfor %}
-                                </div>
-                            </div>
-                        {% endif %}
-
-                        {% if latestVersion.readmeHtml.support is defined and latestVersion.readmeHtml.support %}
-                            <div id="tabs-support" class="tab-content col s12">
-
-                                {{ latestVersion.readmeHtml.support|raw }}
-
-                            </div>
-                        {% endif %}
-                    </div>
-
-                </div>
-                <div class="metadata">
-                    <dl>
-                        <dt>{{ 'CorePluginsAdmin_Version'|translate }}</dt>
-                        <dd>{{ plugin.latestVersion }}</dd>
-                        <dt>{{ 'CorePluginsAdmin_PluginKeywords'|translate }}</dt>
-                        <dd>{{ plugin.keywords|join(', ') }}</dd>
-                        <dt>{{ 'CorePluginsAdmin_LastUpdated'|translate }}</dt>
-                        <dd>{{ plugin.lastUpdated }}</dd>
-                        <dt>{{ 'General_Downloads'|translate }}</dt>
-                        <dd title="{{ 'CorePluginsAdmin_NumDownloadsLatestVersion'|translate(latestVersion.numDownloads|number_format) }}">{{ plugin.numDownloads }}</dd>
-                        <dt>{{ 'CorePluginsAdmin_Developer'|translate }}</dt>
-                        <dd>{{ pluginsMacro.pluginDeveloper(plugin.owner) }}</dd>
-                        <dt>{{ 'CorePluginsAdmin_Authors'|translate }}</dt>
-                        <dd>{% for author in plugin.authors if author.name %}
-
-                                {% spaceless %}
-                                    {% if author.homepage %}
-                                        <a target="_blank" href="{{ author.homepage }}">{{ author.name }}</a>
-                                    {% elseif author.email %}
-                                        <a href="mailto:{{ author.email|escape('url') }}">{{ author.name }}</a>
-                                    {% else %}
-                                        {{ author.name }}
-                                    {% endif %}
-
-                                    {% if loop.index < plugin.authors|length %}
-                                        ,
-                                    {% endif %}
-                                {% endspaceless %}
-
-                            {% endfor %}
-                        </dd>
-                        <dt>{{ 'CorePluginsAdmin_Websites'|translate }}</dt>
-                        <dd>
-                            {% if plugin.homepage %}
-                                <a target="_blank" href="{{ plugin.homepage }}">{{ 'CorePluginsAdmin_PluginWebsite'|translate }}</a>,
-                            {% endif %}
-                            <a target="_blank" href="{{ plugin.repositoryUrl }}">GitHub</a></dd>
-                        {% if plugin.activity %}
-                            <dt>{{ 'CorePluginsAdmin_Activity'|translate }}</dt>
-                            <dd>
-                                {{ plugin.activity.numCommits }} commits
-
-                                {% if plugin.activity.numContributors > 1 %}
-                                    {{ 'CorePluginsAdmin_ByXDevelopers'|translate(plugin.activity.numContributors) }}
-                                {% endif %}
-                                {% if plugin.activity.lastCommitDate %}
-                                    {{ 'CorePluginsAdmin_LastCommitTime'|translate(plugin.activity.lastCommitDate) }}
-                                {% endif %}</dd>
-                        {% endif %}
-                    </dl>
-                    <br />
-                </div>
-            </div>
-            <script type="text/javascript">
-                $(function() {
-
-                    var active = 0;
-                    {% if activeTab %}
-                        var $activeTab = $('#tabs-{{ activeTab|e('js') }}');
-                        if ($activeTab) {
-                            active = $activeTab.index() - 1;
-                        }
-                    {% endif %}
-
-                    $('#pluginDetailsTabs .tabs').tabs();
-                    $('#pluginDetailsTabs .tabs').tabs('select_tab', active >= 0 ? active : 0);
-
-                    $('.pluginDetails a').each(function (index, a) {
-                        var link = $(a).attr('href');
-
-                        if (link && 0 === link.indexOf('http')) {
-                            $(a).attr('target', '_blank');
-                        }
-                    });
-                });
-            </script>
-        {% endif %}
-    </div>
-
-{% endblock %}
diff --git a/plugins/CorePluginsAdmin/templates/plugins.twig b/plugins/CorePluginsAdmin/templates/plugins.twig
index 4a8649710bc289d8f1efb5bd5d2d55aeefb9534d..4822c89d88312d170e5fd018dfd7ce72754f9f54 100644
--- a/plugins/CorePluginsAdmin/templates/plugins.twig
+++ b/plugins/CorePluginsAdmin/templates/plugins.twig
@@ -1,3 +1,4 @@
+
 {% extends 'admin.twig' %}
 
 {% import '@CorePluginsAdmin/macros.twig' as plugins %}
@@ -6,42 +7,44 @@
 
 {% block content %}
 
-<div piwik-content-intro>
-    <h2 piwik-enriched-headline>
-        {{ title|e('html_attr') }}
-    </h2>
+    <div piwik-content-intro>
+        <h2 piwik-enriched-headline>
+            {{ title|e('html_attr') }}
+        </h2>
 
-    <p>{{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
-        {{ 'CorePluginsAdmin_OncePluginIsInstalledYouMayActivateHere'|translate }}
+        <p>{{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
+            {{ 'CorePluginsAdmin_OncePluginIsInstalledYouMayActivateHere'|translate }}
 
-        {% if isMarketplaceEnabled %}
-            {{ 'CorePluginsAdmin_TeaserExtendPiwikByPlugin'|translate('<a href="' ~ linkTo({'action':'browsePlugins', 'sort': ''}) ~ '">', '</a>')|raw }}
-        {% endif %}
+            {% if isMarketplaceEnabled %}
+                {{ 'CorePluginsAdmin_TeaserExtendPiwikByPlugin'|translate('<a href="' ~ linkTo({'action':'browsePlugins', 'sort': ''}) ~ '">', '</a>')|raw }}
+            {% endif %}
 
-        {% if not isPluginsAdminEnabled %}
-            <br/>{{ 'CorePluginsAdmin_DoMoreContactPiwikAdmins'|translate }}
-        {% endif %}
+            {% if not isPluginsAdminEnabled %}
+                <br/>{{ 'CorePluginsAdmin_DoMoreContactPiwikAdmins'|translate }}
+            {% endif %}
 
-        <br />
-        {{ 'CorePluginsAdmin_ChangeLookByManageThemes'|translate('<a href="' ~ linkTo({'action': 'themes'}) ~'">', '</a>')|raw }}
-    </p>
-</div>
+            <br />
+            {{ 'CorePluginsAdmin_ChangeLookByManageThemes'|translate('<a href="' ~ linkTo({'action': 'themes'}) ~'">', '</a>')|raw }}
+        </p>
+    </div>
 
-{% if pluginsHavingUpdate|length %}
-    <div piwik-content-block content-title="{{ pluginsHavingUpdate|length }} Update(s) available">
+    {% if pluginsHavingUpdate|length %}
+        <div piwik-content-block content-title="{{ pluginsHavingUpdate|length }} Update(s) available">
 
-        <p>{{ 'CorePluginsAdmin_InfoPluginUpdateIsRecommended'|translate }}</p>
+            <p>{{ 'CorePluginsAdmin_InfoPluginUpdateIsRecommended'|translate }}</p>
 
-        {{ plugins.tablePluginUpdates(pluginsHavingUpdate, updateNonce, activateNonce, 0) }}
-    </div>
-{% endif %}
+            {{ plugins.tablePluginUpdates(pluginsHavingUpdate, updateNonce, isMultiServerEnvironment) }}
+        </div>
+    {% endif %}
 
-<div piwik-content-block content-title="{{ 'CorePluginsAdmin_InstalledPlugins'|translate|e('html_attr') }}" piwik-plugin-management>
+    <div piwik-content-block content-title="{{ 'CorePluginsAdmin_InstalledPlugins'|translate|e('html_attr') }}"
+         class="pluginsManagement"
+         piwik-plugin-management>
 
-    {{ plugins.pluginsFilter() }}
+        {{ plugins.pluginsFilter() }}
 
-    {{ plugins.tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, false, marketplacePluginNames, isPluginsAdminEnabled) }}
+        {{ plugins.tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, false, marketplacePluginNames, isPluginsAdminEnabled) }}
 
-</div>
+    </div>
 
 {% endblock %}
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/templates/updatePlugin.twig b/plugins/CorePluginsAdmin/templates/updatePlugin.twig
deleted file mode 100644
index 024dbc028fcc5adc6f7d5e93dabc41cf23a68c7d..0000000000000000000000000000000000000000
--- a/plugins/CorePluginsAdmin/templates/updatePlugin.twig
+++ /dev/null
@@ -1,41 +0,0 @@
-{% extends 'admin.twig' %}
-
-{% block content %}
-
-    <div style="max-width:980px;">
-
-        <h2>{{ 'CorePluginsAdmin_UpdatingPlugin'|translate(plugin.name) }}</h2>
-
-        <div>
-
-            {% if plugin.isTheme %}
-
-                <p>{{ 'CorePluginsAdmin_StepDownloadingThemeFromMarketplace'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepUnzippingTheme'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepReplaceExistingTheme'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepThemeSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
-
-            {% else %}
-
-                <p>{{ 'CorePluginsAdmin_StepDownloadingPluginFromMarketplace'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepUnzippingPlugin'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepReplaceExistingPlugin'|translate }}</p>
-
-                <p>{{ 'CorePluginsAdmin_StepPluginSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
-
-            {% endif %}
-
-            <p><a href="{{ linkTo({'action': 'plugins'}) }}">{{ 'General_Plugins'|translate }}</a>
-                |
-                <a href="{{ linkTo({'action': 'themes'}) }}">{{ 'CorePluginsAdmin_Themes'|translate }}</a>
-                |
-                <a href="{{ linkTo({'action': 'marketplace'}) }}">{{ 'CorePluginsAdmin_Marketplace'|translate }}</a></p>
-        </div>
-    </div>
-
-{% endblock %}
diff --git a/plugins/CorePluginsAdmin/templates/uploadPlugin.twig b/plugins/CorePluginsAdmin/templates/uploadPlugin.twig
index ff42dd8b6978e9a10980f82f74ff04417de1901f..42825be41d46d2a7af43d6ed4e7fde9d5a51aea3 100644
--- a/plugins/CorePluginsAdmin/templates/uploadPlugin.twig
+++ b/plugins/CorePluginsAdmin/templates/uploadPlugin.twig
@@ -5,36 +5,36 @@
     <div style="max-width:980px;">
 
         <div>
-            <h2>{{ 'CorePluginsAdmin_InstallingPlugin'|translate(plugin.name) }}</h2>
+            <h2>{{ 'Marketplace_InstallingPlugin'|translate(plugin.name) }}</h2>
 
             {% if plugin.isTheme %}
 
-                <p>{{ 'CorePluginsAdmin_StepUnzippingTheme'|translate }}</p>
+                <p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
 
-                <p>{{ 'CorePluginsAdmin_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
+                <p>{{ 'Marketplace_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
 
                 <p>
                     {% if not plugin.isActivated %}
-                        <strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivateTheme'|translate }}</a></strong>
+                        <strong><a class="btn" href="{{ linkTo({'action': 'activate', 'module': 'CorePluginsAdmin', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'Marketplace_ActionActivateTheme'|translate }}</a></strong>
 
                         |
                     {% endif %}
-                    <a href="{{ linkTo({'action': 'marketplace'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a>
+                    <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a>
                 </p>
 
             {% else %}
 
-                <p>{{ 'CorePluginsAdmin_StepUnzippingPlugin'|translate }}</p>
+                <p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
 
-                <p>{{ 'CorePluginsAdmin_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
+                <p>{{ 'Marketplace_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
 
                 <p>
                     {% if not plugin.isActivated %}
-                        <strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivatePlugin'|translate }}</a></strong>
+                        <strong><a class="btn" href="{{ linkTo({'action': 'activate', 'module': 'CorePluginsAdmin', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'Marketplace_ActionActivatePlugin'|translate }}</a></strong>
 
                         |
                     {% endif %}
-                    <a href="{{ linkTo({'action': 'marketplace'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a>
+                    <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a>
                 </p>
 
             {% endif %}
diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php
index a39dc172dcfe18fb0df79b67cdb3c6e1c2738c12..143c9c04b929055c39bab9708afac341ea126143 100644
--- a/plugins/CoreUpdater/Controller.php
+++ b/plugins/CoreUpdater/Controller.php
@@ -12,6 +12,7 @@ use Exception;
 use Piwik\AssetManager;
 use Piwik\Common;
 use Piwik\Config;
+use Piwik\Container\StaticContainer;
 use Piwik\DbHelper;
 use Piwik\Filechecks;
 use Piwik\Filesystem;
@@ -20,8 +21,8 @@ use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugin\Manager as PluginManager;
 use Piwik\Plugin;
-use Piwik\Plugins\CorePluginsAdmin\Marketplace;
 use Piwik\Plugins\LanguagesManager\LanguagesManager;
+use Piwik\Plugins\Marketplace\Plugins;
 use Piwik\SettingsServer;
 use Piwik\Updater as DbUpdater;
 use Piwik\Version;
@@ -40,9 +41,15 @@ class Controller extends \Piwik\Plugin\Controller
      */
     private $updater;
 
-    public function __construct(Updater $updater)
+    /**
+     * @var Plugins
+     */
+    private $marketplacePlugins;
+
+    public function __construct(Updater $updater, Plugins $marketplacePlugins = null)
     {
         $this->updater = $updater;
+        $this->marketplacePlugins = $marketplacePlugins;
 
         parent::__construct();
     }
@@ -125,9 +132,8 @@ class Controller extends \Piwik\Plugin\Controller
 
         $marketplacePlugins = array();
         try {
-            if (!empty($incompatiblePlugins)) {
-                $marketplace = new Marketplace();
-                $marketplacePlugins = $marketplace->getAllAvailablePluginNames();
+            if (!empty($incompatiblePlugins) && $this->marketplacePlugins) {
+                $marketplacePlugins = $this->marketplacePlugins->getAllAvailablePluginNames();
             }
         } catch (\Exception $e) {}
 
diff --git a/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php b/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php
index 6ff410e7e49192893f0ce56c8eed904dcbdeb706..102cf7b0ddb0529d7c4a82ad0ed4bf843f0304c9 100644
--- a/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php
+++ b/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php
@@ -28,6 +28,11 @@ class Latest2XBeta extends ReleaseChannel
         return Piwik::translate('CoreUpdater_LtsSupportVersion');
     }
 
+    public function doesPreferStable()
+    {
+        return false;
+    }
+
     public function getOrder()
     {
         return 21;
diff --git a/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php b/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php
index 53b1c33975b59c29df7b0c2b35869269d7ff3c99..572badac91ad350c9442d299b05433589ac2d53d 100644
--- a/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php
+++ b/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php
@@ -23,6 +23,11 @@ class LatestBeta extends ReleaseChannel
         return Piwik::translate('CoreUpdater_LatestBetaRelease');
     }
 
+    public function doesPreferStable()
+    {
+        return false;
+    }
+
     public function getOrder()
     {
         return 11;
diff --git a/plugins/CoreUpdater/SystemSettings.php b/plugins/CoreUpdater/SystemSettings.php
index 256cf65f087edc1a22235ceb2c5823e58cb915ea..bc09bfaec54e89c998b692f333efba73330ec04d 100644
--- a/plugins/CoreUpdater/SystemSettings.php
+++ b/plugins/CoreUpdater/SystemSettings.php
@@ -11,7 +11,7 @@ namespace Piwik\Plugins\CoreUpdater;
 use Piwik\Piwik;
 use Piwik\Plugin\ReleaseChannels;
 use Piwik\Plugins\CoreAdminHome\Controller as CoreAdminController;
-use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication as PluginUpdateCommunication;
+use Piwik\Plugins\Marketplace\UpdateCommunication as PluginUpdateCommunication;
 use Piwik\Settings\Setting;
 use Piwik\Settings\FieldConfig;
 
diff --git a/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php b/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php
index 5d480ed18eeb1dcf9675cbb2b4bf4c9070e1a2d1..13b2422be5c6c07c2975303209193c4e7acc648f 100644
--- a/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php
+++ b/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php
@@ -65,4 +65,9 @@ class ReleaseChannelTest extends IntegrationTestCase
         $this->assertStringStartsWith("http://api.piwik.org/1.0/getLatestVersion/?piwik_version=$version&php_version=$phpVersion&mysql_version=$mysqlVersion&release_channel=my_channel&url=$url&trigger=&timezone=", $urlToCheck);
     }
 
+    public function test_doesPreferStable()
+    {
+        $this->assertTrue($this->channel->doesPreferStable());
+    }
+
 }
diff --git a/plugins/CoreUpdater/Updater.php b/plugins/CoreUpdater/Updater.php
index 316f325690627848f10f6c6127239e984182d5cc..347ea3f5ca4eaebd39a0c93bc122654e6d7d3525 100644
--- a/plugins/CoreUpdater/Updater.php
+++ b/plugins/CoreUpdater/Updater.php
@@ -17,10 +17,9 @@ use Piwik\Http;
 use Piwik\Option;
 use Piwik\Plugin\Manager as PluginManager;
 use Piwik\Plugin\ReleaseChannels;
-use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiException;
 use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
+use Piwik\Plugins\Marketplace\Api as MarketplaceApi;
+use Piwik\Plugins\Marketplace\Marketplace;
 use Piwik\SettingsServer;
 use Piwik\Translation\Translator;
 use Piwik\Unzip;
@@ -115,10 +114,20 @@ class Updater
             $this->verifyDecompressedArchive($extractedArchiveDirectory);
             $messages[] = $this->translator->translate('CoreUpdater_VerifyingUnpackedFiles');
 
-            // we need to load the marketplace already here, otherwise it will use the new, updated file in Piwik 3
-            $marketplace = new MarketplaceApiClient();
-            require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/PluginInstaller.php';
-            require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/MarketplaceApiException.php';
+            if (Marketplace::isMarketplaceEnabled()) {
+                // we need to load the marketplace already here, otherwise it will use the new, updated file in Piwik 3
+
+                // we also need to make sure to create a new instance here as otherwise we would change the "global"
+                // environment, but we only want to change piwik version temporarily for this task here
+                $environment = StaticContainer::getContainer()->make('Piwik\Plugins\Marketplace\Environment');
+                $environment->setPiwikVersion($newVersion);
+                /** @var \Piwik\Plugins\Marketplace\Api\Client $marketplaceClient */
+                $marketplaceClient = StaticContainer::getContainer()->make('Piwik\Plugins\Marketplace\Api\Client', array(
+                    'environment' => $environment
+                ));
+                require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/PluginInstaller.php';
+                require_once PIWIK_DOCUMENT_ROOT . '/plugins/Marketplace/Api/Exception.php';
+            }
 
             $this->installNewFiles($extractedArchiveDirectory);
             $messages[] = $this->translator->translate('CoreUpdater_InstallingTheLatestVersion');
@@ -130,29 +139,25 @@ class Updater
         }
 
         try {
-            if (CorePluginsAdmin::isMarketplaceEnabled()) {
-                $messages[] = $this->translator->translate('CoreUpdater_CheckingForPluginUpdates');
 
+            if (Marketplace::isMarketplaceEnabled() && !empty($marketplaceClient)) {
+                $messages[] = $this->translator->translate('CoreUpdater_CheckingForPluginUpdates');
                 $pluginManager = PluginManager::getInstance();
                 $pluginManager->loadAllPluginsAndGetTheirInfo();
                 $loadedPlugins = $pluginManager->getLoadedPlugins();
 
-                MarketplaceApiClient::clearAllCacheEntries();
-                StaticContainer::getContainer()->set('marketplacePiwikVersion', $newVersion);
-
-                $pluginsWithUpdate = $marketplace->checkUpdates($loadedPlugins);
+                $marketplaceClient->clearAllCacheEntries();
+                $pluginsWithUpdate = $marketplaceClient->checkUpdates($loadedPlugins);
 
                 foreach ($pluginsWithUpdate as $pluginWithUpdate) {
                     $pluginName = $pluginWithUpdate['name'];
-
                     $messages[] = $this->translator->translate('CoreUpdater_UpdatingPluginXToVersionY',
                                                                array($pluginName, $pluginWithUpdate['version']));
-
-                    $pluginInstaller = new PluginInstaller($pluginName);
-                    $pluginInstaller->installOrUpdatePluginFromMarketplace();
+                    $pluginInstaller = new PluginInstaller($marketplaceClient);
+                    $pluginInstaller->installOrUpdatePluginFromMarketplace($pluginName);
                 }
             }
-        } catch (MarketplaceApiException $e) {
+        } catch (MarketplaceApi\Exception $e) {
             // there is a problem with the connection to the server, ignore for now
         } catch (Exception $e) {
             throw new UpdaterException($e, $messages);
diff --git a/plugins/CoreUpdater/templates/layout.twig b/plugins/CoreUpdater/templates/layout.twig
index 1af26ed70b53f123573036e11e9ccc414f48f51c..e49d4bdd3e093506c149cc6d516153aa7038b78a 100644
--- a/plugins/CoreUpdater/templates/layout.twig
+++ b/plugins/CoreUpdater/templates/layout.twig
@@ -2,7 +2,7 @@
 <html id="ng-app" ng-app="piwikApp">
 <head>
     <meta charset="utf-8">
-    <title>Piwik &rsaquo; {{ 'CoreUpdater_UpdateTitle'|translate }}</title>
+    <title>Piwik &rsaquo; {{ pageTitle|default('CoreUpdater_UpdateTitle'|translate) }}</title>
     <meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1"/>
     <meta name="viewport" content="initial-scale=1.0" />
     <meta name="robots" content="noindex,nofollow">
diff --git a/plugins/Events/Actions/ActionEvent.php b/plugins/Events/Actions/ActionEvent.php
index 5106ec6092c49c26f6a338229b1170f385d51eb9..83af0d7ad1a1dcdc887c30adcada3d984773f371 100644
--- a/plugins/Events/Actions/ActionEvent.php
+++ b/plugins/Events/Actions/ActionEvent.php
@@ -73,18 +73,6 @@ class ActionEvent extends Action
         return array('idaction_url' => $actionUrl);
     }
 
-    // Do not track this Event URL as Entry/Exit Page URL (leave the existing entry/exit)
-    public function getIdActionUrlForEntryAndExitIds()
-    {
-        return false;
-    }
-
-    // Do not track this Event Name as Entry/Exit Page Title (leave the existing entry/exit)
-    public function getIdActionNameForEntryAndExitIds()
-    {
-        return false;
-    }
-
     public function writeDebugInfo()
     {
         $write = parent::writeDebugInfo();
diff --git a/plugins/ExamplePlugin/plugin.json b/plugins/ExamplePlugin/plugin.json
index c784750dec6ea9885aa3fd8b1a21de0b08945d1a..a6cb365d6d5507f653da6950a156f8218a994a21 100644
--- a/plugins/ExamplePlugin/plugin.json
+++ b/plugins/ExamplePlugin/plugin.json
@@ -1,7 +1,7 @@
 {
   "name": "ExamplePlugin",
-  "version": "0.1.0",
   "description": "Piwik Platform showcase: how to create widgets, menus, scheduled tasks, a custom archiver, plugin tests, and a AngularJS component.",
+  "version": "0.1.0",
   "theme": false,
   "require": {
     "piwik": ">=3.0.0-b1,<4.0.0-b1"
diff --git a/plugins/ExampleTheme/plugin.json b/plugins/ExampleTheme/plugin.json
index 6e99da3910f19e1bf4833ef4a7b9fe2f9a663000..972af7f4437c9702951be6eeae959817fecb1399 100644
--- a/plugins/ExampleTheme/plugin.json
+++ b/plugins/ExampleTheme/plugin.json
@@ -27,4 +27,4 @@
             "homepage": ""
         }
     ]
-}
+}
\ No newline at end of file
diff --git a/plugins/Goals/templates/_formAddGoal.twig b/plugins/Goals/templates/_formAddGoal.twig
index b027622af84d3830cb28dd728740177724f901c4..6b72514f348bc3a62ee828a9110038ac3d523230 100644
--- a/plugins/Goals/templates/_formAddGoal.twig
+++ b/plugins/Goals/templates/_formAddGoal.twig
@@ -10,11 +10,13 @@
     <div piwik-form>
         <div piwik-field uicontrol="text" name="goal_name"
              ng-model="manageGoals.goal.name"
+             maxlength="50"
              title="{{ 'Goals_GoalName'|translate|e('html_attr') }}">
         </div>
 
         <div piwik-field uicontrol="text" name="goal_description"
              ng-model="manageGoals.goal.description"
+             maxlength="255"
              title="{{ 'General_Description'|translate|e('html_attr') }}">
         </div>
 
@@ -85,6 +87,7 @@
             <div class="col s12 m6 l4">
                 <div piwik-field uicontrol="text" name="pattern"
                      ng-model="manageGoals.goal.pattern"
+                     maxlength="255"
                      title="{{ 'Goals_Pattern'|translate|e('html_attr') }}"
                      full-width="true">
                 </div>
diff --git a/plugins/Marketplace/API.php b/plugins/Marketplace/API.php
new file mode 100644
index 0000000000000000000000000000000000000000..0ebdaec90568f1e2cc8d8bd2605155ce0f6021b6
--- /dev/null
+++ b/plugins/Marketplace/API.php
@@ -0,0 +1,106 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Exception;
+use Piwik\Piwik;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Plugins\Marketplace\Plugins\InvalidLicenses;
+
+/**
+ * The Marketplace API lets you manage your license key so you can download & install in one-click <a target="_blank" rel="noreferrer" href="https://plugins.piwik.org/premium">paid premium plugins</a> you have subscribed to.
+ *
+ * @method static \Piwik\Plugins\Marketplace\API getInstance()
+ */
+class API extends \Piwik\Plugin\API
+{
+    /**
+     * @var Client
+     */
+    private $marketplaceClient;
+
+    /**
+     * @var Service
+     */
+    private $marketplaceService;
+
+    /**
+     * @var InvalidLicenses
+     */
+    private $expired;
+
+    public function __construct(Service $service, Client $client, InvalidLicenses $expired)
+    {
+        $this->marketplaceService = $service;
+        $this->marketplaceClient  = $client;
+        $this->expired = $expired;
+    }
+
+    /**
+     * Deletes an existing license key if one is set.
+     *
+     * @return bool
+     */
+    public function deleteLicenseKey()
+    {
+        Piwik::checkUserHasSuperUserAccess();
+
+        $this->setLicenseKey(null);
+        return true;
+    }
+
+    /**
+     * Saves the given license key in case the key is actually valid (exists on the Piwik Marketplace and is not
+     * yet expired).
+     *
+     * @param string $licenseKey
+     * @return bool
+     *
+     * @throws Exception In case of an invalid license key
+     * @throws Service\Exception In case of any network problems
+     */
+    public function saveLicenseKey($licenseKey)
+    {
+        Piwik::checkUserHasSuperUserAccess();
+
+        $licenseKey = trim($licenseKey);
+
+        // we are currently using the Marketplace service directly to 1) change LicenseKey and 2) not use any cache
+        $this->marketplaceService->authenticate($licenseKey);
+
+        try {
+            $consumer = $this->marketplaceService->fetch('consumer/validate', array());
+        } catch (Api\Service\Exception $e) {
+            if ($e->getCode() === Api\Service\Exception::HTTP_ERROR) {
+                throw $e;
+            }
+
+            $consumer = array();
+        }
+
+        if (empty($consumer['isValid'])) {
+            throw new Exception(Piwik::translate('Marketplace_ExceptionLinceseKeyIsNotValid'));
+        }
+
+        $this->setLicenseKey($licenseKey);
+
+        return true;
+    }
+
+    private function setLicenseKey($licenseKey)
+    {
+        $key = new LicenseKey();
+        $key->set($licenseKey);
+
+        $this->marketplaceClient->clearAllCacheEntries();
+        $this->expired->clearCache();
+    }
+
+}
diff --git a/plugins/Marketplace/Api/Client.php b/plugins/Marketplace/Api/Client.php
new file mode 100644
index 0000000000000000000000000000000000000000..0b4589f33a9ba548c6d01c880614c13bc4620aa0
--- /dev/null
+++ b/plugins/Marketplace/Api/Client.php
@@ -0,0 +1,326 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace\Api;
+
+use Piwik\Cache;
+use Piwik\Common;
+use Piwik\Container\StaticContainer;
+use Piwik\Filesystem;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Environment;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\SettingsServer;
+use Exception as PhpException;
+use Psr\Log\LoggerInterface;
+
+/**
+ *
+ */
+class Client
+{
+    const CACHE_TIMEOUT_IN_SECONDS = 3600;
+    const HTTP_REQUEST_TIMEOUT = 60;
+
+    /**
+     * @var Service
+     */
+    private $service;
+
+    /**
+     * @var Cache\Lazy
+     */
+    private $cache;
+
+    /**
+     * @var Plugin\Manager
+     */
+    private $pluginManager;
+
+    /**
+     * @var LoggerInterface
+     */
+    private $logger;
+
+    /**
+     * @var Environment
+     */
+    private $environment;
+
+    public function __construct(Service $service, Cache\Lazy $cache, LoggerInterface $logger, Environment $environment)
+    {
+        $this->service = $service;
+        $this->cache = $cache;
+        $this->logger = $logger;
+        $this->pluginManager = Plugin\Manager::getInstance();
+        $this->environment = $environment;
+    }
+
+    public function setEnvironment($environment)
+    {
+        $this->environment = $environment;
+    }
+
+    public function getEnvironment()
+    {
+        return $this->environment;
+    }
+
+    public function getPluginInfo($name)
+    {
+        $action = sprintf('plugins/%s/info', $name);
+
+        $plugin = $this->fetch($action, array());
+
+        if (!empty($plugin) && $this->shouldIgnorePlugin($plugin)) {
+            return;
+        }
+
+        return $plugin;
+    }
+
+    public function getInfo()
+    {
+        try {
+            $info = $this->fetch('info', array());
+        } catch (Exception $e) {
+            $info = null;
+        }
+
+        return $info;
+    }
+
+    public function getConsumer()
+    {
+        try {
+            $licenses = $this->fetch('consumer', array());
+        } catch (Exception $e) {
+            $licenses = null;
+        }
+
+        return $licenses;
+    }
+
+    public function isValidConsumer()
+    {
+        try {
+            $consumer = $this->fetch('consumer/validate', array());
+        } catch (Exception $e) {
+            $consumer = null;
+        }
+
+        return !empty($consumer['isValid']);
+    }
+
+    private function getRandomTmpPluginDownloadFilename()
+    {
+        $tmpPluginPath = StaticContainer::get('path.tmp') . '/latest/plugins/';
+
+        // we generate a random unique id as filename to prevent any user could possibly download zip directly by
+        // opening $piwikDomain/tmp/latest/plugins/$pluginName.zip in the browser. Instead we make it harder here
+        // and try to make sure to delete file in case of any error.
+        $tmpPluginFolder = Common::generateUniqId();
+
+        return $tmpPluginPath . $tmpPluginFolder . '.zip';
+    }
+
+    public function download($pluginOrThemeName)
+    {
+        @ignore_user_abort(true);
+        SettingsServer::setMaxExecutionTime(0);
+
+        $downloadUrl = $this->getDownloadUrl($pluginOrThemeName);
+
+        if (empty($downloadUrl)) {
+            return false;
+        }
+
+        // in the beginning we allowed to specify a download path but this way we make sure security is always taken
+        // care of and we always generate a random download filename.
+        $target = $this->getRandomTmpPluginDownloadFilename();
+
+        Filesystem::deleteFileIfExists($target);
+
+        $success = $this->service->download($downloadUrl, $target, static::HTTP_REQUEST_TIMEOUT);
+
+        if ($success) {
+            return $target;
+        }
+
+        return false;
+    }
+
+    /**
+     * @param \Piwik\Plugin[] $plugins
+     * @return array|mixed
+     */
+    public function checkUpdates($plugins)
+    {
+        $params = array();
+
+        foreach ($plugins as $plugin) {
+            $pluginName = $plugin->getPluginName();
+            if (!$this->pluginManager->isPluginBundledWithCore($pluginName)) {
+                $params[] = array('name' => $plugin->getPluginName(), 'version' => $plugin->getVersion());
+            }
+        }
+
+        if (empty($params)) {
+            return array();
+        }
+
+        $params = array('plugins' => $params);
+
+        $hasUpdates = $this->fetch('plugins/checkUpdates', array('plugins' => json_encode($params)));
+
+        if (empty($hasUpdates)) {
+            return array();
+        }
+
+        return $hasUpdates;
+    }
+
+    /**
+     * @param  \Piwik\Plugin[] $plugins
+     * @return array
+     */
+    public function getInfoOfPluginsHavingUpdate($plugins)
+    {
+        $hasUpdates = $this->checkUpdates($plugins);
+
+        $pluginDetails = array();
+
+        foreach ($hasUpdates as $pluginHavingUpdate) {
+            if (empty($pluginHavingUpdate)) {
+                continue;
+            }
+
+            try {
+                $plugin = $this->getPluginInfo($pluginHavingUpdate['name']);
+            } catch (PhpException $e) {
+                $this->logger->error($e->getMessage());
+                $plugin = null;
+            }
+
+            if (!empty($plugin)) {
+                $plugin['repositoryChangelogUrl'] = $pluginHavingUpdate['repositoryChangelogUrl'];
+                $pluginDetails[] = $plugin;
+            }
+
+        }
+
+        return $pluginDetails;
+    }
+
+    public function searchForPlugins($keywords, $query, $sort, $purchaseType)
+    {
+        $response = $this->fetch('plugins', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort, 'purchase_type' => $purchaseType));
+
+        if (!empty($response['plugins'])) {
+            return $this->removeNotNeededPluginsFromResponse($response);
+        }
+
+        return array();
+    }
+
+    private function removeNotNeededPluginsFromResponse($response)
+    {
+        foreach ($response['plugins'] as $index => $plugin) {
+            if ($this->shouldIgnorePlugin($plugin)) {
+                unset($response['plugins'][$index]);
+                continue;
+            }
+        }
+        return array_values($response['plugins']);
+    }
+
+    private function shouldIgnorePlugin($plugin)
+    {
+        return !empty($plugin['isCustomPlugin']);
+    }
+
+    public function searchForThemes($keywords, $query, $sort, $purchaseType)
+    {
+        $response = $this->fetch('themes', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort, 'purchase_type' => $purchaseType));
+
+        if (!empty($response['plugins'])) {
+            return $this->removeNotNeededPluginsFromResponse($response);
+        }
+
+        return array();
+    }
+
+    private function fetch($action, $params)
+    {
+        ksort($params); // sort params so cache is reused more often even if param order is different
+
+        $releaseChannel = $this->environment->getReleaseChannel();
+
+        if (!empty($releaseChannel)) {
+            $params['release_channel'] = $releaseChannel;
+        }
+
+        $params['prefer_stable'] = (int) $this->environment->doesPreferStable();
+        $params['piwik'] = $this->environment->getPiwikVersion();
+        $params['php'] = $this->environment->getPhpVersion();
+        $params['mysql'] = $this->environment->getMySQLVersion();
+        $params['num_users'] = $this->environment->getNumUsers();
+        $params['num_websites'] = $this->environment->getNumWebsites();
+
+        $query = http_build_query($params);
+        $cacheId = $this->getCacheKey($action, $query);
+
+        $result = $this->cache->fetch($cacheId);
+
+        if ($result !== false) {
+            return $result;
+        }
+
+        try {
+            $result = $this->service->fetch($action, $params);
+        } catch (Service\Exception $e) {
+            throw new Exception($e->getMessage(), $e->getCode());
+        }
+
+        $this->cache->save($cacheId, $result, self::CACHE_TIMEOUT_IN_SECONDS);
+
+        return $result;
+    }
+
+    public function clearAllCacheEntries()
+    {
+        $this->cache->flushAll();
+    }
+
+    private function getCacheKey($action, $query)
+    {
+        $version = $this->service->getVersion();
+
+        return sprintf('marketplace.api.%s.%s.%s', $version, str_replace('/', '.', $action), md5($query));
+    }
+
+    /**
+     * @param  $pluginOrThemeName
+     * @throws Exception
+     * @return string
+     */
+    public function getDownloadUrl($pluginOrThemeName)
+    {
+        $plugin = $this->getPluginInfo($pluginOrThemeName);
+
+        if (empty($plugin['versions'])) {
+            throw new Exception('Plugin has no versions.');
+        }
+
+        $latestVersion = array_pop($plugin['versions']);
+        $downloadUrl = $latestVersion['download'];
+
+        return $this->service->getDomain() . $downloadUrl . '?coreVersion=' . $this->environment->getPiwikVersion();
+    }
+
+}
diff --git a/plugins/CorePluginsAdmin/MarketplaceApiException.php b/plugins/Marketplace/Api/Exception.php
similarity index 65%
rename from plugins/CorePluginsAdmin/MarketplaceApiException.php
rename to plugins/Marketplace/Api/Exception.php
index 616a9b89b14742e5942975cc013c78ba7dba1777..7dce508bf93ba4ca0df34a50187a4dd1e863fe96 100644
--- a/plugins/CorePluginsAdmin/MarketplaceApiException.php
+++ b/plugins/Marketplace/Api/Exception.php
@@ -7,11 +7,11 @@
  *
  */
 
-namespace Piwik\Plugins\CorePluginsAdmin;
+namespace Piwik\Plugins\Marketplace\Api;
 
 /**
  */
-class MarketplaceApiException extends \Exception
+class Exception extends \Exception
 {
 
 }
diff --git a/plugins/Marketplace/Api/Service.php b/plugins/Marketplace/Api/Service.php
new file mode 100644
index 0000000000000000000000000000000000000000..e493b6994145dc667bcbc93c733e314152fc25b7
--- /dev/null
+++ b/plugins/Marketplace/Api/Service.php
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace\Api;
+
+use Piwik\Http;
+
+/**
+ *
+ */
+class Service
+{
+    const CACHE_TIMEOUT_IN_SECONDS = 1200;
+    const HTTP_REQUEST_TIMEOUT = 60;
+
+    /**
+     * @var string
+     */
+    private $domain;
+
+    /**
+     * @var null|string
+     */
+    private $accessToken;
+
+    /**
+     * API version to use on the Marketplace
+     * @var string
+     */
+    private $version = '2.0';
+
+    public function __construct($domain)
+    {
+        $this->domain = $domain;
+    }
+
+    public function authenticate($accessToken)
+    {
+        if (empty($accessToken)) {
+            $this->accessToken = null;
+        } elseif (ctype_alnum($accessToken)) {
+            $this->accessToken = $accessToken;
+        }
+    }
+
+    /**
+     * The API version that will be used on the Marketplace.
+     * @return string eg 2.0
+     */
+    public function getVersion()
+    {
+        return $this->version;
+    }
+
+    /**
+     * Returns the currently set access token
+     * @return null|string
+     */
+    public function getAccessToken()
+    {
+        return $this->accessToken;
+    }
+
+    public function hasAccessToken()
+    {
+        return !empty($this->accessToken);
+    }
+
+    /**
+     * Downloads data from the given URL via a POST request. If a destination path is given, the downloaded data
+     * will be stored in the given path and returned otherwise.
+     *
+     * Make sure to call {@link authenticate()} to download paid plugins.
+     *
+     * @param string $url An absolute URL to the marketplace including domain.
+     * @param null|string $destinationPath
+     * @param null|int $timeout  Defaults to 60 seconds see {@link self::HTTP_REQUEST_METHOD}
+     * @return bool|string  Returns the downloaded data or true if a destination path was given.
+     * @throws \Exception
+     */
+    public function download($url, $destinationPath = null, $timeout = null)
+    {
+        $method = Http::getTransportMethod();
+
+        if (!isset($timeout)) {
+            $timeout = static::HTTP_REQUEST_TIMEOUT;
+        }
+
+        $post = null;
+        if ($this->accessToken) {
+            $post = array('access_token' => $this->accessToken);
+        }
+
+        $file = Http::ensureDestinationDirectoryExists($destinationPath);
+
+        $response = Http::sendHttpRequestBy($method,
+                                            $url,
+                                            $timeout,
+                                            $userAgent = null,
+                                            $destinationPath,
+                                            $file,
+                                            $followDepth = 0,
+                                            $acceptLanguage = false,
+                                            $acceptInvalidSslCertificate = false,
+                                            $byteRange = false, $getExtendedInfo = false, $httpMethod = 'POST',
+                                            $httpUsername = null, $httpPassword = null, $post);
+
+        return $response;
+    }
+
+    /**
+     * Executes the given API action on the Marketplace using the given params and returns the result.
+     *
+     * Make sure to call {@link authenticate()} to download paid plugins.
+     *
+     * @param string $action  eg 'plugins', 'plugins/$pluginName/info', ...
+     * @param array $params   eg array('sort' => 'alpha')
+     * @return mixed
+     * @throws Service\Exception
+     */
+    public function fetch($action, $params)
+    {
+        $endpoint = sprintf('%s/api/%s/', $this->domain, $this->version);
+
+        $query = http_build_query($params);
+        $url   = sprintf('%s%s?%s', $endpoint, $action, $query);
+
+        $response = $this->download($url);
+
+        $result = json_decode($response, true);
+
+        if (is_null($result)) {
+            $message = sprintf('There was an error reading the response from the Marketplace: Please try again later.');
+            throw new Service\Exception($message, Service\Exception::HTTP_ERROR);
+        }
+
+        if (!empty($result['error'])) {
+            throw new Service\Exception($result['error'], Service\Exception::API_ERROR);
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get the domain that is used in order to access the Marketplace. Eg http://plugins.piwik.org
+     * @return string
+     */
+    public function getDomain()
+    {
+        return $this->domain;
+    }
+
+}
diff --git a/plugins/Marketplace/Api/Service/Exception.php b/plugins/Marketplace/Api/Service/Exception.php
new file mode 100644
index 0000000000000000000000000000000000000000..181c0be5684d4d1d7d5cfc540699aa111d310d9a
--- /dev/null
+++ b/plugins/Marketplace/Api/Service/Exception.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Api\Service;
+
+/**
+ */
+class Exception extends \Exception
+{
+    const HTTP_ERROR = 100;
+    const API_ERROR  = 101;
+
+}
diff --git a/plugins/Marketplace/Consumer.php b/plugins/Marketplace/Consumer.php
new file mode 100644
index 0000000000000000000000000000000000000000..1ae8ed490bb79c7852d7b4b3cc6788f9c5eccf64
--- /dev/null
+++ b/plugins/Marketplace/Consumer.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace;
+
+/**
+ * A consumer is a user having specified a license key in the Marketplace. 
+ */
+class Consumer
+{
+    /**
+     * @var Api\Client
+     */
+    private $marketplaceClient;
+
+    private $consumer = false;
+    private $isValid = null;
+
+    public function __construct(Api\Client $marketplaceClient)
+    {
+        $this->marketplaceClient = $marketplaceClient;
+    }
+
+    /**
+     * For tests only.
+     * @internal
+     * @return Api\Client
+     */
+    public function getApiClient()
+    {
+        return $this->marketplaceClient;
+    }
+
+    public function clearCache()
+    {
+        $this->consumer = false;
+        $this->isValid = null;
+    }
+
+    public function getConsumer()
+    {
+        if ($this->consumer === false) {
+            $consumer = $this->marketplaceClient->getConsumer();
+            if (!empty($consumer)) {
+                $this->consumer = $consumer;
+            } else {
+                $this->consumer = array();
+            }
+        }
+
+        return $this->consumer;
+    }
+
+    public function isValidConsumer()
+    {
+        if (!isset($this->isValid)) {
+            $this->isValid = $this->marketplaceClient->isValidConsumer();
+        }
+
+        return $this->isValid;
+    }
+
+}
diff --git a/plugins/Marketplace/Controller.php b/plugins/Marketplace/Controller.php
new file mode 100644
index 0000000000000000000000000000000000000000..986ee5cf9ac6171f11773cfc14f275fcfa5f4dd0
--- /dev/null
+++ b/plugins/Marketplace/Controller.php
@@ -0,0 +1,459 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Common;
+use Piwik\Date;
+use Piwik\Filesystem;
+use Piwik\Log;
+use Piwik\Nonce;
+use Piwik\Notification;
+use Piwik\Piwik;
+use Piwik\Plugin;
+use Piwik\Plugins\CorePluginsAdmin\Controller as PluginsController;
+use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
+use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
+use Piwik\Plugins\Marketplace\Input\Mode;
+use Piwik\Plugins\Marketplace\Input\PluginName;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Plugins\Marketplace\Input\Sort;
+use Piwik\ProxyHttp;
+use Piwik\SettingsPiwik;
+use Piwik\Url;
+use Piwik\View;
+use Exception;
+
+class Controller extends \Piwik\Plugin\ControllerAdmin
+{
+    const UPDATE_NONCE = 'Marketplace.updatePlugin';
+    const INSTALL_NONCE = 'Marketplace.installPlugin';
+
+    /**
+     * @var LicenseKey
+     */
+    private $licenseKey;
+    /**
+     * @var Plugins
+     */
+    private $plugins;
+
+    /**
+     * @var Api\Client
+     */
+    private $marketplaceApi;
+
+    /**
+     * @var Consumer
+     */
+    private $consumer;
+
+    /**
+     * @var PluginInstaller
+     */
+    private $pluginInstaller;
+
+    /**
+     * @var Plugin\Manager
+     */
+    private $pluginManager;
+
+    /**
+     * @var Environment
+     */
+    private $environment;
+
+    public function __construct(LicenseKey $licenseKey, Plugins $plugins, Api\Client $marketplaceApi, Consumer $consumer, PluginInstaller $pluginInstaller, Environment $environment)
+    {
+        $this->licenseKey = $licenseKey;
+        $this->plugins = $plugins;
+        $this->marketplaceApi = $marketplaceApi;
+        $this->consumer = $consumer;
+        $this->pluginInstaller = $pluginInstaller;
+        $this->pluginManager = Plugin\Manager::getInstance();
+        $this->environment = $environment;
+
+        parent::__construct();
+    }
+
+    public function subscriptionOverview()
+    {
+        Piwik::checkUserHasSuperUserAccess();
+
+        // we want to make sure to fetch the latest results, eg in case user has purchased a subscription meanwhile
+        // this is also like a self-repair to clear the caches :)
+        $this->marketplaceApi->clearAllCacheEntries();
+        $this->consumer->clearCache();
+
+        $hasLicenseKey = $this->licenseKey->has();
+
+        $consumer = $this->consumer->getConsumer();
+
+        $subscriptions = array();
+        $loginUrl = '';
+
+        if (!empty($consumer['loginUrl'])) {
+            $loginUrl = $consumer['loginUrl'];
+        }
+
+        if (!empty($consumer['licenses'])) {
+            foreach ($consumer['licenses'] as $subscription) {
+                $subscription['start'] = $this->getPrettyLongDate($subscription['startDate']);
+                $subscription['end'] = $this->getPrettyLongDate($subscription['endDate']);
+                $subscription['nextPayment'] = $this->getPrettyLongDate($subscription['nextPaymentDate']);
+                $subscriptions[] = $subscription;
+            }
+        }
+
+        return $this->renderTemplate('@Marketplace/subscription-overview', array(
+            'hasLicenseKey' => $hasLicenseKey,
+            'subscriptions' => $subscriptions,
+            'loginUrl' => $loginUrl,
+            'numUsers' => $this->environment->getNumUsers()
+        ));
+    }
+
+    private function getPrettyLongDate($date)
+    {
+        if (empty($date)) {
+            return '';
+        }
+
+        return Date::factory($date)->getLocalized(Date::DATE_FORMAT_LONG);
+    }
+
+    public function pluginDetails()
+    {
+        $view = $this->configureViewAndCheckPermission('@Marketplace/plugin-details');
+
+        $pluginName = new PluginName();
+        $pluginName = $pluginName->getPluginName();
+
+        $activeTab  = Common::getRequestVar('activeTab', '', 'string');
+        if ('changelog' !== $activeTab) {
+            $activeTab = '';
+        }
+
+        try {
+            $plugin = $this->plugins->getPluginInfo($pluginName);
+
+            if (empty($plugin['name'])) {
+                throw new Exception('Plugin does not exist');
+            }
+        } catch (Exception $e) {
+            $plugin = null;
+            $view->errorMessage = $e->getMessage();
+        }
+
+        $view->plugin       = $plugin;
+        $view->isSuperUser  = Piwik::hasUserSuperUserAccess();
+        $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
+        $view->updateNonce  = Nonce::getNonce(static::UPDATE_NONCE);
+        $view->activeTab    = $activeTab;
+        $view->isAutoUpdatePossible = SettingsPiwik::isAutoUpdatePossible();
+        $view->isAutoUpdateEnabled = SettingsPiwik::isAutoUpdateEnabled();
+        $view->numUsers = $this->environment->getNumUsers();
+
+        return $view->render();
+    }
+
+    public function download()
+    {
+        Piwik::checkUserHasSuperUserAccess();
+
+        $this->dieIfPluginsAdminIsDisabled();
+
+        $pluginName = new PluginName();
+        $pluginName = $pluginName->getPluginName();
+
+        Nonce::checkNonce($pluginName);
+
+        $filename = $pluginName . '.zip';
+
+        try {
+            $pathToPlugin = $this->marketplaceApi->download($pluginName);
+            ProxyHttp::serverStaticFile($pathToPlugin, 'application/zip', $expire = 0, $start = false, $end = false, $filename);
+        } catch (Exception $e) {
+            Common::sendResponseCode(500);
+            Log::warning('Could not download file . ' . $e->getMessage());
+        }
+
+        if (!empty($pathToPlugin)) {
+            Filesystem::deleteFileIfExists($pathToPlugin);
+        }
+    }
+
+    public function overview()
+    {
+        $view = $this->configureViewAndCheckPermission('@Marketplace/overview');
+
+        $show  = Common::getRequestVar('show', 'plugins', 'string');
+        $query = Common::getRequestVar('query', '', 'string', $_POST);
+
+        $sort = new Sort();
+        $sort = $sort->getSort();
+
+        $mode = new Mode();
+        $mode = $mode->getMode();
+
+        // we're fetching all available plugins to decide which tabs need to be shown in the UI and to know the number
+        // of total available plugins
+        $allPlugins = $this->plugins->getAllPlugins();
+        $allThemes   = $this->plugins->getAllThemes();
+        $paidPlugins = $this->plugins->getAllPaidPlugins();
+
+        $showThemes  = ($show === 'themes');
+        $showPlugins = !$showThemes;
+        $showPaid    = ($show === 'premium');
+        $showAll    = !$showPaid;
+
+        if ($showPlugins && $showPaid) {
+            $type = PurchaseType::TYPE_PAID;
+            $view->numAvailablePlugins = count($paidPlugins);
+        } elseif ($showPlugins && $showAll) {
+            $type = PurchaseType::TYPE_ALL;
+            $view->numAvailablePlugins = count($allPlugins);
+        } else {
+            $type = PurchaseType::TYPE_ALL;
+            $view->numAvailablePlugins = count($allThemes);
+        }
+
+        $pluginsToShow = $this->plugins->searchPlugins($query, $sort, $showThemes, $type);
+
+        $paidPluginsToInstallAtOnce = array();
+        if (SettingsPiwik::isAutoUpdatePossible()) {
+            foreach ($paidPlugins as $paidPlugin) {
+                if ($this->canPluginBeInstalled($paidPlugin)
+                    || ($this->pluginManager->isPluginInstalled($paidPlugin['name'])
+                        && !$this->pluginManager->isPluginActivated($paidPlugin['name']))) {
+                    $paidPluginsToInstallAtOnce[] = $paidPlugin['name'];
+                }
+            }
+        }
+
+        $view->paidPluginsToInstallAtOnce = $paidPluginsToInstallAtOnce;
+        $view->pluginsToShow = $pluginsToShow;
+        $view->isValidConsumer = $this->consumer->isValidConsumer();
+        $view->paidPlugins = $paidPlugins;
+        $view->freePlugins = $allPlugins;
+        $view->themes = $allThemes;
+        $view->showThemes = $showThemes;
+        $view->showPlugins = $showPlugins;
+        $view->showFree = $showAll;
+        $view->showPaid = $showPaid;
+        $view->pluginType = $show;
+        $view->pluginTypeOptions = array(
+            'plugins' => Piwik::translate('General_Plugins'),
+            'premium' => Piwik::translate('Marketplace_PaidPlugins'),
+            'themes' => Piwik::translate('CorePluginsAdmin_Themes')
+        );
+        $view->pluginSortOptions = array(
+            Sort::METHOD_LAST_UPDATED => Piwik::translate('Marketplace_SortByLastUpdated'),
+            Sort::METHOD_POPULAR => Piwik::translate('Marketplace_SortByPopular'),
+            Sort::METHOD_NEWEST => Piwik::translate('Marketplace_SortByNewest'),
+            Sort::METHOD_ALPHA => Piwik::translate('Marketplace_SortByAlpha'),
+        );
+        $view->mode = $mode;
+        $view->query = $query;
+        $view->sort = $sort;
+        $view->hasLicenseKey = $this->licenseKey->has();
+        $view->hasSomeAdminAccess = Piwik::isUserHasSomeAdminAccess();
+        $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
+        $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
+        $view->deactivateNonce = Nonce::getNonce(PluginsController::DEACTIVATE_NONCE);
+        $view->activateNonce = Nonce::getNonce(PluginsController::ACTIVATE_NONCE);
+        $view->isSuperUser = Piwik::hasUserSuperUserAccess();
+        $view->isPluginsAdminEnabled = CorePluginsAdmin::isPluginsAdminEnabled();
+        $view->isAutoUpdatePossible = SettingsPiwik::isAutoUpdatePossible();
+        $view->isAutoUpdateEnabled = SettingsPiwik::isAutoUpdateEnabled();
+
+        return $view->render();
+    }
+
+    public function installAllPaidPlugins()
+    {
+        Piwik::checkUserHasSuperUserAccess();
+
+        $this->dieIfPluginsAdminIsDisabled();
+        Plugin\ControllerAdmin::displayWarningIfConfigFileNotWritable();
+
+        Nonce::checkNonce(static::INSTALL_NONCE);
+
+        $paidPlugins = $this->plugins->getAllPaidPlugins();
+
+        $hasErrors = false;
+        foreach ($paidPlugins as $paidPlugin) {
+            if (!$this->canPluginBeInstalled($paidPlugin)) {
+                continue;
+            }
+
+            $pluginName = $paidPlugin['name'];
+
+            try {
+
+                $this->pluginInstaller->installOrUpdatePluginFromMarketplace($pluginName);
+
+            } catch (\Exception $e) {
+
+                $notification = new Notification($e->getMessage());
+                $notification->context = Notification::CONTEXT_ERROR;
+                Notification\Manager::notify('Marketplace_Install' . $pluginName, $notification);
+
+                $hasErrors = true;
+            }
+        }
+
+        if ($hasErrors) {
+            Url::redirectToReferrer();
+            return;
+        }
+
+        $dependency = new Plugin\Dependency();
+
+        for ($i = 0; $i <= 10; $i++) {
+            foreach ($paidPlugins as $index => $paidPlugin) {
+                $pluginName = $paidPlugin['name'];
+
+                if ($this->pluginManager->isPluginActivated($pluginName)) {
+                    unset($paidPlugins[$index]);
+                    continue;
+                }
+
+                if (empty($paidPlugin['require'])
+                    || !$dependency->hasDependencyToDisabledPlugin($paidPlugin['require'])) {
+
+                    unset($paidPlugins[$index]);
+
+                    try {
+                        $this->pluginManager->activatePlugin($pluginName);
+                    } catch (Exception $e) {
+
+                        $hasErrors = true;
+                        $notification = new Notification($e->getMessage());
+                        $notification->context = Notification::CONTEXT_ERROR;
+                        Notification\Manager::notify('Marketplace_Install' . $pluginName, $notification);
+                    }
+                }
+            }
+        }
+
+        if ($hasErrors) {
+            $notification = new Notification(Piwik::translate('Marketplace_OnlySomePaidPluginsInstalledAndActivated'));
+            $notification->context = Notification::CONTEXT_INFO;
+        } else {
+            $notification = new Notification(Piwik::translate('Marketplace_AllPaidPluginsInstalledAndActivated'));
+            $notification->context = Notification::CONTEXT_SUCCESS;
+        }
+
+        Notification\Manager::notify('Marketplace_InstallAll', $notification);
+
+        Url::redirectToReferrer();
+    }
+
+    public function updatePlugin()
+    {
+        $view = $this->createUpdateOrInstallView('updatePlugin', static::UPDATE_NONCE);
+        return $view->render();
+    }
+
+    public function installPlugin()
+    {
+        $view = $this->createUpdateOrInstallView('installPlugin', static::INSTALL_NONCE);
+        $view->nonce = Nonce::getNonce(PluginsController::ACTIVATE_NONCE);
+
+        return $view->render();
+    }
+
+    private function createUpdateOrInstallView($template, $nonceName)
+    {
+        Piwik::checkUserHasSuperUserAccess();
+        $this->dieIfPluginsAdminIsDisabled();
+        $this->displayWarningIfConfigFileNotWritable();
+
+        $pluginName = $this->getPluginNameIfNonceValid($nonceName);
+
+        $view = new View('@Marketplace/' . $template);
+        $this->setBasicVariablesView($view);
+        $view->errorMessage = '';
+        $view->plugin = array('name' => $pluginName);
+
+        try {
+            $this->pluginInstaller->installOrUpdatePluginFromMarketplace($pluginName);
+
+        } catch (\Exception $e) {
+
+            $notification = new Notification($e->getMessage());
+            $notification->context = Notification::CONTEXT_ERROR;
+            $notification->type = Notification::TYPE_PERSISTENT;
+            $notification->flags = Notification::FLAG_CLEAR;
+            Notification\Manager::notify('CorePluginsAdmin_InstallPlugin', $notification);
+
+            Url::redirectToReferrer();
+            return;
+        }
+
+        $view->plugin = $this->plugins->getPluginInfo($pluginName);
+
+        return $view;
+    }
+
+    private function getPluginNameIfNonceValid($nonceName)
+    {
+        $nonce = Common::getRequestVar('nonce', null, 'string');
+
+        if (!Nonce::verifyNonce($nonceName, $nonce)) {
+            throw new \Exception(Piwik::translate('General_ExceptionNonceMismatch'));
+        }
+
+        Nonce::discardNonce($nonceName);
+
+        $pluginName = Common::getRequestVar('pluginName', null, 'string');
+
+        if (!$this->pluginManager->isValidPluginName($pluginName)) {
+            throw new Exception('Invalid plugin name');
+        }
+
+        return $pluginName;
+    }
+
+    private function dieIfPluginsAdminIsDisabled()
+    {
+        if (!CorePluginsAdmin::isPluginsAdminEnabled()) {
+            throw new \Exception('Enabling, disabling and uninstalling plugins has been disabled by Piwik admins.
+            Please contact your Piwik admins with your request so they can assist you.');
+        }
+    }
+
+    private function canPluginBeInstalled($plugin)
+    {
+        if (empty($plugin['isDownloadable'])) {
+            return false;
+        }
+
+        $pluginName = $plugin['name'];
+
+        $isAlreadyInstalled = $this->pluginManager->isPluginInstalled($pluginName)
+            || $this->pluginManager->isPluginLoaded($pluginName)
+            || $this->pluginManager->isPluginActivated($pluginName);
+
+        return !$isAlreadyInstalled;
+    }
+
+    protected function configureViewAndCheckPermission($template)
+    {
+        Piwik::checkUserIsNotAnonymous();
+
+        $view = new View($template);
+        $this->setBasicVariablesView($view);
+        $this->displayWarningIfConfigFileNotWritable();
+
+        $view->errorMessage = '';
+
+        return $view;
+    }
+}
diff --git a/plugins/Marketplace/Environment.php b/plugins/Marketplace/Environment.php
new file mode 100644
index 0000000000000000000000000000000000000000..0cfa124d9eb2d8f60d9167d98dc7f3c382918fcd
--- /dev/null
+++ b/plugins/Marketplace/Environment.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Common;
+use Piwik\Db;
+use Piwik\Plugin\ReleaseChannels;
+use Piwik\Plugins\CoreUpdater\ReleaseChannel;
+use Piwik\Version;
+
+class Environment
+{
+    /**
+     * @var ReleaseChannel
+     */
+    private $releaseChannel;
+
+    private $usersCache = null;
+    private $websitesCache = null;
+    private $mySqlCache = null;
+    private $piwikVersion = null;
+
+    public function __construct(ReleaseChannels $releaseChannels)
+    {
+        $this->releaseChannel = $releaseChannels->getActiveReleaseChannel();
+    }
+
+    public function setPiwikVersion($piwikVersion)
+    {
+        $this->piwikVersion = $piwikVersion;
+    }
+
+    public function getNumUsers()
+    {
+        if (!isset($this->usersCache)) {
+            $this->usersCache = (int) Db::get()->fetchOne('SELECT count(login) FROM ' . Common::prefixTable('user') . ' WHERE login <> "anonymous" ');
+        }
+
+        return $this->usersCache;
+    }
+
+    public function getNumWebsites()
+    {
+        if (!isset($this->websitesCache)) {
+            $this->websitesCache = (int) Db::get()->fetchOne('SELECT count(idsite) FROM ' . Common::prefixTable('site'));
+        }
+
+        return $this->websitesCache;
+    }
+
+    public function getPhpVersion()
+    {
+        return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION;
+    }
+
+    public function getPiwikVersion()
+    {
+        if (!empty($this->piwikVersion)) {
+            return $this->piwikVersion;
+        }
+
+        return Version::VERSION;
+    }
+
+    public function doesPreferStable()
+    {
+        if (!empty($this->releaseChannel)) {
+            return $this->releaseChannel->doesPreferStable();
+        }
+
+        return true;
+    }
+
+    public function getReleaseChannel()
+    {
+        if (!empty($this->releaseChannel)) {
+            return $this->releaseChannel->getId();
+        }
+    }
+
+    public function getMySQLVersion()
+    {
+        if (isset($this->mySqlCache)) {
+            return $this->mySqlCache;
+        }
+
+        $this->mySqlCache = '';
+
+        $db = Db::get();
+        if (method_exists($db, 'getServerVersion')) {
+            $this->mySqlCache = $db->getServerVersion();
+        }
+
+        return $this->mySqlCache;
+    }
+
+
+}
diff --git a/plugins/Marketplace/Input/Mode.php b/plugins/Marketplace/Input/Mode.php
new file mode 100644
index 0000000000000000000000000000000000000000..12ec883b3fbd27d5e0da47c2b42f8fb9c4bf5cb5
--- /dev/null
+++ b/plugins/Marketplace/Input/Mode.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+use Piwik\Common;
+
+/**
+ */
+class Mode
+{
+
+    public function getMode()
+    {
+        $mode = Common::getRequestVar('mode', 'admin', 'string');
+
+        if (!in_array($mode, array('user', 'admin'))) {
+            $mode = 'admin';
+        }
+
+        return $mode;
+    }
+
+}
diff --git a/plugins/Marketplace/Input/PluginName.php b/plugins/Marketplace/Input/PluginName.php
new file mode 100644
index 0000000000000000000000000000000000000000..354b7ff9d9571ab5030247508eda933d4e8d55b7
--- /dev/null
+++ b/plugins/Marketplace/Input/PluginName.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+use Piwik\Common;
+use Piwik\Plugin;
+use Exception;
+
+/**
+ */
+class PluginName
+{
+    private $requestParam = '';
+
+    public function __construct($requestParam = 'pluginName')
+    {
+        $this->requestParam = $requestParam;
+    }
+
+    public function getPluginName()
+    {
+        $pluginName = Common::getRequestVar($this->requestParam, null, 'string');
+
+        $this->dieIfPluginNameIsInvalid($pluginName);
+
+        return $pluginName;
+    }
+
+    private function dieIfPluginNameIsInvalid($pluginName)
+    {
+        if (!Plugin\Manager::getInstance()->isValidPluginName($pluginName)){
+            throw new Exception('Invalid plugin name given');
+        }
+    }
+
+}
diff --git a/plugins/Marketplace/Input/PurchaseType.php b/plugins/Marketplace/Input/PurchaseType.php
new file mode 100644
index 0000000000000000000000000000000000000000..7a76450c560501ba97eeeea7f37de70104c91259
--- /dev/null
+++ b/plugins/Marketplace/Input/PurchaseType.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+
+/**
+ */
+class PurchaseType
+{
+    const TYPE_FREE = 'free';
+    const TYPE_PAID = 'paid';
+    const TYPE_ALL  = '';
+
+}
diff --git a/plugins/Marketplace/Input/Sort.php b/plugins/Marketplace/Input/Sort.php
new file mode 100644
index 0000000000000000000000000000000000000000..ba9aec307e3fa5fc0a0fc7a45ebbf0b95b0305b9
--- /dev/null
+++ b/plugins/Marketplace/Input/Sort.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+use Piwik\Common;
+
+/**
+ */
+class Sort
+{
+    const METHOD_POPULAR = 'popular';
+    const METHOD_ALPHA = 'alpha';
+    const METHOD_LAST_UPDATED = 'lastupdated';
+    const METHOD_NEWEST = 'newest';
+    const DEFAULT_SORT = self::METHOD_LAST_UPDATED;
+
+    public function getSort()
+    {
+        $sort = Common::getRequestVar('sort', self::DEFAULT_SORT, 'string');
+
+        if (!$this->isValidSortMethod($sort)) {
+            $sort = self::DEFAULT_SORT;
+        }
+
+        return $sort;
+    }
+
+    private function isValidSortMethod($sortMethod)
+    {
+        $valid = array(self::METHOD_POPULAR, self::METHOD_NEWEST, self::METHOD_ALPHA);
+
+        return in_array($sortMethod, $valid, $strict = true);
+    }
+
+}
diff --git a/plugins/Marketplace/LicenseKey.php b/plugins/Marketplace/LicenseKey.php
new file mode 100644
index 0000000000000000000000000000000000000000..cc53142b61e3480fb1b691cdfb0866ca2734034d
--- /dev/null
+++ b/plugins/Marketplace/LicenseKey.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Option;
+
+class LicenseKey
+{
+    public function get()
+    {
+        return Option::get('marketplace_license_key');
+    }
+
+    public function has()
+    {
+        $key = $this->get();
+
+        return isset($key) && $key !== false && $key !== '';
+    }
+
+    /**
+     * @param string|null|false $licenseKey `null` or `false` will delete an existing a license key
+     */
+    public function set($licenseKey)
+    {
+        if (!isset($licenseKey) || $licenseKey === false) {
+            $this->delete();
+        } else {
+            Option::set('marketplace_license_key', (string) $licenseKey);
+        }
+    }
+
+    private function delete()
+    {
+        Option::delete('marketplace_license_key');
+    }
+
+}
diff --git a/plugins/Marketplace/Marketplace.php b/plugins/Marketplace/Marketplace.php
new file mode 100644
index 0000000000000000000000000000000000000000..50f7682a05c0ee2c9e249ff17617fccbf0900334
--- /dev/null
+++ b/plugins/Marketplace/Marketplace.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Plugin;
+
+class Marketplace extends \Piwik\Plugin
+{
+    /**
+     * @see \Piwik\Plugin::registerEvents
+     */
+    public function registerEvents()
+    {
+        return array(
+            'AssetManager.getJavaScriptFiles' => 'getJsFiles',
+            'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
+            'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
+        );
+    }
+
+    public function getStylesheetFiles(&$stylesheets)
+    {
+        $stylesheets[] = "plugins/Marketplace/stylesheets/marketplace.less";
+        $stylesheets[] = "plugins/Marketplace/stylesheets/plugin-details.less";
+        $stylesheets[] = "plugins/Marketplace/stylesheets/marketplace-widget.less";
+    }
+
+    public function getJsFiles(&$jsFiles)
+    {
+        $jsFiles[] = "libs/bower_components/iframe-resizer/js/iframeResizer.min.js";
+
+        $jsFiles[] = "plugins/Marketplace/angularjs/plugins/plugin-name.directive.js";
+        $jsFiles[] = "plugins/Marketplace/angularjs/licensekey/licensekey.controller.js";
+        $jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.controller.js";
+        $jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.directive.js";
+    }
+
+    public function getClientSideTranslationKeys(&$translationKeys)
+    {
+        $translationKeys[] = 'Marketplace_LicenseKeyActivatedSuccess';
+        $translationKeys[] = 'Marketplace_LicenseKeyDeletedSuccess';
+    }
+
+    public static function isMarketplaceEnabled()
+    {
+        return self::getPluginManager()->isPluginActivated('Marketplace');
+    }
+
+    /**
+     * @return Plugin\Manager
+     */
+    private static function getPluginManager()
+    {
+        return Plugin\Manager::getInstance();
+    }
+
+}
diff --git a/plugins/Marketplace/Menu.php b/plugins/Marketplace/Menu.php
new file mode 100644
index 0000000000000000000000000000000000000000..ae67515a9c783b17651a39ba37ee9f489de512e1
--- /dev/null
+++ b/plugins/Marketplace/Menu.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Menu\MenuAdmin;
+use Piwik\Piwik;
+
+/**
+ */
+class Menu extends \Piwik\Plugin\Menu
+{
+
+    public function configureAdminMenu(MenuAdmin $menu)
+    {
+        if (!Piwik::isUserIsAnonymous()) {
+            $menu->addPlatformItem('Marketplace_Marketplace',
+                $this->urlForAction('overview', array('activated' => '', 'mode' => 'admin', 'type' => '', 'show' => '')),
+                $order = 5);
+        }
+    }
+
+}
diff --git a/plugins/Marketplace/Plugins.php b/plugins/Marketplace/Plugins.php
new file mode 100644
index 0000000000000000000000000000000000000000..558a83c4dab885bb06fba183e36794c65643db97
--- /dev/null
+++ b/plugins/Marketplace/Plugins.php
@@ -0,0 +1,318 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Date;
+use Piwik\ProfessionalServices\Advertising;
+use Piwik\Plugin\Dependency as PluginDependency;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Plugins\Marketplace\Input\Sort;
+
+/**
+ *
+ */
+class Plugins
+{
+    /**
+     * @var Api\Client
+     */
+    private $marketplaceClient;
+
+    /**
+     * @var Consumer
+     */
+    private $consumer;
+
+    /**
+     * @var Advertising
+     */
+    private $advertising;
+
+    /**
+     * @var Plugin\Manager
+     */
+    private $pluginManager;
+
+    /**
+     * @internal for tests only
+     * @var array
+     */
+    private $activatedPluginNames = array();
+
+    private $pluginsHavingUpdateCache = null;
+
+    public function __construct(Api\Client $marketplaceClient, Consumer $consumer, Advertising $advertising)
+    {
+        $this->marketplaceClient = $marketplaceClient;
+        $this->consumer = $consumer;
+        $this->advertising = $advertising;
+        $this->pluginManager = Plugin\Manager::getInstance();
+    }
+
+    public function getPluginInfo($pluginName)
+    {
+        $plugin = $this->marketplaceClient->getPluginInfo($pluginName);
+        $plugin = $this->enrichPluginInformation($plugin);
+
+        return $plugin;
+    }
+
+    public function getAvailablePluginNames($themesOnly)
+    {
+        if ($themesOnly) {
+            // we do not use getAllThemes() or getAllPlugins() since those methods would apply a whitelist
+            // github organization filter and here we actually want to get all plugin names.
+            $plugins = $this->marketplaceClient->searchForThemes('', '', Sort::DEFAULT_SORT, PurchaseType::TYPE_ALL);
+        } else {
+            $plugins = $this->marketplaceClient->searchForPlugins('', '', Sort::DEFAULT_SORT, PurchaseType::TYPE_ALL);
+        }
+
+        $names = array();
+        foreach ($plugins as $plugin) {
+            $names[] = $plugin['name'];
+        }
+
+        return $names;
+    }
+
+    public function getAllAvailablePluginNames()
+    {
+        return array_merge(
+            $this->getAvailablePluginNames(true),
+            $this->getAvailablePluginNames(false)
+        );
+    }
+
+    public function searchPlugins($query, $sort, $themesOnly, $purchaseType = '')
+    {
+        if ($themesOnly) {
+            $plugins = $this->marketplaceClient->searchForThemes('', $query, $sort, $purchaseType);
+        } else {
+            $plugins = $this->marketplaceClient->searchForPlugins('', $query, $sort, $purchaseType);
+        }
+
+        foreach ($plugins as $index => $plugin) {
+            $plugins[$index] = $this->enrichPluginInformation($plugin);
+        }
+
+        return array_values($plugins);
+    }
+
+    public function getAllPaidPlugins()
+    {
+        return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = false, PurchaseType::TYPE_PAID);
+    }
+
+    public function getAllFreePlugins()
+    {
+        return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = false, PurchaseType::TYPE_FREE);
+    }
+
+    public function getAllThemes()
+    {
+        return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = true, PurchaseType::TYPE_ALL);
+    }
+
+    public function getAllPlugins()
+    {
+        return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = false, PurchaseType::TYPE_ALL);
+    }
+
+    private function getPluginUpdateInformation($plugin)
+    {
+        if (empty($plugin['name'])) {
+            return;
+        }
+
+        if (!isset($this->pluginsHavingUpdateCache)) {
+            $this->pluginsHavingUpdateCache = $this->getPluginsHavingUpdate();
+        }
+
+        foreach ($this->pluginsHavingUpdateCache as $pluginHavingUpdate) {
+            if ($plugin['name'] == $pluginHavingUpdate['name']) {
+                return $pluginHavingUpdate;
+            }
+        }
+    }
+
+    /**
+     * for tests only
+     * @internal
+     * @ignore
+     * @param $plugins
+     */
+    public function setPluginsHavingUpdateCache($plugins)
+    {
+        $this->pluginsHavingUpdateCache = $plugins;
+    }
+
+    private function hasPluginUpdate($plugin)
+    {
+        $update = $this->getPluginUpdateInformation($plugin);
+
+        return !empty($update);
+    }
+
+    /**
+     * @param bool $themesOnly
+     * @return array
+     */
+    public function getPluginsHavingUpdate()
+    {
+        $this->pluginManager->loadAllPluginsAndGetTheirInfo();
+        $loadedPlugins = $this->pluginManager->getLoadedPlugins();
+
+        try {
+            $pluginsHavingUpdate = $this->marketplaceClient->getInfoOfPluginsHavingUpdate($loadedPlugins);
+        } catch (\Exception $e) {
+            $pluginsHavingUpdate = array();
+        }
+
+        foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
+            foreach ($loadedPlugins as $loadedPlugin) {
+                if (!empty($updatePlugin['name'])
+                    && $loadedPlugin->getPluginName() == $updatePlugin['name']
+                ) {
+                    $updatePlugin['currentVersion'] = $loadedPlugin->getVersion();
+                    $updatePlugin['isActivated'] = $this->pluginManager->isPluginActivated($updatePlugin['name']);
+                    $pluginsHavingUpdate[$key] = $this->addMissingRequirements($updatePlugin);
+                    break;
+                }
+            }
+        }
+
+        // remove plugins that have updates but for some reason are not loaded
+        foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
+            if (empty($updatePlugin['currentVersion'])) {
+                unset($pluginsHavingUpdate[$key]);
+            }
+        }
+
+        return $pluginsHavingUpdate;
+    }
+
+    /**
+     * for tests only
+     * @param array $pluginNames
+     * @internal
+     * @ignore
+     */
+    public function setActivatedPluginNames($pluginNames)
+    {
+        $this->activatedPluginNames = $pluginNames;
+    }
+
+    private function isPluginActivated($pluginName)
+    {
+        if (in_array($pluginName, $this->activatedPluginNames)) {
+            return true;
+        }
+
+        return $this->pluginManager->isPluginActivated($pluginName);
+    }
+
+    private function isPluginInstalled($pluginName)
+    {
+        if (in_array($pluginName, $this->activatedPluginNames)) {
+            return true;
+        }
+
+        return $this->pluginManager->isPluginInstalled($pluginName);
+    }
+
+    private function enrichPluginInformation($plugin)
+    {
+        if (empty($plugin)) {
+            return $plugin;
+        }
+
+        $plugin['isInstalled']  = $this->isPluginInstalled($plugin['name']);
+        $plugin['isActivated']  = $this->isPluginActivated($plugin['name']);
+        $plugin['isInvalid']    = $this->pluginManager->isPluginThirdPartyAndBogus($plugin['name']);
+        $plugin['canBeUpdated'] = $plugin['isInstalled'] && $this->hasPluginUpdate($plugin);
+        $plugin['lastUpdated'] = $this->toShortDate($plugin['lastUpdated']);
+        $plugin['hasExceededLicense'] = !empty($plugin['isInstalled']) && !empty($plugin['shop']) && empty($plugin['isFree']) && empty($plugin['isDownloadable']) && !empty($plugin['consumer']['license']['isValid']) && !empty($plugin['consumer']['license']['isExceeded']);
+        $plugin['isMissingLicense'] = !empty($plugin['isInstalled']) && !empty($plugin['shop']) && empty($plugin['isFree']) && empty($plugin['isDownloadable']) && empty($plugin['consumer']['license']);
+
+        if (!empty($plugin['owner'])
+            && strtolower($plugin['owner']) === 'piwikpro'
+            && !empty($plugin['homepage'])
+            && strpos($plugin['homepage'], 'pk_campaign') === false) {
+            $plugin['homepage'] = $this->advertising->addPromoCampaignParametersToUrl($plugin['homepage'], Advertising::CAMPAIGN_NAME_PROFESSIONAL_SERVICES, 'Marketplace', $plugin['name']);
+        }
+
+        if ($plugin['canBeUpdated']) {
+            $pluginUpdate = $this->getPluginUpdateInformation($plugin);
+            $plugin['repositoryChangelogUrl'] = $pluginUpdate['repositoryChangelogUrl'];
+            $plugin['currentVersion']         = $pluginUpdate['currentVersion'];
+        }
+
+        if (!empty($plugin['activity']['lastCommitDate'])
+            && false === strpos($plugin['activity']['lastCommitDate'], '0000')
+            && false === strpos($plugin['activity']['lastCommitDate'], '1970')) {
+            $plugin['activity']['lastCommitDate'] = $this->toLongDate($plugin['activity']['lastCommitDate']);
+        } else {
+            $plugin['activity']['lastCommitDate'] = null;
+        }
+
+        if (!empty($plugin['versions'])) {
+            foreach ($plugin['versions'] as $index => $version) {
+                $plugin['versions'][$index]['release'] = $this->toLongDate($version['release']);
+            }
+        }
+
+        $plugin = $this->addMissingRequirements($plugin);
+
+        return $plugin;
+    }
+
+    private function toLongDate($date)
+    {
+        if (!empty($date)) {
+            $date = Date::factory($date)->getLocalized(Date::DATE_FORMAT_LONG);
+        }
+
+        return $date;
+    }
+
+    private function toShortDate($date)
+    {
+        if (!empty($date)) {
+            $date = Date::factory($date)->getLocalized(Date::DATE_FORMAT_SHORT);
+        }
+
+        return $date;
+    }
+
+    /**
+     * @param $plugin
+     */
+    private function addMissingRequirements($plugin)
+    {
+        $plugin['missingRequirements'] = array();
+
+        if (empty($plugin['versions']) || !is_array($plugin['versions'])) {
+            return $plugin;
+        }
+
+        $latestVersion = $plugin['versions'][count($plugin['versions']) - 1];
+
+        if (empty($latestVersion['requires'])) {
+            return $plugin;
+        }
+
+        $requires = $latestVersion['requires'];
+
+        $dependency = new PluginDependency();
+        $plugin['missingRequirements'] = $dependency->getMissingDependencies($requires);
+
+        return $plugin;
+    }
+}
diff --git a/plugins/Marketplace/Plugins/InvalidLicenses.php b/plugins/Marketplace/Plugins/InvalidLicenses.php
new file mode 100644
index 0000000000000000000000000000000000000000..1a0a198f67342a256a856c1ef485bc08e363d6d0
--- /dev/null
+++ b/plugins/Marketplace/Plugins/InvalidLicenses.php
@@ -0,0 +1,238 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace\Plugins;
+
+use Piwik\Cache;
+use Piwik\Piwik;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Plugins;
+use Piwik\Translation\Translator;
+use Piwik\Url;
+
+/**
+ *
+ */
+class InvalidLicenses
+{
+    /**
+     * @var Client
+     */
+    private $client;
+
+    /**
+     * @var Plugin\Manager
+     */
+    private $pluginManager;
+
+    /**
+     * @var Translator
+     */
+    private $translator;
+
+    /**
+     * @var Cache\Eager
+     */
+    private $cache;
+
+    /**
+     * @var array
+     */
+    private $activatedPluginNames = array();
+
+    private $plugins;
+
+    private $cacheKey = 'Marketplace_ExpiredPlugins';
+
+    public function __construct(Client $client, Cache\Eager $cache, Translator $translator, Plugins $plugins)
+    {
+        $this->client = $client;
+        $this->translator = $translator;
+        $this->pluginManager = Plugin\Manager::getInstance();
+        $this->cache = $cache;
+        $this->plugins = $plugins;
+    }
+
+    public function getPluginNamesOfInvalidLicenses()
+    {
+        // it is very important this is cached, otherwise performance may decrease a lot. Eager cache is currently
+        // cached for 12 hours. In case we lower ttl for eager cache it might be worth considering to change to another
+        // cache
+        if ($this->cache->contains($this->cacheKey)) {
+            $expiredPlugins = $this->cache->fetch($this->cacheKey);
+        } else {
+            $expiredPlugins = $this->getPluginNamesToExpireInCaseLicenseIsInvalid();
+            $this->cache->save($this->cacheKey, $expiredPlugins);
+        }
+
+        return $expiredPlugins;
+    }
+
+    public function clearCache()
+    {
+        $this->cache->delete($this->cacheKey);
+    }
+
+    public function getMessageExceededLicenses()
+    {
+        $plugins = $this->getPluginNamesOfInvalidLicenses();
+
+        if (empty($plugins['exceeded'])) {
+            return;
+        }
+
+        $plugins = '<strong>' . implode('</strong>, <strong>', $plugins['exceeded']) . '</strong>';
+        $loginUrl = $this->getLoginLink();
+        $loginUrlEnd = '';
+        if (!empty($loginUrl)) {
+            $loginUrlEnd = '</a>';
+        }
+
+        $message = $this->translator->translate('Marketplace_LicenseExceededDescription', array($plugins, '<br/>', "<strong>" . $loginUrl, $loginUrlEnd . "</strong>"));
+
+        if (Piwik::hasUserSuperUserAccess()) {
+            $message .= ' ' . $this->getSubscritionSummaryMessage();
+        }
+
+        return $message;
+    }
+
+    public function getMessageNoLicense()
+    {
+        $plugins = $this->getPluginNamesOfInvalidLicenses();
+
+        if (empty($plugins['noLicense'])) {
+            return;
+        }
+
+        $plugins = '<strong>' . implode('</strong>, <strong>', $plugins['noLicense']) . '</strong>';
+        $loginUrl = $this->getLoginLink();
+        $loginUrlEnd = '';
+        if (!empty($loginUrl)) {
+            $loginUrlEnd = '</a>';
+        }
+
+        $message = $this->translator->translate('Marketplace_LicenseMissingDescription', array($plugins, '<br/>', "<strong>" . $loginUrl, $loginUrlEnd. "</strong>"));
+
+        if (Piwik::hasUserSuperUserAccess()) {
+            $message .= ' ' . $this->getSubscritionSummaryMessage();
+        }
+
+        return $message;
+    }
+
+    public function getMessageExpiredLicenses()
+    {
+        $plugins = $this->getPluginNamesOfInvalidLicenses();
+
+        if (empty($plugins['expired'])) {
+            return;
+        }
+
+        $plugins = '<strong>' . implode('</strong>, <strong>', $plugins['expired']) . '</strong>';
+        $loginUrl = $this->getLoginLink();
+        $loginUrlEnd = '';
+        if (!empty($loginUrl)) {
+            $loginUrlEnd = '</a>';
+        }
+
+        $message = $this->translator->translate('Marketplace_LicenseExpiredDescription', array($plugins, '<br/>', "<strong>" . $loginUrl, $loginUrlEnd . "</strong>"));
+
+        if (Piwik::hasUserSuperUserAccess()) {
+            $message .= ' ' . $this->getSubscritionSummaryMessage();
+        }
+
+        return $message;
+    }
+
+    private function getLoginLink()
+    {
+        $info = $this->client->getInfo();
+
+        if (empty($info['loginUrl'])) {
+            return '';
+        }
+
+        return '<a href="' . $info['loginUrl'] . '" target="_blank" rel="noreferrer">';
+    }
+
+    private function getSubscritionSummaryMessage()
+    {
+        $url = Url::getCurrentQueryStringWithParametersModified(array(
+            'module' => 'Marketplace', 'action' => 'subscriptionOverview'
+        ));
+
+        $link = '<a href="' . $url . '">';
+
+        return "<br/>" .  $this->translator->translate('Marketplace_ViewSubscriptionsSummary', array($link, '</a>'));
+    }
+
+    private function getPluginNamesToExpireInCaseLicenseIsInvalid()
+    {
+        $pluginNames = array(
+            'exceeded' => array(),
+            'expired' => array(),
+            'noLicense' => array()
+        );
+
+        try {
+            $paidPlugins = $this->plugins->getAllPaidPlugins();
+        } catch (\Exception $e) {
+            return $pluginNames;
+        }
+
+        if (!empty($paidPlugins)) {
+            foreach ($paidPlugins as $plugin) {
+                $pluginName = $plugin['name'];
+                if ($this->isPluginActivated($pluginName)) {
+                    if (empty($plugin['consumer']['license'])) {
+                        $pluginNames['noLicense'][] = $pluginName;
+                    } elseif (!empty($plugin['consumer']['license']['isExceeded'])) {
+                        $pluginNames['exceeded'][] = $pluginName;
+                    } elseif (isset($plugin['consumer']['license']['isValid'])
+                           && empty($plugin['consumer']['license']['isValid'])) {
+                        $pluginNames['expired'][] = $pluginName;
+                    }
+                }
+            }
+        }
+
+        return $pluginNames;
+    }
+
+    /**
+     * for tests only
+     * @param array $pluginNames
+     * @internal
+     * @ignore
+     */
+    public function setActivatedPluginNames($pluginNames)
+    {
+        $this->activatedPluginNames = $pluginNames;
+    }
+
+    protected function isPluginInstalled($pluginName)
+    {
+        if (in_array($pluginName, $this->activatedPluginNames)) {
+            return true;
+        }
+
+        return $this->pluginManager->isPluginInstalled($pluginName);
+    }
+
+    protected function isPluginActivated($pluginName)
+    {
+        if (in_array($pluginName, $this->activatedPluginNames)) {
+            return true;
+        }
+
+        return $this->pluginManager->isPluginActivated($pluginName);
+    }
+
+}
diff --git a/plugins/CorePluginsAdmin/Tasks.php b/plugins/Marketplace/Tasks.php
similarity index 72%
rename from plugins/CorePluginsAdmin/Tasks.php
rename to plugins/Marketplace/Tasks.php
index 8354694e3b1e12d2788af5c6bcc672cb4d3ed064..81d27d4f62147ea97a19cb2b22e6abac602ee50b 100644
--- a/plugins/CorePluginsAdmin/Tasks.php
+++ b/plugins/Marketplace/Tasks.php
@@ -6,7 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  *
  */
-namespace Piwik\Plugins\CorePluginsAdmin;
+namespace Piwik\Plugins\Marketplace;
 
 class Tasks extends \Piwik\Plugin\Tasks
 {
@@ -15,24 +15,26 @@ class Tasks extends \Piwik\Plugin\Tasks
      */
     private $updateCommunication;
 
-    public function __construct(UpdateCommunication $updateCommunication)
+    /**
+     * @var Api\Client
+     */
+    private $api;
+
+    public function __construct(UpdateCommunication $updateCommunication, Api\Client $api)
     {
         $this->updateCommunication = $updateCommunication;
+        $this->api = $api;
     }
 
     public function schedule()
     {
         $this->daily('clearAllCacheEntries', null, self::LOWEST_PRIORITY);
-
-        if (CorePluginsAdmin::isMarketplaceEnabled()) {
-            $this->daily('sendNotificationIfUpdatesAvailable', null, self::LOWEST_PRIORITY);
-        }
+        $this->daily('sendNotificationIfUpdatesAvailable', null, self::LOWEST_PRIORITY);
     }
 
     public function clearAllCacheEntries()
     {
-        $marketplace = new MarketplaceApiClient();
-        $marketplace->clearAllCacheEntries();
+        $this->api->clearAllCacheEntries();
     }
 
     public function sendNotificationIfUpdatesAvailable()
diff --git a/plugins/CorePluginsAdmin/UpdateCommunication.php b/plugins/Marketplace/UpdateCommunication.php
similarity index 93%
rename from plugins/CorePluginsAdmin/UpdateCommunication.php
rename to plugins/Marketplace/UpdateCommunication.php
index da9f379324196f67ce0a59acdd363b45d5dfc978..efebfa899b0d6289010a10600a4d23b260fbff67 100644
--- a/plugins/CorePluginsAdmin/UpdateCommunication.php
+++ b/plugins/Marketplace/UpdateCommunication.php
@@ -6,9 +6,10 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  *
  */
-namespace Piwik\Plugins\CorePluginsAdmin;
+namespace Piwik\Plugins\Marketplace;
 
 use Piwik\Config;
+use Piwik\Container\StaticContainer;
 use Piwik\Mail;
 use Piwik\Option;
 use Piwik\Piwik;
@@ -56,7 +57,7 @@ class UpdateCommunication
     {
         $isEnabled = Config::getInstance()->General['enable_update_communication'];
 
-        return CorePluginsAdmin::isMarketplaceEnabled() && !empty($isEnabled);
+        return Marketplace::isMarketplaceEnabled() && !empty($isEnabled);
     }
 
     /**
@@ -164,13 +165,10 @@ class UpdateCommunication
 
     protected function getPluginsHavingUpdate()
     {
-        $marketplace         = new Marketplace();
-        $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false);
-        $themesHavingUpdate  = $marketplace->getPluginsHavingUpdate($themesOnly = true);
+        $marketplace         = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins');
+        $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate();
 
-        $plugins = array_merge($pluginsHavingUpdate, $themesHavingUpdate);
-
-        return $plugins;
+        return $pluginsHavingUpdate;
     }
 
     protected function buildNotificationMessage($pluginsToBeNotified, $hasThemeUpdate, $hasPluginUpdate)
diff --git a/plugins/CorePluginsAdmin/Widgets/GetNewPlugins.php b/plugins/Marketplace/Widgets/GetNewPlugins.php
similarity index 64%
rename from plugins/CorePluginsAdmin/Widgets/GetNewPlugins.php
rename to plugins/Marketplace/Widgets/GetNewPlugins.php
index a45b35e0b6e048fac06688a931c4d8a2afa04489..6079c1a8e8754b3ebb1264e874d40ec8444dbdae 100644
--- a/plugins/CorePluginsAdmin/Widgets/GetNewPlugins.php
+++ b/plugins/Marketplace/Widgets/GetNewPlugins.php
@@ -6,22 +6,22 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  *
  */
-namespace Piwik\Plugins\CorePluginsAdmin\Widgets;
+namespace Piwik\Plugins\Marketplace\Widgets;
 
 use Piwik\Common;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Input\Sort;
 use Piwik\Widget\Widget;
 use Piwik\Widget\WidgetConfig;
-use Piwik\View;
 
 class GetNewPlugins extends Widget
 {
     /**
-     * @var MarketplaceApiClient
+     * @var Client
      */
     private $marketplaceApiClient;
 
-    public function __construct(MarketplaceApiClient $marketplaceApiClient)
+    public function __construct(Client $marketplaceApiClient)
     {
         $this->marketplaceApiClient = $marketplaceApiClient;
     }
@@ -29,9 +29,6 @@ class GetNewPlugins extends Widget
     public static function configure(WidgetConfig $config)
     {
         $config->setCategoryId('About Piwik');
-        // TODO it actually shows "recently updated plugins currently". Need a new sort filter in the Marketplace
-        // TODO when decided whether to show new plugins or recently updated plugins add translation key
-        // we want to show new plugins likely (when changed Marketplace to support actually "newest" plugins)
         $config->setName('Latest Marketplace Updates');
         $config->setOrder(19);
     }
@@ -46,7 +43,7 @@ class GetNewPlugins extends Widget
             $template = 'getNewPlugins';
         }
 
-        $plugins = $this->marketplaceApiClient->searchForPlugins('', '', 'newest');
+        $plugins = $this->marketplaceApiClient->searchForPlugins('', '', Sort::METHOD_LAST_UPDATED, '');
 
         return $this->renderTemplate($template, array(
             'plugins' => array_splice($plugins, 0, 3)
diff --git a/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js b/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js
new file mode 100644
index 0000000000000000000000000000000000000000..15a3cfa6cc747bea0c53157af3d3f0573d0bbe2f
--- /dev/null
+++ b/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js
@@ -0,0 +1,63 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+(function () {
+    angular.module('piwikApp').controller('PiwikMarketplaceLicenseController', PiwikMarketplaceLicenseController);
+
+    PiwikMarketplaceLicenseController.$inject = ['piwik', 'piwikApi'];
+
+    function PiwikMarketplaceLicenseController(piwik, piwikApi) {
+
+        this.licenseKey = '';
+        this.enableUpdate = false;
+        this.isUpdating = false;
+
+        var self = this;
+
+        function updateLicenseKey(action, licenseKey, onSuccessMessage)
+        {
+
+            piwikApi.withTokenInUrl();
+            piwikApi.post({
+                module: 'API',
+                method: 'Marketplace.' + action,
+                format: 'JSON'
+            }, {licenseKey: licenseKey}).then(function (response) {
+                self.isUpdating = false;
+
+                if (response && response.value) {
+                    var UI = require('piwik/UI');
+                    var notification = new UI.Notification();
+                    notification.show(onSuccessMessage, {context: 'success'});
+
+                    piwik.helper.redirect();
+                }
+            }, function () {
+                self.isUpdating = false;
+            });
+        }
+
+        this.updatedLicenseKey = function () {
+            this.enableUpdate = !!this.licenseKey;
+        };
+
+        this.updateLicense = function () {
+            this.enableUpdate = false;
+            this.isUpdating = true;
+
+            updateLicenseKey('saveLicenseKey', this.licenseKey, _pk_translate('Marketplace_LicenseKeyActivatedSuccess'));
+        };
+
+        this.removeLicense = function () {
+            piwik.helper.modalConfirm('#confirmRemoveLicense', {yes: function () {
+                self.enableUpdate = false;
+                self.isUpdating = true;
+                updateLicenseKey('deleteLicenseKey', '', _pk_translate('Marketplace_LicenseKeyDeletedSuccess'));
+            }});
+        };
+
+    }
+})();
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js b/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js
similarity index 100%
rename from plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js
rename to plugins/Marketplace/angularjs/marketplace/marketplace.controller.js
diff --git a/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js b/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js
new file mode 100644
index 0000000000000000000000000000000000000000..96812865d699e276eb0af668b7f570b3f5b12d94
--- /dev/null
+++ b/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js
@@ -0,0 +1,132 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+/**
+ * Usage:
+ * <div piwik-marketplace>
+ */
+(function () {
+
+    angular.module('piwikApp').directive('piwikMarketplace', piwikMarketplace);
+
+    piwikMarketplace.$inject = ['piwik', '$timeout'];
+
+    function piwikMarketplace(piwik, $timeout){
+
+        return {
+            restrict: 'A',
+            compile: function (element, attrs) {
+
+                return function (scope, element, attrs) {
+
+                    $timeout(function () {
+
+
+                        $('.installAllPaidPlugins').click(function (event) {
+                            event.preventDefault();
+
+                            piwikHelper.modalConfirm('#installAllPaidPluginsAtOnce');
+                        });
+
+                        $('.uploadPlugin').click(function (event) {
+                            event.preventDefault();
+
+                            piwikHelper.modalConfirm('#installPluginByUpload', {});
+                        });
+
+
+                        $('#uploadPluginForm').submit(function (event) {
+
+                            var $zipFile = $('[name=pluginZip]');
+                            var fileName = $zipFile.val();
+
+                            if (!fileName || '.zip' != fileName.slice(-4)) {
+                                event.preventDefault();
+                                alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));
+                            }
+                        });
+
+                        // Keeps the plugin descriptions the same height
+                        $('.marketplace .plugin .description').dotdotdot({
+                            after: 'a.more',
+                            watch: 'window'
+                        });
+
+                        function syncMaxHeight2 (selector) {
+
+                            if (!selector) {
+                                return;
+                            }
+
+                            var $nodes = $(selector);
+
+                            if (!$nodes || !$nodes.length) {
+                                return;
+                            }
+
+                            var maxh3 = null;
+                            var maxMeta = null;
+                            var maxFooter = null;
+                            var nodesToUpdate = [];
+                            var lastTop = 0;
+                            $nodes.each(function (index, node) {
+                                var $node = $(node);
+                                var top   = $node.offset().top;
+
+                                if (lastTop !== top) {
+                                    nodesToUpdate = [];
+                                    lastTop = top;
+                                    maxh3 = null;
+                                    maxMeta = null;
+                                    maxFooter = null;
+                                }
+
+                                nodesToUpdate.push($node);
+
+                                var heightH3 = $node.find('h3').height();
+                                var heightMeta = $node.find('.metadata').height();
+                                var heightFooter = $node.find('.footer').height();
+
+                                if (!maxh3) {
+                                    maxh3 = heightH3;
+                                } else if (maxh3 < heightH3) {
+                                    maxh3 = heightH3;
+                                }
+
+                                if (!maxMeta) {
+                                    maxMeta = heightMeta;
+                                } else if (maxMeta < heightMeta) {
+                                    maxMeta = heightMeta;
+                                }
+
+                                if (!maxFooter) {
+                                    maxFooter = heightFooter;
+                                } else if (maxFooter < heightFooter) {
+                                    maxFooter = heightFooter;
+                                }
+
+                                $.each(nodesToUpdate, function (index, $node) {
+                                    if (maxh3) {
+                                        $node.find('h3').height(maxh3 + 'px');
+                                    }
+                                    if (maxMeta) {
+                                        $node.find('.metadata').height(maxMeta + 'px');
+                                    }
+                                    if (maxFooter) {
+                                        $node.find('.footer').height(maxFooter + 'px');
+                                    }
+                                });
+                            });
+                        }
+                        syncMaxHeight2('.marketplace .plugin');
+
+                    });
+                };
+            }
+        };
+    }
+})();
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js b/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
similarity index 93%
rename from plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js
rename to plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
index 26c38c6443021f03cb6678e0816e97894448e7fe..aeaacea5b79f6152e4877e0e2c23c37c92c9f190 100644
--- a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js
+++ b/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
@@ -20,7 +20,7 @@
             pluginName = value.substr(0, value.indexOf('!'));
         }
 
-        var url = 'module=CorePluginsAdmin&action=pluginDetails&pluginName=' + encodeURIComponent(pluginName);
+        var url = 'module=Marketplace&action=pluginDetails&pluginName=' + encodeURIComponent(pluginName);
 
         if (activeTab) {
             url += '&activeTab=' + encodeURIComponent(activeTab);
diff --git a/plugins/Marketplace/config/config.php b/plugins/Marketplace/config/config.php
new file mode 100644
index 0000000000000000000000000000000000000000..ffab9b07b4dd0d90461bdcef74b6e357fdc8d23e
--- /dev/null
+++ b/plugins/Marketplace/config/config.php
@@ -0,0 +1,32 @@
+<?php
+
+use Interop\Container\ContainerInterface;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Plugins\Marketplace\LicenseKey;
+
+return array(
+    'MarketplaceEndpoint' => function (ContainerInterface $c) {
+        $domain = 'http://plugins.piwik.org';
+        $updater = $c->get('Piwik\Plugins\CoreUpdater\Updater');
+
+        if ($updater->isUpdatingOverHttps()) {
+            $domain = str_replace('http://', 'https://', $domain);
+        }
+
+        return $domain;
+    },
+    'Piwik\Plugins\Marketplace\Api\Service' => function (ContainerInterface $c) {
+        /** @var \Piwik\Plugins\Marketplace\Api\Service $previous */
+
+        $domain = $c->get('MarketplaceEndpoint');
+
+        $service = new Service($domain);
+
+        $key = new LicenseKey();
+        $accessToken = $key->get();
+
+        $service->authenticate($accessToken);
+
+        return $service;
+    }
+);
\ No newline at end of file
diff --git a/plugins/Marketplace/config/test.php b/plugins/Marketplace/config/test.php
new file mode 100644
index 0000000000000000000000000000000000000000..8c21be15f80dab5c2ded9bebab46e8420f840576
--- /dev/null
+++ b/plugins/Marketplace/config/test.php
@@ -0,0 +1,144 @@
+<?php
+
+use Interop\Container\ContainerInterface;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer as MockConsumer;
+use Piwik\Plugins\Marketplace\LicenseKey;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as MockService;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+
+return array(
+    'MarketplaceEndpoint' => function (ContainerInterface $c) {
+        // if you wonder why this here is configured here again, and the same as in `config.php`,
+        // it is because someone might have overwritten MarketplaceEndpoit in local config.php and we want
+        // to make sure system tests of marketplace are ran against plugins.piwik.org
+        $domain = 'http://plugins.piwik.org';
+        $updater = $c->get('Piwik\Plugins\CoreUpdater\Updater');
+
+        if ($updater->isUpdatingOverHttps()) {
+            $domain = str_replace('http://', 'https://', $domain);
+        }
+
+        return $domain;
+    },
+    'Piwik\Plugins\Marketplace\Consumer' => function (ContainerInterface $c) {
+        $consumerTest = $c->get('test.vars.consumer');
+        $licenseKey = new LicenseKey();
+
+        if ($consumerTest == 'validLicense') {
+            $consumer = MockConsumer::buildValidLicense();
+            $licenseKey->set('123456789');
+        } elseif ($consumerTest == 'exceededLicense') {
+            $consumer = MockConsumer::buildExceededLicense();
+            $licenseKey->set('1234567891');
+        } elseif ($consumerTest == 'expiredLicense') {
+            $consumer = MockConsumer::buildExpiredLicense();
+            $licenseKey->set('1234567892');
+        } else {
+            $consumer = MockConsumer::buildNoLicense();
+            $licenseKey->set(null);
+        }
+
+        return $consumer;
+    },
+    'Piwik\Plugins\Marketplace\Plugins' => DI\decorate(function ($previous, ContainerInterface $c) {
+        /** @var \Piwik\Plugins\Marketplace\Plugins $previous */
+        $previous->setPluginsHavingUpdateCache(null);
+
+        $pluginNames = $c->get('test.vars.mockMarketplaceAssumePluginNamesActivated');
+
+        if (!empty($pluginNames)) {
+            /** @var \Piwik\Plugins\Marketplace\Plugins $previous */
+            $previous->setActivatedPluginNames($pluginNames);
+        }
+
+        return $previous;
+    }),
+    'Piwik\Plugins\Marketplace\Api\Client' => DI\decorate(function ($previous) {
+        /** @var \Piwik\Plugins\Marketplace\Api\Client $previous */
+        $previous->clearAllCacheEntries();
+
+        return $previous;
+    }),
+    'Piwik\Plugins\Marketplace\Plugins\InvalidLicenses' => DI\decorate(function ($previous, ContainerInterface $c) {
+
+        $pluginNames = $c->get('test.vars.mockMarketplaceAssumePluginNamesActivated');
+
+        if (!empty($pluginNames)) {
+            /** @var \Piwik\Plugins\Marketplace\Plugins\InvalidLicenses $previous */
+            $previous->setActivatedPluginNames($pluginNames);
+            $previous->clearCache();
+        }
+
+        return $previous;
+
+    }),
+    'Piwik\Plugins\Marketplace\Api\Service' => DI\decorate(function ($previous, ContainerInterface $c) {
+        if (!$c->get('test.vars.mockMarketplaceApiService')) {
+            return $previous;
+        }
+
+        // for ui tests
+        $service = new MockService();
+
+        $key = new LicenseKey();
+        $accessToken = $key->get();
+
+        $service->authenticate($accessToken);
+
+        function removeReviewsUrl($content)
+        {
+            $content = json_decode($content, true);
+            if (!empty($content['shop']['reviews']['embedUrl'])) {
+                $content['shop']['reviews']['embedUrl'] = '';
+            }
+            return json_encode($content);
+        }
+
+        $isExceededUser = $c->get('test.vars.consumer') === 'exceededLicense';
+        $isExpiredUser = $c->get('test.vars.consumer') === 'expiredLicense';
+        $isValidUser = $c->get('test.vars.consumer') === 'validLicense';
+
+        $service->setOnDownloadCallback(function ($action, $params) use ($service, $isExceededUser, $isValidUser, $isExpiredUser) {
+            if ($action === 'info') {
+                return $service->getFixtureContent('v2.0_info.json');
+            } elseif ($action === 'consumer' && $service->getAccessToken() === 'valid') {
+                return $service->getFixtureContent('v2.0_consumer-access_token-consumer2_paid1.json');
+            } elseif ($action === 'consumer/validate' && $service->getAccessToken() === 'valid') {
+                return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer2_paid1.json');
+            } elseif ($action === 'consumer' && $service->getAccessToken() === 'invalid') {
+                return $service->getFixtureContent('v2.0_consumer-access_token-notexistingtoken.json');
+            } elseif ($action === 'consumer/validate' && $service->getAccessToken() === 'invalid') {
+                return $service->getFixtureContent('v2.0_consumer_validate-access_token-notexistingtoken.json');
+            } elseif ($action === 'plugins' && empty($params['purchase_type']) && empty($params['query'])) {
+                return $service->getFixtureContent('v2.0_plugins.json');
+            } elseif ($action === 'plugins' && $isExceededUser && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json');
+            } elseif ($action === 'plugins' && $isExpiredUser && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json');
+            } elseif ($action === 'plugins' && ($service->hasAccessToken() || $isValidUser) && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json');
+            } elseif ($action === 'plugins' && !$service->hasAccessToken() && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json');
+            } elseif ($action === 'themes' && empty($params['purchase_type']) && empty($params['query'])) {
+                return $service->getFixtureContent('v2.0_themes.json');
+            } elseif ($action === 'plugins/Barometer/info') {
+                return $service->getFixtureContent('v2.0_plugins_Barometer_info.json');
+            } elseif ($action === 'plugins/TreemapVisualization/info') {
+                return $service->getFixtureContent('v2.0_plugins_TreemapVisualization_info.json');
+            } elseif ($action === 'plugins/PaidPlugin1/info' && $service->hasAccessToken() && $isExceededUser) {
+                $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json');
+                return removeReviewsUrl($content);
+            } elseif ($action === 'plugins/PaidPlugin1/info' && $service->hasAccessToken()) {
+                $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json');
+                return removeReviewsUrl($content);
+            } elseif ($action === 'plugins/PaidPlugin1/info' && !$service->hasAccessToken()) {
+                $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info.json');
+                return removeReviewsUrl($content);
+            } elseif ($action === 'plugins/checkUpdates') {
+                return $service->getFixtureContent('v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json');
+            }
+        });
+
+        return $service;
+    })
+);
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/images/rating_important.png b/plugins/Marketplace/images/rating_important.png
similarity index 100%
rename from plugins/CorePluginsAdmin/images/rating_important.png
rename to plugins/Marketplace/images/rating_important.png
diff --git a/plugins/Marketplace/lang/en.json b/plugins/Marketplace/lang/en.json
new file mode 100644
index 0000000000000000000000000000000000000000..1278adf2c2860f490486fed32018f1f4c032b075
--- /dev/null
+++ b/plugins/Marketplace/lang/en.json
@@ -0,0 +1,112 @@
+{
+  "Marketplace": {
+    "ActivateLicenseKey": "Activate",
+    "ActionActivatePlugin": "Activate plugin",
+    "ActionActivateTheme": "Activate theme",
+    "ActionInstall": "Install",
+    "AddToCart": "Add to cart",
+    "AllowedUploadFormats": "You may upload a plugin or theme in .zip format via this page.",
+    "Authors": "Authors",
+    "BackToMarketplace": "Back to Marketplace",
+    "BrowseMarketplace": "Browse Marketplace",
+    "ByXDevelopers": "by %s developers",
+    "CannotInstall": "Cannot install",
+    "CannotUpdate": "Cannot update",
+    "ClickToCompletePurchase": "Click to complete purchase.",
+    "CurrentNumPiwikUsers": "Your Piwik currently has %1$s registered users.",
+    "ConfirmRemoveLicense": "Are you sure you want to remove your license key? You will no longer receive any updates for any of your purchased plugins.",
+    "Developer": "Developer",
+    "DevelopersLearnHowToDevelopPlugins": "Developers: Learn how you can extend and customize Piwik by %1$sdeveloping plugins or themes%2$s.",
+    "Marketplace": "Marketplace",
+    "PaidPlugins": "Premium Features",
+    "FeaturedPlugin": "Featured plugin",
+    "InstallingNewPluginViaMarketplaceOrUpload": "You may automatically install %1$s from the Marketplace or %2$supload a %3$s%4$s in .zip format.",
+    "InstallingPlugin": "Installing %s",
+    "InstallPurchasedPlugins": "Install purchased plugins",
+    "LastCommitTime": "(last commit %s)",
+    "LastUpdated": "Last Updated",
+    "License": "License",
+    "LicenseKey": "License key",
+    "LicenseKeyActivatedSuccess": "License key successfully activated!",
+    "LicenseKeyDeletedSuccess": "License key successfully deleted.",
+    "Exceeded": "Exceeded",
+    "LicenseMissing": "License missing",
+    "LicenseMissingDescription": "You are using the following plugins without a license: %1$s. %2$sTo resolve this issue either update your license key, %3$sget a subscription now%4$s or deactivate the plugin.",
+    "PluginLicenseMissingDescription": "You are not allowed to download this plugin because there is no license for this plugin. To resolve this issue either update your license key, get a subscription or uninstall the plugin.",
+    "LicenseExceeded": "License exceeded",
+    "LicenseExceededDescription": "The licenses for the following plugins are no longer valid as the number of authorized users for the license is exceeded: %1$s. %2$sYou will not be able to download updates for these plugins. To resolve this issue either delete some users or %3$supgrade the subscription now%4$s.",
+    "PluginLicenseExceededDescription": "You are not allowed to download this plugin. The license for this plugin is no longer valid as the number of authorized users for the license is exceeded. To resolve this issue either delete some users or upgrade your subscription now.",
+    "LicenseExpired": "License expired",
+    "LicenseExpiredDescription": "The licenses for the following plugins are expired: %1$s. %2$sYou will no longer receive any updates for these plugins. To resolve this issue either %3$srenew your subscription now%4$s, or deactivate the plugin if you no longer use it.",
+    "LicenseRenewsNextPaymentDate": "Renews at next payment date",
+    "UpgradeSubscription": "Upgrade Subscription",
+    "ViewSubscriptionsSummary": "%1$sView your plugin subscriptions.%2$s",
+    "ViewSubscriptions": "View subscriptions",
+    "ExceptionLinceseKeyIsExpired": "This license key is expired.",
+    "ExceptionLinceseKeyIsNotValid": "This license key is not valid.",
+    "LicenseKeyIsValidShort": "License key is valid!",
+    "RemoveLicenseKey": "Remove license key",
+    "InstallAllPurchasedPlugins": "Install all purchased plugins at once",
+    "InstallAllPurchasedPluginsAction": "Install and activate %d purchased plugins",
+    "InstallThesePlugins": "This will install and activate the following plugins:",
+    "AllPaidPluginsInstalledAndActivated": "All paid plugins were successfully installed and activated.",
+    "OnlySomePaidPluginsInstalledAndActivated": "Some paid plugins were not installed successfully.",
+    "NewVersion": "new version",
+    "NotAllowedToBrowseMarketplacePlugins": "You can browse the list of plugins that can be installed to customize or extend your Piwik platform. Please contact your administrator if you need any of these installed.",
+    "NotAllowedToBrowseMarketplaceThemes": "You can browse the list of themes that can be installed to customize the appearance of the Piwik platform. Please contact your administrator to get any of these installed for you.",
+    "NoPluginsFound": "No plugins found",
+    "NoThemesFound": "No themes found",
+    "NoSubscriptionsFound": "No subscriptions found",
+    "NumDownloadsLatestVersion": "Latest version: %s Downloads",
+    "OverviewPluginSubscriptions": "Overview of your plugin subscriptions",
+    "OverviewPluginSubscriptionsMissingLicense": "You do not have a license key set. If you have purchased a plugin subscription, go to the %1$sMarketplace%2$s and enter your license key.",
+    "OverviewPluginSubscriptionsAllDetails": "To see all details, or to change a subscription, log into your account.",
+    "OverviewPluginSubscriptionsMissingInfo": "It may be possible that a subscription is missing, for example if a payment is not through yet. In such a case try again in a few hours, or contact the Piwik team.",
+    "NoValidSubscriptionNoUpdates": "Once a subscription is expired you will no longer receive any updates for this plugin.",
+    "PluginSubscriptionsList": "This is a list of subscriptions associated with your license key.",
+    "PaidPluginsNoLicenseKeyIntro": "If you have purchased a %1$spremium paid plugin%2$s, please insert the received licence key below.",
+    "PaidPluginsWithLicenseKeyIntro": "A valid license key has been set up. For security reasons we do not show the license key here. If you have lost your license key please contact the Piwik team.",
+    "PaidPluginsNoLicenseKeyIntroNoSuperUserAccess": "In case you have purchased a %1$spremium paid plugin%2$s on the Marketplace please ask a user with Super User access to add the license key.",
+    "PluginDescription": "Extend and expand the functionality of Piwik via the Marketplace by downloading plugins and themes.",
+    "PluginKeywords": "Keywords",
+    "PluginUpdateAvailable": "You are using version %1$s and a new version %2$s is available.",
+    "PluginVersionInfo": "%1$s from %2$s",
+    "PluginWebsite": "Plugin Website",
+    "PriceExclTax": "%1$s %2$s excl. tax.",
+    "PriceFromPerPeriod": "From %1$s / %2$s",
+    "Reviews": "Reviews",
+    "ShownPriceIsExclTax": "Shown price is excl. tax.",
+    "Screenshots": "Screenshots",
+    "SortByNewest": "Newest",
+    "SortByAlpha": "Alpha",
+    "SortByLastUpdated": "Last updated",
+    "SortByPopular": "Popular",
+    "StepDownloadingPluginFromMarketplace": "Downloading plugin from Marketplace",
+    "StepDownloadingThemeFromMarketplace": "Downloading theme from Marketplace",
+    "StepUnzippingPlugin": "Unzipping plugin",
+    "StepUnzippingTheme": "Unzipping theme",
+    "StepThemeSuccessfullyInstalled": "You have successfully installed the theme %1$s %2$s.",
+    "StepPluginSuccessfullyInstalled": "You have successfully installed the plugin %1$s %2$s.",
+    "StepPluginSuccessfullyUpdated": "You have successfully updated the plugin %1$s %2$s.",
+    "StepReplaceExistingPlugin": "Replacing existing plugin",
+    "StepReplaceExistingTheme": "Replacing existing theme",
+    "StepThemeSuccessfullyUpdated": "You have successfully updated the theme %1$s %2$s.",
+    "SubscriptionType": "Type",
+    "SubscriptionStartDate": "Start date",
+    "SubscriptionEndDate": "End date",
+    "SubscriptionNextPaymentDate": "Next payment date",
+    "SubscriptionInvalid": "This subscription is invalid or expired",
+    "SubscriptionExpiresSoon": "This subscription expires soon",
+    "Support": "Support",
+    "TeaserExtendPiwikByUpload": "Extend Piwik by uploading a ZIP file",
+    "LicenseExceededPossibleCause": "The license is exceeded. There are possibly more users on this Piwik installation than the subscription authorizes.",
+    "Updated": "Updated",
+    "UpdatingPlugin": "Updating %1$s",
+    "UploadZipFile": "Upload ZIP file",
+    "LicenseKeyExpiresSoon": "Your license key expires soon, please contact %1$s.",
+    "LicenseKeyIsExpired": "Your license key is expired, please contact %1$s.",
+    "MultiServerEnvironmentWarning": "You cannot install or update the plugin directly as you are using Piwik on multiple servers. The plugin would be only installed on one server. Instead download the plugin and deploy it manually to all your servers.",
+    "AutoUpdateDisabledWarning": "You cannot install or update the plugin directly as automatic updates are disabled in the config. To enable automatic updates set %1$s in %2$s.",
+    "ViewRepositoryChangelog": "View the changes"
+  }
+}
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less b/plugins/Marketplace/stylesheets/marketplace-widget.less
similarity index 100%
rename from plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less
rename to plugins/Marketplace/stylesheets/marketplace-widget.less
diff --git a/plugins/CorePluginsAdmin/stylesheets/marketplace.less b/plugins/Marketplace/stylesheets/marketplace.less
similarity index 61%
rename from plugins/CorePluginsAdmin/stylesheets/marketplace.less
rename to plugins/Marketplace/stylesheets/marketplace.less
index 3c1371ffb837fbd274ec22f78650645d3d52c5a3..2a4115e60ff0d511aaaa65431b112096baaef01f 100644
--- a/plugins/CorePluginsAdmin/stylesheets/marketplace.less
+++ b/plugins/Marketplace/stylesheets/marketplace.less
@@ -1,8 +1,63 @@
+.subscriptionOverview {
+    .icon-error, .errorMessage {
+        color: #D4291F;
+    }
+
+    .icon-ok {
+        color: #009874;
+    }
+
+    .icon-warning {
+        color: #CA8100;
+    }
+    .subscriptionName,
+    .subscriptionType,
+    .subscriptionStatus {
+        white-space: nowrap;
+    }
+}
+
+.marketplace-paid-intro {
+    .licenseKeyText {
+        min-width: 210px;
+        .form-group {
+            margin-top: 0;
+        }
+    }
+
+    .licenseToolbar {
+        > a, > div:not(.licenseKeyText) {
+            margin-right: 16px;
+            white-space: nowrap;
+        }
+    }
+
+}
+
+#installAllPaidPluginsAtOnce {
+  ul {
+      li {
+          list-style-type: disc;
+          list-style-position: inside;
+          margin-top: 8px;
+      }
+  }
+
+  a.btn {
+      color: #fff;
+  }
+}
+
 .marketplace {
-    > .row {
+    .marketplaceActions.row,
+    .pluginListContainer.row {
         margin: 0 -0.75rem;
     }
 
+    input.btn[disabled] {
+        background-color: @theme-color-brand !important;
+    }
+
     .marketplaceActions {
         margin-bottom: 0;
     }
@@ -22,7 +77,7 @@
 
     .plugin {
         h3 {
-            word-break: break-all;
+            word-wrap: break-word;
         }
         text-align: center;
         .description {
@@ -40,6 +95,12 @@
             max-width: 250px;
             width: 100%;
         }
+        .footer {
+            .download.plugin-details {
+                padding-left: 0;
+                padding-right: 0;
+            }
+        }
         .metadata {
             color: @color-silver-l50;
             font-size: 95%;
@@ -70,15 +131,24 @@
         }
         .footer {
             padding: 12px 40px;
+
+            .btn-link.plugin-details {
+                padding-left: 0;
+                padding-right: 0;
+            }
+
+            .purchaseable {
+                background-color: #1e93d1;
+            }
         }
     }
 
     .footer-message {
         margin-top:30px;
-        font-style: italic;
     }
 }
 
+
 #installPluginByUpload {
     .description {
         margin-top: 30px;
@@ -88,4 +158,4 @@
         margin-top: 20px;
         margin-bottom: 20px;
     }
-}
+}
\ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/stylesheets/plugin-details.less b/plugins/Marketplace/stylesheets/plugin-details.less
similarity index 54%
rename from plugins/CorePluginsAdmin/stylesheets/plugin-details.less
rename to plugins/Marketplace/stylesheets/plugin-details.less
index 1dee1eb2249de90cee60866c59850a53459e6419..445dcc7d217b6cb419a803dd91add904bfc76823 100644
--- a/plugins/CorePluginsAdmin/stylesheets/plugin-details.less
+++ b/plugins/Marketplace/stylesheets/plugin-details.less
@@ -3,45 +3,44 @@
     text-align: left;
     line-height: 20px;
 
-    .header {
-        .intro {
-            width:75%;
-            float:left;
-            margin-bottom: 8px;
-        }
-        .actionButton {
-            width:25%;
-            float:left;
-        }
+    > .row > .col {
+        padding-left: 0;
+        padding-right: 0;
     }
 
     #pluginDetailsTabs > .col {
         padding: 0 16px 0 0;
     }
 
-    .content {
-        .contentDetails {
-            width:75%;
-            float:left;
-        }
-        .metadata {
-            width:25%;
-            float:left;
-            padding-top: 16px;
-        }
-    }
-
     h3, h4, h5, h6 {
-        margin: 20px 0px 10px 0px;
+        margin: 20px 0 10px 0;
         color: #000000;
     }
 
-    p {
+    iframe{
+        width:100%;
+        border: 0;
+        background-image: url('plugins/Morpheus/images/loading-blue.gif');
+        background-repeat: no-repeat;
+        background-position: center;
+    }
+
+    .tab-content ul, .tab-content ol {
+        list-style: initial;
+        padding-left: 20px;
+    }
+
+    p, .tab-content ul, .tab-content li {
         text-align: left;
         line-height: 20px;
+        list-style: initial;
+    }
+
+    #pluginDetailsTabs {
+        margin-top: 25px;
     }
 
-    .content p {
+    .contentDetails p {
         margin: 0 0 10px;
     }
 
@@ -49,6 +48,20 @@
         padding-right: 25px;
     }
 
+    .variationPicker {
+        margin-top: 0;
+        margin-bottom: 15px;
+        input.select-dropdown {
+            font-size: 15px;
+        }
+    }
+
+    .contentDetails a {
+        color: @theme-color-link;
+        text-decoration: none;
+    }
+
+    .download,
     .install {
         padding: 11px 19px;
         font-size: 17.5px;
@@ -61,6 +74,7 @@
         text-decoration: none;
     }
 
+    .download:hover,
     .install:hover {
         text-decoration: underline;
     }
diff --git a/plugins/CorePluginsAdmin/templates/getNewPlugins.twig b/plugins/Marketplace/templates/getNewPlugins.twig
similarity index 100%
rename from plugins/CorePluginsAdmin/templates/getNewPlugins.twig
rename to plugins/Marketplace/templates/getNewPlugins.twig
diff --git a/plugins/CorePluginsAdmin/templates/getNewPluginsAdmin.twig b/plugins/Marketplace/templates/getNewPluginsAdmin.twig
similarity index 100%
rename from plugins/CorePluginsAdmin/templates/getNewPluginsAdmin.twig
rename to plugins/Marketplace/templates/getNewPluginsAdmin.twig
diff --git a/plugins/Marketplace/templates/installPlugin.twig b/plugins/Marketplace/templates/installPlugin.twig
new file mode 100644
index 0000000000000000000000000000000000000000..7182ed9d164552acf0c8c9e37874f0ccff50f65e
--- /dev/null
+++ b/plugins/Marketplace/templates/installPlugin.twig
@@ -0,0 +1,41 @@
+{% extends 'admin.twig' %}
+
+{% block content %}
+
+    <div style="max-width:980px;">
+
+        <h2>{{ 'Marketplace_InstallingPlugin'|translate(plugin.name) }}</h2>
+
+        <div>
+
+            {% if plugin.isTheme %}
+
+                <p>{{ 'Marketplace_StepDownloadingThemeFromMarketplace'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+                <p><strong><a class="btn" href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce, 'redirectTo': 'marketplace'}) }}">{{ 'Marketplace_ActionActivateTheme'|translate }}</a></strong>
+
+                    |
+                    <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': 'themes'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a></p>
+
+            {% else %}
+
+                <p>{{ 'Marketplace_StepDownloadingPluginFromMarketplace'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+                <p><strong><a class="btn" href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce, 'redirectTo': 'marketplace'}) }}">{{ 'Marketplace_ActionActivatePlugin'|translate }}</a></strong>
+
+                    |
+                    <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': ''}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a></p>
+
+            {% endif %}
+        </div>
+    </div>
+
+{% endblock %}
diff --git a/plugins/Marketplace/templates/licenseform.twig b/plugins/Marketplace/templates/licenseform.twig
new file mode 100644
index 0000000000000000000000000000000000000000..c43a4fd4df41e4e94df316edd948e1861459883e
--- /dev/null
+++ b/plugins/Marketplace/templates/licenseform.twig
@@ -0,0 +1,75 @@
+{% set defaultLicenseKeyFields %}
+        <div piwik-field uicontrol="text" name="license_key"
+             class="valign licenseKeyText"
+             full-width="true"
+             ng-model="licenseController.licenseKey"
+             ng-change="licenseController.updatedLicenseKey()"
+             placeholder="{% if isValidConsumer %}{{ 'Marketplace_LicenseKeyIsValidShort'|translate }}{% else %}{{ 'Marketplace_LicenseKey'|translate|e('html_attr') }}{% endif %}">
+        </div>
+        <div piwik-save-button
+             class="valign"
+             onconfirm="licenseController.updateLicense()"
+             disabled="!licenseController.enableUpdate"
+             value="{% if hasLicenseKey %}{{ 'CoreUpdater_UpdateTitle'|translate|e('html_attr') }}{% else %}{{ 'Marketplace_ActivateLicenseKey'|translate|e('html_attr') }}{% endif %}"
+             id="submit_license_key"></div>
+{% endset %}
+
+<div class="marketplace-max-width" ng-controller="PiwikMarketplaceLicenseController as licenseController">
+    <div class="marketplace-paid-intro">
+    {% if isValidConsumer %}
+        {% if isSuperUser %}
+            {{ 'Marketplace_PaidPluginsWithLicenseKeyIntro'|translate('')|raw }}
+            <br/>
+
+            <div class="licenseToolbar valign-wrapper">
+                {{ defaultLicenseKeyFields|raw }}
+
+                <div piwik-save-button
+                     class="valign"
+                     id="remove_license_key"
+                     onconfirm="licenseController.removeLicense()"
+                     value="{{ 'Marketplace_RemoveLicenseKey'|translate|e('html_attr') }}"
+                ></div>
+
+                <a href="{{ linkTo({'action': 'subscriptionOverview'}) }}" class="btn valign">
+                    {{ 'Marketplace_ViewSubscriptions'|translate }}
+                </a>
+
+                {% if isAutoUpdatePossible and isPluginsAdminEnabled and paidPluginsToInstallAtOnce|length %}
+                    <a href="javascript:;" class="btn installAllPaidPlugins valign">
+                        {{ 'Marketplace_InstallPurchasedPlugins'|translate }}
+                    </a>
+                    {% include '@Marketplace/paid-plugins-install-list.twig' %}
+                {% endif %}
+
+            </div>
+
+            <div piwik-activity-indicator loading="licenseController.isUpdating"></div>
+        {% endif %}
+
+    {% else %}
+        {% if isSuperUser %}
+            {{ 'Marketplace_PaidPluginsNoLicenseKeyIntro'|translate("<a target='_blank' href='?module=Proxy&action=redirect&url=https://plugins.piwik.org/premium'>", "</a>")|raw }}
+
+            <br/>
+
+            <div class="licenseToolbar valign-wrapper">
+                {{ defaultLicenseKeyFields|raw }}
+            </div>
+
+            <div piwik-activity-indicator loading="licenseController.isUpdating"></div>
+
+        {% else %}
+            {{ 'Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess'|translate("<a target='_blank' href='?module=Proxy&action=redirect&url=https://plugins.piwik.org/premium'>", "</a>")|raw }}
+        {% endif %}
+
+    {% endif %}
+    </div>
+</div>
+
+
+<div class="ui-confirm" id="confirmRemoveLicense">
+    <h2>{{ 'Marketplace_ConfirmRemoveLicense'|translate }}</h2>
+    <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
+    <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
+</div>
diff --git a/plugins/Marketplace/templates/macros.twig b/plugins/Marketplace/templates/macros.twig
new file mode 100644
index 0000000000000000000000000000000000000000..50aa06af8db600544e3d26f49ebb323c175cc88d
--- /dev/null
+++ b/plugins/Marketplace/templates/macros.twig
@@ -0,0 +1,25 @@
+
+{% macro pluginDeveloper(owner) %}
+    {% if 'piwik' == owner %}<img title="Piwik" alt="Piwik" style="padding-bottom:2px;height:11px;" src="plugins/Morpheus/images/logo-marketplace.png"/>{% else %}{{ owner }}{% endif %}
+{% endmacro %}
+
+{% macro featuredIcon(align='') %}
+    <img class="featuredIcon"
+         title="{{ 'Marketplace_FeaturedPlugin'|translate }}"
+         src="plugins/Marketplace/images/rating_important.png"
+         align="{{ align }}" />
+{% endmacro %}
+
+{% macro missingRequirementsPleaseUpdateNotice(plugin) %}
+    {% if plugin.missingRequirements and 0 < plugin.missingRequirements|length %}
+        {% for req in plugin.missingRequirements -%}
+            <div class="alert alert-danger">
+                {% set requirement = req.requirement|capitalize %}
+                {% if 'Php' == requirement %}
+                    {% set requirement = 'PHP' %}
+                {% endif %}
+                {{ 'CorePluginsAdmin_MissingRequirementsNotice'|translate(requirement, req.actualVersion, req.requiredVersion) }}
+            </div>
+        {%- endfor %}
+    {% endif %}
+{% endmacro %}
diff --git a/plugins/CorePluginsAdmin/templates/marketplace.twig b/plugins/Marketplace/templates/overview.twig
similarity index 54%
rename from plugins/CorePluginsAdmin/templates/marketplace.twig
rename to plugins/Marketplace/templates/overview.twig
index 61f46f8cd219d978c17c58db91823d33fb049f9d..9541ab0a168a79b5c7e9c63ee03aa249c5c9a809 100644
--- a/plugins/CorePluginsAdmin/templates/marketplace.twig
+++ b/plugins/Marketplace/templates/overview.twig
@@ -1,7 +1,7 @@
 {% extends "admin.twig" %}
 {% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
 
-{% set title %}{{ 'CorePluginsAdmin_Marketplace'|translate }}{% endset %}
+{% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
 
 {% block content %}
 
@@ -9,48 +9,41 @@
 
         <div piwik-content-intro>
             <h2 piwik-enriched-headline feature-name="{{ 'CorePluginsAdmin_Marketplace'|translate }}"
-                >{{ title|e('html_attr') }}</h2>
+            >{{ title|e('html_attr') }}</h2>
             <p>
-                {% if showThemes %}
+                {% if not isSuperUser %}
+                    {% if showThemes %}
+                        {{ 'Marketplace_NotAllowedToBrowseMarketplaceThemes'|translate }}
+                    {% else %}
+                        {{ 'Marketplace_NotAllowedToBrowseMarketplacePlugins'|translate }}
+                    {% endif %}
+                {% elseif showThemes %}
                     {{ 'CorePluginsAdmin_ThemesDescription'|translate }}
-                    {{ 'CorePluginsAdmin_InstallingNewPluginViaMarketplaceOrUpload'|translate('<a href="#" class="uploadPlugin">','</a>')|raw }}
-                    <br/>
-                    {{ 'CorePluginsAdmin_BeCarefulUsingThemes'|translate }}
+                    {{ 'Marketplace_InstallingNewPluginViaMarketplaceOrUpload'|translate(('CorePluginsAdmin_Themes'|translate), '<a href="#" class="uploadPlugin">', ('CorePluginsAdmin_Theme'|translate), '</a>')|raw }}
                 {% else %}
                     {{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
-                    {{ 'CorePluginsAdmin_InstallingNewPluginViaMarketplaceOrUpload'|translate('<a href="#" class="uploadPlugin">','</a>')|raw }}
-                    <br/>
-                    {{ 'CorePluginsAdmin_BeCarefulUsingPlugins'|translate }}
+                    {{ 'Marketplace_InstallingNewPluginViaMarketplaceOrUpload'|translate(('General_Plugins'|translate), '<a href="#" class="uploadPlugin">', ('General_Plugin'|translate), '</a>')|raw }}
                 {% endif %}
             </p>
 
-            {% if not isSuperUser %}
-                <p>
-                    {% if showThemes %}
-                        {{ 'CorePluginsAdmin_NotAllowedToBrowseMarketplaceThemes'|translate }}
-                    {% else %}
-                        {{ 'CorePluginsAdmin_NotAllowedToBrowseMarketplacePlugins'|translate }}
-                    {% endif %}
-                </p>
-            {% endif %}
-
+            {% include '@Marketplace/licenseform.twig' %}
 
             <div class="ui-confirm" id="installPluginByUpload">
-                <h2>{{ 'CorePluginsAdmin_TeaserExtendPiwikByUpload'|translate }}</h2>
+                <h2>{{ 'Marketplace_TeaserExtendPiwikByUpload'|translate }}</h2>
 
-                <p class="description"> {{ 'CorePluginsAdmin_AllowedUploadFormats'|translate }} </p>
+                <p class="description"> {{ 'Marketplace_AllowedUploadFormats'|translate }} </p>
 
                 <form enctype="multipart/form-data" method="post" id="uploadPluginForm"
-                      action="{{ linkTo({'action':'uploadPlugin', 'nonce': installNonce}) }}">
+                      action="{{ linkTo({'module':'CorePluginsAdmin', 'action':'uploadPlugin', 'nonce': installNonce}) }}">
                     <input type="file" name="pluginZip">
                     <br />
-                    <input class="startUpload btn" type="submit" value="{{ 'CorePluginsAdmin_UploadZipFile'|translate }}">
+                    <input class="startUpload btn" type="submit" value="{{ 'Marketplace_UploadZipFile'|translate }}">
                 </form>
             </div>
 
             <div class="row marketplaceActions" ng-controller="PiwikMarketplaceController as marketplace">
                 <div piwik-field uicontrol="select" name="plugin_type"
-                     class="col s12 m4"
+                     class="col s12 m6 l4"
                      ng-model="marketplace.pluginType"
                      ng-change="marketplace.changePluginType()"
                      title="{{ 'Show'|translate|e('html_attr') }}"
@@ -64,17 +57,17 @@
                      value="{{ sort }}"
                      ng-model="marketplace.pluginSort"
                      ng-change="marketplace.changePluginSort()"
-                     class="col s12 m4"
+                     class="col s12 m6 l4"
                      full-width="true"
                      options="{{ pluginSortOptions|json_encode }}">
                 </div>
 
                 {# Hide filters and search for themes because we don't have many of them #}
-                {% if not showThemes %}
-                    <div class="col s12 m4 ">
+                {% if (pluginsToShow|length) > 20 or query %}
+                    <div class="col s12 m12 l4 ">
                         <form action="{{ linkTo({'sort': ''}) }}" method="post" class="plugin-search">
                             <div piwik-field uicontrol="text" name="query"
-                                 title="{{ 'General_Search'|translate }} {{ plugins|length }} {{ 'General_Plugins'|translate|lcfirst }}..."
+                                 title="{{ 'General_Search'|translate }} {{ numAvailablePlugins }} {{ 'General_Plugins'|translate|lcfirst }}..."
                                  value="{{ query }}"
                                  full-width="true">
                             </div>
@@ -85,15 +78,19 @@
             </div>
         </div>
 
-        {% include '@CorePluginsAdmin/marketplace/plugin-list.twig' %}
-
-        <div class="footer-message">
-            {% set marketplaceSellPluginSubject = 'CorePluginsAdmin_MarketplaceSellPluginSubject'|translate %}
-            {{ 'CorePluginsAdmin_GetEarlyAccessForPaidPlugins'|translate("<a href='mailto:hello@piwik.org?subject=" ~ marketplaceSellPluginSubject ~ "'>", "</a>")|raw }}
-            <br/>
-            {{ 'CorePluginsAdmin_DevelopersLearnHowToDevelopPlugins'|translate('<a href="?module=Proxy&action=redirect&url=http://developer.piwik.org/plugins" target="_blank">', '</a>')|raw }}
+        {% include '@Marketplace/plugin-list.twig' %}
+
+        <div class="footer-message center">
+            {{ 'Marketplace_DevelopersLearnHowToDevelopPlugins'|translate('<a href="?module=Proxy&action=redirect&url=http://developer.piwik.org/develop" target="_blank">', '</a>')|raw }}
+            <br />
+            <br />
+            <br />
+            <a rel="noreferrer" href="https://shop.piwik.org/faq/" target="_blank">FAQ</a> |
+            <a rel="noreferrer" href="https://shop.piwik.org/terms-conditions/" target="_blank">Terms</a> |
+            <a rel="noreferrer" href="https://piwik.org/privacy-policy/" target="_blank">Privacy</a> |
+            <a rel="noreferrer" href="https://piwik.org/contact/" target="_blank">Contact</a>
         </div>
 
     </div>
 
-{% endblock %}
+{% endblock %}
\ No newline at end of file
diff --git a/plugins/Marketplace/templates/paid-plugins-install-list.twig b/plugins/Marketplace/templates/paid-plugins-install-list.twig
new file mode 100644
index 0000000000000000000000000000000000000000..9a322245d72ae53471cd73501ffa066a5cadafb7
--- /dev/null
+++ b/plugins/Marketplace/templates/paid-plugins-install-list.twig
@@ -0,0 +1,22 @@
+<div class="ui-confirm" id="installAllPaidPluginsAtOnce">
+    <h2>{{ 'Marketplace_InstallAllPurchasedPlugins'|translate }}</h2>
+    <p>
+        {{ 'Marketplace_InstallThesePlugins'|translate }}
+        <br /><br />
+    </p>
+    <ul>
+        {% for pluginName in paidPluginsToInstallAtOnce %}
+            <li>{{ pluginName }}</li>
+        {% endfor %}
+    </ul>
+
+    <p>
+        <a href="{{ linkTo({'action': 'installAllPaidPlugins', 'nonce': installNonce}) }}" class="btn">
+            {{ 'Marketplace_InstallAllPurchasedPluginsAction'|translate(paidPluginsToInstallAtOnce|length) }}
+        </a>
+
+        <a href="{{ linkTo({'rand': random(999999)}) }}" class="btn-flat">
+            Cancel
+        </a>
+    </p>
+</div>
\ No newline at end of file
diff --git a/plugins/Marketplace/templates/plugin-details.twig b/plugins/Marketplace/templates/plugin-details.twig
new file mode 100644
index 0000000000000000000000000000000000000000..bed0a19d14fde04cf95b1d57cab6175331489efb
--- /dev/null
+++ b/plugins/Marketplace/templates/plugin-details.twig
@@ -0,0 +1,361 @@
+{% import '@Marketplace/macros.twig' as marketplaceMacro %}
+
+{% block content %}
+
+    <div class="pluginDetails">
+        {% if errorMessage %}
+            {{ errorMessage }}
+        {% elseif plugin %}
+
+            {% if plugin.versions is not empty and plugin.versions[plugin.versions|length - 1] %}
+                {% set latestVersion = plugin.versions[plugin.versions|length - 1] %}
+            {% else %}
+                {% set latestVersion = '' %}
+            {% endif %}
+
+            {% set hasChangelog = plugin.isDownloadable and ((latestVersion and latestVersion.readmeHtml.changelog) or plugin.versions|length > 1) %}
+
+            <div class="row">
+                <div class="col s12 m9">
+                    <h2>{{ plugin.displayName }}</h2>
+                    <p class="description">
+                        {% if plugin.featured %}
+                            {{ marketplaceMacro.featuredIcon('left') }}
+                        {% endif %}
+                        {{ plugin.description }}
+                    </p>
+                    <div class="contentDetails">
+                        <div id="pluginDetailsTabs" class="row">
+                            <div class="col s12">
+                                <ul class="tabs">
+                                    <li class="tab col s3"><a href="#tabs-description">{{ 'General_Description'|translate }}</a></li>
+
+                                    {% if latestVersion.readmeHtml.faq %}
+                                        <li class="tab col s3"><a href="#tabs-faq">{{ 'General_Faq'|translate }}</a></li>
+                                    {% endif %}
+
+                                    {% if latestVersion.readmeHtml.documentation %}
+                                        <li class="tab col s3"><a href="#tabs-documentation">{{ 'General_Documentation'|translate }}</a></li>
+                                    {% endif %}
+
+                                    {% if hasChangelog %}
+                                        <li class="tab col s3"><a href="#tabs-changelog">{{ 'CorePluginsAdmin_Changelog'|translate }}</a></li>
+                                    {% endif %}
+
+                                    {% if plugin.screenshots|length %}
+                                        <li class="tab col s3"><a href="#tabs-screenshots">{{ 'Marketplace_Screenshots'|translate }}</a></li>
+                                    {% endif %}
+
+                                    {% if plugin.support is not empty %}
+                                        <li class="tab col s3"><a href="#tabs-support">{{ 'Marketplace_Support'|translate }}</a></li>
+                                    {% endif %}
+
+                                    {% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
+                                        <li class="tab col s3"><a href="#tabs-reviews">{{ 'Marketplace_Reviews'|translate }}</a></li>
+                                    {% endif %}
+                                </ul>
+                            </div>
+
+                            <div id="tabs-description" class="tab-content col s12">
+                                {% if isSuperUser and (plugin.isDownloadable or plugin.isInstalled) %}
+                                    {{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
+
+                                    {% if isMultiServerEnvironment %}
+                                        <div class="alert alert-warning">{{ 'Marketplace_MultiServerEnvironmentWarning'|translate }}</div>
+                                    {% elseif not isAutoUpdateEnabled %}
+                                        <div class="alert alert-warning">{{ 'Marketplace_AutoUpdateDisabledWarning'|translate("'[General]enable_auto_updates=1'", "'config/config.ini.php'") }}</div>
+                                    {% endif %}
+                                {% endif %}
+
+                                {% if hasSomeAdminAccess and plugin.isMissingLicense is defined and plugin.isMissingLicense %}
+                                    <div class="alert alert-danger">{{ 'Marketplace_PluginLicenseMissingDescription'|translate }}</div>
+                                {% elseif hasSomeAdminAccess and plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
+                                    <div class="alert alert-warning">{{ 'Marketplace_PluginLicenseExceededDescription'|translate }}</div>
+                                {% endif %}
+
+                                {{ latestVersion.readmeHtml.description|raw }}
+                            </div>
+
+                            {% if latestVersion.readmeHtml.faq %}
+                                <div id="tabs-faq" class="tab-content col s12">
+                                    {{ latestVersion.readmeHtml.faq|raw }}
+                                </div>
+                            {% endif %}
+
+                            {% if latestVersion.readmeHtml.documentation %}
+                                <div id="tabs-documentation" class="tab-content col s12">
+                                    {{ latestVersion.readmeHtml.documentation|raw }}
+                                </div>
+                            {% endif %}
+
+                            {% if hasChangelog %}
+                                <div id="tabs-changelog" class="tab-content col s12">
+                                    {{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
+                                    {% if plugin.canBeUpdated %}
+                                        <div class="alert alert-warning">
+                                            {{ 'Marketplace_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}
+                                            {% if plugin.repositoryChangelogUrl %}<a rel="noreferrer"  target="_blank" href="{{ plugin.repositoryChangelogUrl }}">{{ 'Marketplace_ViewRepositoryChangelog'|translate }}</a>{% endif %}
+                                        </div>
+                                    {% endif %}
+
+                                    {% if latestVersion.readmeHtml.changelog %}
+                                        {{ latestVersion.readmeHtml.changelog|raw }}
+                                    {% endif %}
+
+                                    <h3>{{ 'CorePluginsAdmin_History'|translate }}</h3>
+
+                                    <ul>
+                                        {% for version in plugin.versions|reverse %}
+                                            <li>
+                                                {% set versionName %}
+                                                    <strong>
+                                                        {% if version.repositoryChangelogUrl %}
+                                                            <a target="_blank" title="{{ 'CorePluginsAdmin_Changelog'|translate }}" href="{{ version.repositoryChangelogUrl }}">{{ version.name }}</a>
+                                                        {% else %}
+                                                            {{ version.name }}
+                                                        {% endif %}
+                                                    </strong>
+                                                {% endset %}
+                                                {{ 'Marketplace_PluginVersionInfo'|translate(versionName, version.release)|raw }}
+                                            </li>
+                                        {% endfor %}
+                                    </ul>
+                                </div>
+                            {% endif %}
+
+                            {% if plugin.screenshots|length %}
+                                <div id="tabs-screenshots" class="tab-content col s12">
+                                    <div class="thumbnails">
+                                        {% for screenshot in plugin.screenshots %}
+                                            <div class="thumbnail">
+                                                <a href="{{ screenshot }}" target="_blank"><img src="{{ screenshot }}?w=400" width="400" alt=""></a>
+                                                <p>
+                                                    {{ screenshot|split('/')|last|replace({'_': ' ', '.png': '', '.jpg': '', '.jpeg': ''}) }}
+                                                </p>
+                                            </div>
+                                        {% endfor %}
+                                    </div>
+                                </div>
+                            {% endif %}
+
+                            {% if plugin.support is not empty %}
+                                <div id="tabs-support" class="tab-content col s12">
+                                    <ul>
+                                        {% for entry in plugin.support %}
+                                            {% if entry.name and entry.value %}
+                                                <li>
+                                                    {{ entry.name }}: {{ entry.value }}
+                                                </li>
+                                            {% endif %}
+                                        {% endfor %}
+                                    </ul>
+                                </div>
+                            {% endif %}
+
+                            {% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
+                                <div id="tabs-reviews" class="tab-content col s12">
+                                    <iframe class="reviewIframe"
+                                            style="{% if plugin.shop.reviews.height %}height:{{ plugin.shop.reviews.height }}px;{% endif %}"
+                                            id="{{ plugin.shop.reviews.embedUrl|md5 }}"
+                                            src="{{ plugin.shop.reviews.embedUrl|raw }}"></iframe>
+                                </div>
+                            {% endif %}
+                        </div>
+                    </div>
+                </div>
+                <div class="col s12 m3">
+                    <div class="metadata">
+                        <div class="actionButton">
+                            {% if not plugin.isDownloadable or not isSuperUser %}
+                                {% if hasSomeAdminAccess and plugin.hasExceededLicense is defined and plugin.hasExceededLicense and plugin.consumer %}
+                                    {% if plugin.consumer.loginUrl is defined and plugin.consumer.loginUrl %}
+                                        <a class="install update"
+                                           target="_blank"
+                                           rel="noreferrer"
+                                           href="{{ plugin.consumer.loginUrl|default('')|e('html_attr') }}"
+                                        >{{ 'Marketplace_UpgradeSubscription'|translate }}</a>
+                                    {% endif %}
+
+                                {% elseif not plugin.isDownloadable and plugin.isPaid and plugin.shop is defined and plugin.shop %}
+
+                                    {% if plugin.shop.variations|length %}
+
+                                        <div class="input-field variationPicker">
+                                            <select title="{{ 'Marketplace_ShownPriceIsExclTax'|translate|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}">
+                                                {% for variation in plugin.shop.variations %}
+                                                    <option value="{{ variation.addToCartUrl }}"
+                                                            title="{{ 'Marketplace_PriceExclTax'|translate(variation.price, variation.currency)|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}"
+                                                            {% if variation.recommended is defined and variation.recommended %}selected{% endif %}
+                                                    >{{ variation.name }} - {{ variation.prettyPrice }} / {{ variation.period }}</option>
+                                                {% endfor %}
+                                            </select>
+                                        </div>
+
+                                        <a class="install update addToCartLink" target="_blank"
+                                           title="{{ 'Marketplace_ClickToCompletePurchase'|translate|e('html_attr') }}"
+                                           rel="noreferrer"
+                                           href="{{ plugin.shop.url|default('')|e('html_attr') }}"
+                                        >{{ 'Marketplace_AddToCart'|translate }}</a>
+                                    {% else %}
+                                        <a class="install update" target="_blank"
+                                           rel="noreferrer"
+                                           href="{% if plugin.shop is defined and plugin.shop and plugin.shop.url %}{{ plugin.shop.url|e('html_attr') }}{% else %}{{ plugin.homepage|e('html_attr') }}{% endif %}"
+                                        >{{ 'General_MoreDetails'|translate }}</a>
+                                    {% endif %}
+                                {% endif %}
+                            {% elseif isSuperUser %}
+                                {% if not isAutoUpdatePossible %}
+                                    <a onclick="$(this).css('display', 'none')" href="{{ linkTo({'action': 'download', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}"
+                                       class="download">{{ 'General_Download'|translate }}</a>
+                                {% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
+                                    <a class="install update"
+                                       href="{{ linkTo({'module': 'Marketplace', 'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}"
+                                    >{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
+                                {% elseif plugin.isInstalled %}
+                                    <br />
+                                    <br />
+                                    <br />
+                                    <br />
+                                {% elseif 0 < plugin.missingRequirements|length %}
+                                    <br />
+                                    <br />
+                                    <br />
+                                    <br />
+                                {% else %}
+                                    <a href="{{ linkTo({'module': 'Marketplace', 'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
+                                       class="install">{{ 'Marketplace_ActionInstall'|translate }}</a>
+                                {% endif %}
+                            {% else %}
+                                <br />
+                                <br />
+                                <br />
+                                <br />
+                            {% endif %}
+                        </div>
+
+                        <p><br /></p>
+                        <dl>
+                            <dt>{{ 'CorePluginsAdmin_Version'|translate }}</dt>
+                            <dd>{{ plugin.latestVersion }}</dd>
+                            <dt>{{ 'Marketplace_PluginKeywords'|translate }}</dt>
+                            <dd>{{ plugin.keywords|join(', ') }}</dd>
+                            {% if plugin.lastUpdated %}
+                                <dt>{{ 'Marketplace_LastUpdated'|translate }}</dt>
+                                <dd>{{ plugin.lastUpdated }}</dd>
+                            {% endif %}
+                            {% if plugin.numDownloads %}
+                                <dt>{{ 'General_Downloads'|translate }}</dt>
+                                <dd title="{{ 'Marketplace_NumDownloadsLatestVersion'|translate(latestVersion.numDownloads|number_format) }}">{{ plugin.numDownloads }}</dd>
+                            {% endif %}
+                            <dt>{{ 'Marketplace_Developer'|translate }}</dt>
+                            <dd>{{ marketplaceMacro.pluginDeveloper(plugin.owner) }}</dd>
+                            {% if latestVersion and latestVersion.license is defined and latestVersion.license and latestVersion.license.name is defined and latestVersion.license.name %}
+                                <dt>{{ 'Marketplace_License'|translate }}</dt>
+                                <dd>
+                                    {% if latestVersion.license.url is defined and latestVersion.license.url %}
+                                        <a rel="noreferrer"
+                                           href="{{ latestVersion.license.url }}"
+                                           target="_blank">{{ latestVersion.license.name }}</a>
+                                    {% else %}
+                                        {{ latestVersion.license.name }}
+                                    {% endif %}
+                                </dd>
+                            {% endif %}
+                            <dt>{{ 'Marketplace_Authors'|translate }}</dt>
+                            <dd>{% for author in plugin.authors if author.name %}
+
+                                    {% spaceless %}
+                                        {% if author.homepage %}
+                                            <a target="_blank" rel="noreferrer" href="{{ author.homepage }}">{{ author.name }}</a>
+                                        {% elseif author.email %}
+                                            <a href="mailto:{{ author.email|escape('url') }}">{{ author.name }}</a>
+                                        {% else %}
+                                            {{ author.name }}
+                                        {% endif %}
+
+                                        {% if loop.index < plugin.authors|length %}
+                                            ,
+                                        {% endif %}
+                                    {% endspaceless %}
+
+                                {% endfor %}
+                            </dd>
+                            <dt>{{ 'CorePluginsAdmin_Websites'|translate }}</dt>
+                            <dd>
+                                {% if plugin.homepage %}
+                                    <a target="_blank" rel="noreferrer" href="{{ plugin.homepage }}">{{ 'Marketplace_PluginWebsite'|translate }}</a>,
+                                {% endif %}
+                                <a target="_blank" href="{{ plugin.repositoryUrl }}">GitHub</a></dd>
+                            {% if plugin.activity and plugin.activity.numCommits %}
+                                <dt>{{ 'CorePluginsAdmin_Activity'|translate }}</dt>
+                                <dd>
+                                    {{ plugin.activity.numCommits }} commits
+
+                                    {% if plugin.activity.numContributors > 1 %}
+                                        {{ 'Marketplace_ByXDevelopers'|translate(plugin.activity.numContributors) }}
+                                    {% endif %}
+                                    {% if plugin.activity.lastCommitDate %}
+                                        {{ 'Marketplace_LastCommitTime'|translate(plugin.activity.lastCommitDate) }}
+                                    {% endif %}</dd>
+                            {% endif %}
+                        </dl>
+                        <br />
+                    </div>
+                </div>
+            </div>
+
+            <script type="text/javascript">
+                $(function() {
+
+                    var active = 0;
+                    {% if activeTab %}
+                    var $activeTab = $('#tabs-{{ activeTab|e('js') }}');
+                    if ($activeTab) {
+                        active = $activeTab.index() - 1;
+                    }
+                    {% endif %}
+
+                    $('#pluginDetailsTabs .tabs').tabs();
+                    $('#pluginDetailsTabs .tabs').tabs('select_tab', active >= 0 ? active : 0);
+
+                    $('.pluginDetails a').each(function (index, a) {
+                        var link = $(a).attr('href');
+
+                        if (link && 0 === link.indexOf('http')) {
+                            $(a).attr('target', '_blank');
+                        }
+                    });
+                });
+            </script>
+
+            {% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
+                <script type="text/javascript">
+                    $(function() {
+                        var $iFrames = $('.pluginDetails iframe.reviewIframe');
+                        for (var i = 0; i < $iFrames.length; i++) {
+                            iFrameResize({checkOrigin: ['{{ plugin.shop.reviews.embedUrl|domainOnly }}']}, $iFrames[i]);
+                        }
+                    });
+                </script>
+            {% endif %}
+
+            <script type="text/javascript">
+                $(function() {
+                    var $variationPicker = $('.pluginDetails .variationPicker select');
+                    if ($variationPicker.val()) {
+                        $('.addToCartLink').attr('href', $variationPicker.val());
+                    }
+                    $variationPicker.on('change', function () {
+                        $('.addToCartLink').attr('href', $variationPicker.val())
+                    });
+
+                    if ($variationPicker.length) {
+                        $variationPicker.material_select();
+                    }
+                });
+            </script>
+        {% endif %}
+    </div>
+
+
+{% endblock %}
diff --git a/plugins/Marketplace/templates/plugin-list.twig b/plugins/Marketplace/templates/plugin-list.twig
new file mode 100644
index 0000000000000000000000000000000000000000..d071fad3d88b230228c1e12b619090c1cadc9470
--- /dev/null
+++ b/plugins/Marketplace/templates/plugin-list.twig
@@ -0,0 +1,159 @@
+{% import '@Marketplace/macros.twig' as marketplaceMacro %}
+
+{% if pluginsToShow|length > 0 %}
+    <div class="pluginListContainer row">
+        {% for plugin in pluginsToShow %}
+            <div class="col s12 m6 l4">
+                {% embed 'contentBlock.twig' with {'title': ''} %}
+                    {% block content %}
+                        <div class="plugin">
+                            <h3 class="card-title" title="{{ 'General_MoreDetails'|translate }}">
+                                <a href="#" piwik-plugin-name="{{ plugin.name }}">{{ plugin.displayName }}</a>
+                            </h3>
+
+                            <p class="description">
+                                {{ plugin.description }}
+                                <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
+                                    &rsaquo; {{ 'General_MoreLowerCase'|translate }}</a>
+                            </p>
+
+                            {% if showThemes %}
+                                {# Screenshot for themes #}
+                                <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}">
+                                    <img title="{{ 'General_MoreDetails'|translate }}"
+                                         class="preview" src="{{ plugin.screenshots|first }}?w=250&h=150"/></a>
+                            {% endif %}
+
+                            <ul class="metadata">
+                                <li>
+                                    {% if plugin.latestVersion %}
+                                        {{ 'CorePluginsAdmin_Version'|translate }}: {{ plugin.latestVersion }}
+                                    {% endif %}
+
+                                    {% if plugin.canBeUpdated %}
+                                        <a class="update-available" href="#" piwik-plugin-name="{{ plugin.name }}" data-activePluginTab="changelog"
+                                           title="{{ 'Marketplace_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}">
+                                            {{ 'Marketplace_NewVersion'|translate }}</a>
+                                    {% endif %}
+                                </li>
+                                {% if plugin.lastUpdated %}
+                                    <li>{{ 'Marketplace_Updated'|translate }}: {{ plugin.lastUpdated }}</li>
+                                {% endif %}
+                                {% if plugin.numDownloads %}
+                                    <li>{{ 'General_Downloads'|translate }}: {{ plugin.numDownloads }}</li>
+                                {% endif %}
+                                <li>{{ 'Marketplace_Developer'|translate }}: {{ marketplaceMacro.pluginDeveloper(plugin.owner) }}</li>
+                            </ul>
+
+                            {% macro moreDetailsLink(plugin) %}
+                                {% set canBePurchased = not plugin.isDownloadable and plugin.shop is defined and plugin.shop and plugin.shop.url %}
+                                <a class="btn btn-block plugin-details {% if canBePurchased %}purchaseable{% endif %}" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
+
+                                    {% if canBePurchased and plugin.shop.variations %}
+                                        {% set foundCheapest = 0 %}
+                                        {% for variation in plugin.shop.variations %}
+                                            {% if not foundCheapest and variation.cheapest is defined and variation.cheapest %}
+                                                {% set foundCheapest = 1 %}
+                                                {{ 'Marketplace_PriceFromPerPeriod'|translate(variation.prettyPrice, variation.period) }}
+                                            {% endif %}
+                                        {% endfor %}
+                                        {% if not foundCheapest %}
+                                            {{ 'Marketplace_PriceFromPerPeriod'|translate(plugin.shop.variations.0.prettyPrice, plugin.shop.variations.0.period) }}
+                                        {% endif %}
+                                    {% else %}
+                                        {{ 'General_MoreDetails'|translate }}
+                                    {% endif %}
+
+                                </a>
+                            {% endmacro %}
+
+
+                            {% if isSuperUser %}
+                                <div class="footer">
+                                    {% if plugin.isMissingLicense is defined and plugin.isMissingLicense %}
+
+                                        <div class="alert alert-danger" >
+                                            {{ 'Marketplace_LicenseMissing'|translate }}
+
+                                            <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
+                                        </div>
+
+                                    {% elseif plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
+
+                                        <div class="alert alert-danger">
+                                            {{ 'Marketplace_LicenseExceeded'|translate }}
+
+                                            <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
+                                        </div>
+
+                                    {% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length and isAutoUpdatePossible %}
+                                        <a class="btn btn-block"
+                                           href="{{ linkTo({'module': 'Marketplace', 'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">
+                                            {{ 'CoreUpdater_UpdateTitle'|translate }}
+                                        </a>
+                                    {% elseif plugin.missingRequirements|length > 0 or not isAutoUpdatePossible %}
+
+                                        {% macro downloadButton(showOr, plugin, isAutoUpdatePossible, showBrackets = false) -%}
+                                            {%- if plugin.missingRequirements|length == 0 and plugin.isDownloadable and not isAutoUpdatePossible -%}
+                                                {% if showBrackets %}({% endif %}<span onclick="$(this).css('display', 'none')">
+                                                {%- if showOr %} {{ 'General_Or'|translate }} {% endif -%}
+                                                <a class="plugin-details download"
+                                                   href="{{ linkTo({'module': 'Marketplace', 'action': 'download', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}"
+                                                >{{ 'General_Download'|translate }}</a></span>{% if showBrackets %}){% endif %}
+                                            {%- endif -%}
+                                        {%- endmacro %}
+
+                                        {% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
+                                            {{ 'Marketplace_CannotUpdate'|translate }}
+                                            <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
+                                        {% elseif plugin.isInstalled %}
+                                            {{ 'General_Installed'|translate }}
+                                            {{ _self.downloadButton(false, plugin, isAutoUpdatePossible, true)|raw }}
+                                        {% elseif not plugin.isDownloadable %}
+                                            {{ _self.moreDetailsLink(plugin)|raw }}
+                                        {% else %}
+                                            {{ 'Marketplace_CannotInstall'|translate }}
+
+                                            <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
+                                        {% endif %}
+
+                                    {% elseif plugin.isInstalled %}
+                                        {{ 'General_Installed'|translate }}
+
+                                        {% if not plugin.isInvalid and not isMultiServerEnvironment and isPluginsAdminEnabled %}
+                                            ({{ pluginsMacro.pluginActivateDeactivateAction(plugin.name, plugin.isActivated, plugin.missingRequirements, deactivateNonce, activateNonce) }})
+                                        {% endif %}
+
+                                    {% elseif plugin.isPaid and not plugin.isDownloadable %}
+                                        {{ _self.moreDetailsLink(plugin)|raw }}
+                                    {% else %}
+                                        <a href="{{ linkTo({'module': 'Marketplace', 'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
+                                           class="btn">
+                                            {{ 'Marketplace_ActionInstall'|translate }}
+                                        </a>
+                                    {% endif %}
+                                </div>
+                            {% else %}
+                                <div class="footer">
+                                    {{ _self.moreDetailsLink(plugin)|raw }}
+                                </div>
+                            {% endif %}
+
+                        </div>
+                    {% endblock %}
+                {% endembed %}
+            </div>
+        {% endfor %}
+    </div>
+{% endif %}
+
+{% if pluginsToShow|length == 0 %}
+    <div piwik-content-block>
+        {% if showThemes %}
+            {{ 'Marketplace_NoThemesFound'|translate }}
+        {% else %}
+            {{ 'Marketplace_NoPluginsFound'|translate }}
+        {% endif %}
+    </div>
+{% endif %}
+
diff --git a/plugins/Marketplace/templates/subscription-overview.twig b/plugins/Marketplace/templates/subscription-overview.twig
new file mode 100644
index 0000000000000000000000000000000000000000..0ace015545a0385f04c4eaa710ce675b3b5b016b
--- /dev/null
+++ b/plugins/Marketplace/templates/subscription-overview.twig
@@ -0,0 +1,101 @@
+{% extends mode is defined and mode == 'user' ? "user.twig" : "admin.twig" %}
+{% import '@Marketplace/macros.twig' as marketplaceMacro %}
+
+{% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
+
+{% block content %}
+
+    <div piwik-content-block
+         content-title="{{ 'Marketplace_OverviewPluginSubscriptions'|translate|e('html_attr') }}"
+         class="subscriptionOverview">
+
+        {% if hasLicenseKey %}
+            <p>
+                {{ 'Marketplace_PluginSubscriptionsList'|translate }}
+                {% if loginUrl %}
+                    <a target="_blank" rel="noreferrer" href="{{ loginUrl }}">{{ 'Marketplace_OverviewPluginSubscriptionsAllDetails'|translate }}</a>
+                {% endif %}
+                <br/>
+                {{ 'Marketplace_OverviewPluginSubscriptionsMissingInfo'|translate }}
+                <br />
+
+                {{ 'Marketplace_NoValidSubscriptionNoUpdates'|translate }}
+                {{ 'Marketplace_CurrentNumPiwikUsers'|translate('<strong>' ~ numUsers ~ '</strong>')|raw }}
+            </p>
+
+            <br />
+
+            <table piwik-content-table>
+                <thead>
+                <tr>
+                    <th>{{ 'General_Name'|translate }}</th>
+                    <th>{{ 'Marketplace_SubscriptionType'|translate }}</th>
+                    <th>{{ 'CorePluginsAdmin_Status'|translate }}</th>
+                    <th>{{ 'Marketplace_SubscriptionStartDate'|translate }}</th>
+                    <th>{{ 'Marketplace_SubscriptionEndDate'|translate }}</th>
+                    <th>{{ 'Marketplace_SubscriptionNextPaymentDate'|translate }}</th>
+                </tr>
+                </thead>
+                <tbody>
+                {% if subscriptions|length %}
+                    {% for subscription in subscriptions %}
+                        <tr>
+                            <td class="subscriptionName">
+                                {% if subscription.plugin.htmlUrl %}
+                                    <a href="{{ subscription.plugin.htmlUrl }}" rel="noreferrer" target="_blank">
+                                {% endif %}
+
+                                {{ subscription.plugin.displayName }}
+
+                                {% if subscription.plugin.htmlUrl %}
+                                    </a>
+                                {% endif %}
+                            </td>
+                            <td class="subscriptionType">{{ subscription.productType }}</td>
+                            <td class="subscriptionStatus"
+                                title="{% if not subscription.isValid %}{{ 'Marketplace_SubscriptionInvalid'|translate|e('html_attr') }}{% elseif subscription.isExpiredSoon %}{{ 'Marketplace_SubscriptionExpiresSoon'|translate|e('html_attr') }}{% endif %}">
+                                {% if not subscription.isValid %}
+                                    <span class="icon-error"></span>
+                                {% elseif subscription.isExpiredSoon %}
+                                    <span class="icon-warning"></span>
+                                {% else %}
+                                    <span class="icon-ok"></span>
+                                {% endif %}
+
+                                {{ subscription.status }}
+
+                                {% if subscription.isExceeded is defined and subscription.isExceeded %}
+                                    <span class="errorMessage" title="{{ 'Marketplace_LicenseExceededPossibleCause'|translate }}"><span class="icon-error"></span> {{ 'Marketplace_Exceeded'|translate }}</span>
+                                {% endif %}
+                            </td>
+                            <td>{{ subscription.start }}</td>
+                            <td>{% if subscription.isValid and subscription.nextPayment %}
+                                    {{ 'Marketplace_LicenseRenewsNextPaymentDate'|translate }}
+                                {% else %}
+                                    {{ subscription.end }}
+                                {% endif %}
+                            </td>
+                            <td>{{ subscription.nextPayment }}</td>
+
+                        </tr>
+                    {% endfor %}
+                {% else %}
+                    <tr><td colspan="6">{{ 'Marketplace_NoSubscriptionsFound'|translate }}</td></tr>
+                {% endif %}
+                </tbody>
+            </table>
+
+            <div class="tableActionBar">
+                <a href="{{ linkTo({'module':"Marketplace", 'action':"overview"}) }}"
+                   class="">
+                    <span class="icon-table"></span>
+                    {{ 'Marketplace_BrowseMarketplace'|translate }}
+                </a>
+            </div>
+
+        {% else %}
+            <p>{{ 'Marketplace_OverviewPluginSubscriptionsMissingLicense'|translate('<a href="'~ linkTo({'module':"Marketplace", 'action':"overview"}) ~'">', '</a>')|raw }}</p>
+        {% endif %}
+    </div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/plugins/Marketplace/templates/updatePlugin.twig b/plugins/Marketplace/templates/updatePlugin.twig
new file mode 100644
index 0000000000000000000000000000000000000000..ec920cda92fb43532ed8b8ee95a264f9af25c649
--- /dev/null
+++ b/plugins/Marketplace/templates/updatePlugin.twig
@@ -0,0 +1,41 @@
+{% extends 'admin.twig' %}
+
+{% block content %}
+
+    <div style="max-width:980px;">
+
+        <h2>{{ 'Marketplace_UpdatingPlugin'|translate(plugin.name) }}</h2>
+
+        <div>
+
+            {% if plugin.isTheme %}
+
+                <p>{{ 'Marketplace_StepDownloadingThemeFromMarketplace'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepReplaceExistingTheme'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepThemeSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+            {% else %}
+
+                <p>{{ 'Marketplace_StepDownloadingPluginFromMarketplace'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepReplaceExistingPlugin'|translate }}</p>
+
+                <p>{{ 'Marketplace_StepPluginSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+            {% endif %}
+
+            <p><a href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'plugins'}) }}">{{ 'General_Plugins'|translate }}</a>
+                |
+                <a href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'themes'}) }}">{{ 'CorePluginsAdmin_Themes'|translate }}</a>
+                |
+                <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_Marketplace'|translate }}</a></p>
+        </div>
+    </div>
+
+{% endblock %}
diff --git a/plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php b/plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php
new file mode 100644
index 0000000000000000000000000000000000000000..1da808af4e3ca01d945e3a23f981891d6ff54129
--- /dev/null
+++ b/plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link    http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Plugins\Marketplace\tests\Fixtures;
+
+use Piwik\Date;
+use Piwik\Tests\Framework\Fixture;
+
+class SimpleFixtureTrackFewVisits extends Fixture
+{
+    public $dateTime = '2013-01-23 01:23:45';
+    public $idSite = 1;
+
+    public function setUp()
+    {
+        $this->setUpWebsite();
+        $this->trackVisits();
+    }
+
+    public function tearDown()
+    {
+        // empty
+    }
+
+    private function setUpWebsite()
+    {
+        if (!self::siteCreated($this->idSite)) {
+            $idSite = self::createWebsite($this->dateTime, $ecommerce = 1);
+            $this->assertSame($this->idSite, $idSite);
+        }
+    }
+
+    protected function trackVisits()
+    {
+        $t = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true);
+        $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.1)->getDatetime());
+        $t->setUrl('http://example.com/');
+        self::checkResponse($t->doTrackPageView('Viewing homepage'));
+
+        $t = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true);
+        $t->setIp('56.11.55.73');
+        $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.1)->getDatetime());
+        $t->setUrl('http://example.com/sub/page');
+        self::checkResponse($t->doTrackPageView('Viewing homepage'));
+    }
+}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/Framework/Mock/Client.php b/plugins/Marketplace/tests/Framework/Mock/Client.php
new file mode 100644
index 0000000000000000000000000000000000000000..fee4de1afee9358c419ee00cf592edd7ae734305
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Client.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+use Piwik\Cache\Backend\NullCache;
+use Piwik\Cache\Lazy;
+use Psr\Log\NullLogger;
+
+class Client {
+
+    public static function build($service)
+    {
+        $environment = new Environment();
+        return new \Piwik\Plugins\Marketplace\Api\Client($service, new Lazy(new NullCache()), new NullLogger(), $environment);
+    }
+}
diff --git a/plugins/Marketplace/tests/Framework/Mock/Consumer.php b/plugins/Marketplace/tests/Framework/Mock/Consumer.php
new file mode 100644
index 0000000000000000000000000000000000000000..9c72c20c51cd796257d3cd3be94df9063f49e320
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Consumer.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+use \Piwik\Plugins\Marketplace\Consumer as ActualConsumer;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+
+class Consumer {
+
+    public static function build($service)
+    {
+        $client = Client::build($service);
+        return new ActualConsumer($client);
+    }
+
+    public static function buildNoLicense()
+    {
+        $service = new Service();
+        $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+            if ($action === 'info') {
+                return $service->getFixtureContent('v2.0_info.json');
+            } elseif ($action === 'consumer') {
+                return $service->getFixtureContent('v2.0_consumer-access_token-notexistingtoken.json');
+            } elseif ($action === 'consumer/validate') {
+                return $service->getFixtureContent('v2.0_consumer_validate-access_token-notexistingtoken.json');
+            } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json');
+            }
+        });
+        return static::build($service);
+    }
+
+    public static function buildValidLicense()
+    {
+        $service = new Service();
+        $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+            if ($action === 'info') {
+                return $service->getFixtureContent('v2.0_info.json');
+            } elseif ($action === 'consumer') {
+                return $service->getFixtureContent('v2.0_consumer-access_token-consumer2_paid1.json');
+            } elseif ($action === 'consumer/validate') {
+                return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer2_paid1.json');
+            } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json');
+            }
+        });
+        return static::build($service);
+    }
+
+    public static function buildExceededLicense()
+    {
+        $service = new Service();
+        $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+            if ($action === 'info') {
+                return $service->getFixtureContent('v2.0_info.json');
+            } elseif ($action === 'consumer') {
+                return $service->getFixtureContent('v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json');
+            } elseif ($action === 'consumer/validate') {
+                return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json');
+            } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json');
+            }
+        });
+
+        return static::build($service);
+    }
+
+    public static function buildExpiredLicense()
+    {
+        $service = new Service();
+        $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+            if ($action === 'info') {
+                return $service->getFixtureContent('v2.0_info.json');
+            } elseif ($action === 'consumer') {
+                return $service->getFixtureContent('v2.0_consumer-access_token-consumer3_paid1_custom2.json');
+            } elseif ($action === 'consumer/validate') {
+                return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json');
+            } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+                return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json');
+            }
+        });
+        return static::build($service);
+    }
+
+}
diff --git a/plugins/Marketplace/tests/Framework/Mock/Environment.php b/plugins/Marketplace/tests/Framework/Mock/Environment.php
new file mode 100644
index 0000000000000000000000000000000000000000..354766c9c2bfebb6f57fa122811dba150b8bf999
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Environment.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+class Environment extends \Piwik\Plugins\Marketplace\Environment {
+
+    public function __construct()
+    {
+    }
+
+    public function getNumUsers()
+    {
+        return 5;
+    }
+
+    public function getNumWebsites()
+    {
+        return 21;
+    }
+
+    public function getPhpVersion()
+    {
+        return '7.0.1';
+    }
+
+    public function getPiwikVersion()
+    {
+        return '2.16.3';
+    }
+
+    public function doesPreferStable()
+    {
+        return true;
+    }
+
+    public function getReleaseChannel()
+    {
+        return 'latest_stable';
+    }
+
+    public function getMySQLVersion()
+    {
+        return '5.7.1';
+    }
+
+
+}
diff --git a/plugins/Marketplace/tests/Framework/Mock/Service.php b/plugins/Marketplace/tests/Framework/Mock/Service.php
new file mode 100644
index 0000000000000000000000000000000000000000..b74c8ce12ebbfce9ebd76e9ae68f0c79e5da2a65
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Service.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+use Piwik\Filesystem;
+
+class Service extends \Piwik\Plugins\Marketplace\Api\Service {
+
+    public $action;
+    public $params;
+
+    private $fixtureToReturn;
+    private $exception;
+    private $onFetchCallback;
+    private $onDownloadCallback;
+
+    public function __construct()
+    {
+        parent::__construct('http://plugins.piwik.org');
+    }
+
+    /**
+     * Will cause the service to throw an exception when any data is fetched
+     * @param $exception
+     */
+    public function throwException($exception)
+    {
+        $this->exception = $exception;
+        $this->fixtureToReturn = null;
+    }
+
+    /**
+     * Will cause the service to use the content of the given fixture as a response of the plugins API.
+     * Should be either a filename of a file within the "plugins/Marketplace/tests/resources/" directory or
+     * an array of filenames. An array is useful if the service gets called multiple times and you want to return
+     * different results for each API call. If an array is given, first filename will be returned first, then next, ...
+     *
+     * @param string|array $fixtureName
+     */
+    public function returnFixture($fixtureName)
+    {
+        $this->fixtureToReturn = $fixtureName;
+        $this->exception = null;
+    }
+
+    public function download($url, $destinationPath = null, $timeout = null)
+    {
+        if ($this->onDownloadCallback && is_callable($this->onDownloadCallback)) {
+            $result = call_user_func($this->onDownloadCallback, $this->action, $this->params);
+            if (!empty($result)) {
+                return $result;
+            }
+        }
+
+        if ($destinationPath) {
+            Filesystem::mkdir(@dirname($destinationPath));
+            file_put_contents($destinationPath, $url);
+            return true;
+        }
+
+        if (!empty($this->fixtureToReturn)) {
+            if (is_array($this->fixtureToReturn)) {
+                $fixture = array_shift($this->fixtureToReturn);
+            } else {
+                $fixture = $this->fixtureToReturn;
+                $this->fixtureToReturn = null;
+            }
+
+            return $this->getFixtureContent($fixture);
+        }
+    }
+
+    public function getFixtureContent($fixture)
+    {
+        $path = PIWIK_INCLUDE_PATH . '/plugins/Marketplace/tests/resources/' . $fixture;
+
+        return file_get_contents($path);
+    }
+
+    // here you can set a custom callback and record all actions/ params and even return a custom result for each
+    // action / params if wanted
+    public function setOnFetchCallback($callback)
+    {
+        $this->onFetchCallback = $callback;
+    }
+
+    // here you can set a custom callback and record all actions/ params and even return a custom result for each
+    // action / params if wanted
+    public function setOnDownloadCallback($callback)
+    {
+        $this->onDownloadCallback = $callback;
+    }
+
+    public function fetch($action, $params)
+    {
+        $this->action = $action;
+        $this->params = $params;
+
+        if ($this->onFetchCallback && is_callable($this->onFetchCallback)) {
+            $result = call_user_func($this->onFetchCallback, $action, $params);
+            if (!empty($result)) {
+                return $result;
+            }
+        }
+
+        if (isset($this->exception)) {
+            throw $this->exception;
+        } elseif (!empty($this->fixtureToReturn) || $this->onDownloadCallback) {
+            // we want to make sure to test as much of the service class as possible.
+            // Therefore we only mock the HTTP request in download()
+            return parent::fetch($action, $params);
+        }
+
+        return array();
+    }
+}
diff --git a/plugins/Marketplace/tests/Integration/ApiTest.php b/plugins/Marketplace/tests/Integration/ApiTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8b64948fd740e28e7aa42b26b17d5db651446cc8
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/ApiTest.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration;
+
+use Piwik\Plugins\Marketplace\API;
+use Piwik\Plugins\Marketplace\LicenseKey;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\Mock\FakeAccess;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\Api\Service\Exception as ServiceException;
+use Exception;
+
+/**
+ * @group Marketplace
+ * @group ApiTest
+ * @group Api
+ * @group Plugins
+ */
+class ApiTest extends IntegrationTestCase
+{
+    /**
+     * @var API
+     */
+    private $api;
+
+    /**
+     * @var Service
+     */
+    private $service;
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        API::unsetInstance();
+        $this->api = API::getInstance();
+
+        Fixture::createSuperUser();
+        if (!Fixture::siteCreated(1)) {
+            Fixture::createWebsite('2012-01-01 00:00:00');
+        }
+
+        $this->setSuperUser();
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage checkUserHasSuperUserAccess
+     */
+    public function test_deleteLicenseKey_requiresSuperUserAccess_IfUser()
+    {
+        $this->setUser();
+        $this->api->deleteLicenseKey();
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage checkUserHasSuperUserAccess
+     */
+    public function test_deleteLicenseKey_requiresSuperUserAccess_IfAnonymous()
+    {
+        $this->setAnonymousUser();
+        $this->api->deleteLicenseKey();
+    }
+
+    public function test_deleteLicenseKey_shouldRemoveAnExistingKey()
+    {
+        $this->buildLicenseKey()->set('key');
+        $this->assertHasLicenseKey();
+
+        $this->api->deleteLicenseKey();
+
+        $this->assertNotHasLicenseKey();
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage checkUserHasSuperUserAccess
+     */
+    public function test_saveLicenseKey_requiresSuperUserAccess_IfUser()
+    {
+        $this->setUser();
+        $this->api->saveLicenseKey('key');
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage checkUserHasSuperUserAccess
+     */
+    public function test_saveLicenseKey_requiresSuperUserAccess_IfAnonymous()
+    {
+        $this->setAnonymousUser();
+        $this->api->saveLicenseKey('key');
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage Marketplace_ExceptionLinceseKeyIsNotValid
+     */
+    public function test_saveLicenseKey_shouldThrowException_IfTokenIsNotValid()
+    {
+        $this->service->returnFixture('v2.0_consumer_validate-access_token-notexistingtoken.json');
+        $this->api->saveLicenseKey('key');
+    }
+
+    public function test_saveLicenseKey_shouldCallTheApiTheCorrectWay()
+    {
+        $this->service->returnFixture('v2.0_consumer-access_token-valid_but_expired.json');
+
+        try {
+            $this->api->saveLicenseKey('key123');
+        } catch (Exception $e) {
+
+        }
+
+        // make sure calls API the correct way
+        $this->assertSame('consumer/validate', $this->service->action);
+        $this->assertSame(array(), $this->service->params);
+        $this->assertSame('key123', $this->service->getAccessToken());
+        $this->assertNotHasLicenseKey();
+    }
+
+    public function test_saveLicenseKey_shouldActuallySaveToken_IfValid()
+    {
+        $this->service->returnFixture('v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json');
+        $success = $this->api->saveLicenseKey('123licensekey');
+        $this->assertTrue($success);
+
+        $this->assertHasLicenseKey();
+        $this->assertSame('123licensekey', $this->buildLicenseKey()->get());
+    }
+
+    /**
+     * @expectedExceptionMessage Host not reachable
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+     */
+    public function test_saveLicenseKey_shouldThrowException_IfConnectionToMarketplaceFailed()
+    {
+        $this->service->throwException(new ServiceException('Host not reachable', ServiceException::HTTP_ERROR));
+        $success = $this->api->saveLicenseKey('123licensekey');
+        $this->assertTrue($success);
+
+        $this->assertHasLicenseKey();
+        $this->assertSame('123licensekey', $this->buildLicenseKey()->get());
+    }
+
+    public function provideContainerConfig()
+    {
+        $this->service = new Service();
+
+        return array(
+            'Piwik\Access' => new FakeAccess(),
+            'Piwik\Plugins\Marketplace\Api\Service' => $this->service
+        );
+    }
+
+    protected function setSuperUser()
+    {
+        FakeAccess::clearAccess(true);
+    }
+
+    protected function setUser()
+    {
+        FakeAccess::clearAccess(false);
+        FakeAccess::$idSitesView = array(1);
+        FakeAccess::$idSitesAdmin = array();
+        FakeAccess::$identity = 'aUser';
+    }
+
+    protected function setAnonymousUser()
+    {
+        FakeAccess::clearAccess();
+        FakeAccess::$identity = 'anonymous';
+    }
+
+    protected function buildLicenseKey()
+    {
+        return new LicenseKey();
+    }
+
+    private function assertHasLicenseKey()
+    {
+        $this->assertTrue($this->buildLicenseKey()->has());
+    }
+
+    private function assertNotHasLicenseKey()
+    {
+        $this->assertFalse($this->buildLicenseKey()->has());
+    }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/ClientTest.php b/plugins/Marketplace/tests/Integration/ClientTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..22ab948151ffbdd04e2252c4178e5971abe79e03
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/ClientTest.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Api;
+
+use Piwik\Filesystem;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as TestService;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Client as ClientBuilder;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group ClientTest
+ * @group Client
+ */
+class ClientTest extends IntegrationTestCase
+{
+    /**
+     * @var Client
+     */
+    private $client;
+
+    /**
+     * @var TestService
+     */
+    private $service;
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        $this->service = new TestService();
+        $this->client = $this->buildClient();
+    }
+
+    public function test_download()
+    {
+        $this->service->returnFixture('v2.0_plugins_TreemapVisualization_info.json');
+
+        $file = $this->client->download('AnyPluginName');
+
+        $this->assertFileExists($file);
+        $this->assertStringEqualsFile($file, 'http://plugins.piwik.org/api/2.0/plugins/TreemapVisualization/download/1.0.1?coreVersion=2.16.3');
+        Filesystem::deleteFileIfExists($file);
+
+        $this->assertStringStartsWith(PIWIK_INCLUDE_PATH . '/tmp/latest/plugins/', $file);
+        $this->assertStringEndsWith('.zip', $file);
+    }
+
+    /**
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Exception
+     * @expectedExceptionMessage Requested plugin does not exist.
+     */
+    public function test_getPluginInfo_shouldThrowException_IfNotAllowedToRequestPlugin()
+    {
+        $this->service->returnFixture('v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json');
+        $this->client->getPluginInfo('CustomPlugin1');
+    }
+
+    private function buildClient()
+    {
+        return ClientBuilder::build($this->service);
+    }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/EnvironmentTest.php b/plugins/Marketplace/tests/Integration/EnvironmentTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5c23b28145e46e3fdc6408189e37adec49e891ff
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/EnvironmentTest.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Api;
+
+use Piwik\Plugin;
+use Piwik\Plugin\ReleaseChannels;
+use Piwik\Plugins\Marketplace\Environment;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Version;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group EnvironmentTest
+ * @group Environment
+ */
+class EnvironmentTest extends IntegrationTestCase
+{
+    /**
+     * @var Environment
+     */
+    private $environment;
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        Fixture::createSuperUser();
+        Fixture::createWebsite('2014-01-01 02:02:02');
+        Fixture::createWebsite('2014-01-01 02:02:02');
+        Fixture::createWebsite('2014-01-01 02:02:02');
+
+        $releaseChannes = new ReleaseChannels(Plugin\Manager::getInstance());
+        $releaseChannes->setActiveReleaseChannelId('latest_stable');
+
+        $this->environment = new Environment($releaseChannes);
+    }
+
+    public function test_getPhpVersion()
+    {
+        $this->assertEquals(phpversion(), $this->environment->getPhpVersion());
+    }
+
+    public function test_getPiwikVersion()
+    {
+        $this->assertEquals(Version::VERSION, $this->environment->getPiwikVersion());
+    }
+
+    public function test_setPiwikVersion_OverwritesCurrentPiwikVersion()
+    {
+        $this->environment->setPiwikVersion('1.12.0');
+        $this->assertSame('1.12.0', $this->environment->getPiwikVersion());
+    }
+
+    public function test_getNumUsers()
+    {
+        $this->assertSame(1, $this->environment->getNumUsers());
+    }
+
+    public function test_getNumWebsites()
+    {
+        $this->assertSame(3, $this->environment->getNumWebsites());
+    }
+
+    public function test_getMySQLVersion()
+    {
+        $this->assertNotEmpty($this->environment->getMySQLVersion());
+    }
+
+    public function test_getReleaseChannel()
+    {
+        $this->assertEquals('latest_stable', $this->environment->getReleaseChannel());
+    }
+
+    public function test_doesPreferStable()
+    {
+        $this->assertTrue($this->environment->doesPreferStable());
+    }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/Input/PluginNameTest.php b/plugins/Marketplace/tests/Integration/Input/PluginNameTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..51e8ace8be66fb57002c093e851b38ad9c13906b
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/Input/PluginNameTest.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Input;
+
+use Piwik\Plugins\Marketplace\Input\PluginName;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group PluginNameTest
+ * @group PluginName
+ */
+class PluginNameTest extends IntegrationTestCase
+{
+    public function tearDown()
+    {
+        unset($_GET['pluginName']);
+    }
+
+    public function test_findsPluginName()
+    {
+        $this->setPluginName('CoreFooBar');
+
+        $pluginName = new PluginName();
+        $this->assertSame('CoreFooBar', $pluginName->getPluginName());
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage Invalid plugin name given
+     */
+    public function test_throws_exception_ifInvalidName()
+    {
+        $this->setPluginName('CoreFooBar-?4');
+
+        $pluginName = new PluginName();
+        $pluginName->getPluginName();
+    }
+
+    private function setPluginName($name)
+    {
+        $_GET['pluginName'] = $name;
+    }
+
+
+}
diff --git a/plugins/Marketplace/tests/Integration/LicenseKeyTest.php b/plugins/Marketplace/tests/Integration/LicenseKeyTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f548b1c31e2589ac624dba691f97c57a7aba49c
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/LicenseKeyTest.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration;
+
+use Piwik\Plugins\Marketplace\LicenseKey;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group LicenseKeyTest
+ * @group LicenseKey
+ */
+class LicenseKeyTest extends IntegrationTestCase
+{
+    /**
+     * @var LicenseKey
+     */
+    private $licenseKey;
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        $this->licenseKey = $this->buildLicenseKey();
+    }
+
+    public function test_get_noLicenseKeyIsSetByDefault()
+    {
+        $this->assertFalse($this->licenseKey->get());
+        $this->assertFalse($this->licenseKey->has());
+    }
+
+    public function test_set_get_persistsALicenseKey()
+    {
+        $key = 'foobarBaz';
+        $this->licenseKey->set($key);
+        $this->assertSame($key, $this->licenseKey->get());
+
+        // verify it is saved across requests by creating a new instance
+        $this->assertPersistedLicenseKeyEquals($key);
+    }
+
+    public function test_set_shouldOverwriteAnExistingKey()
+    {
+        $this->setExampleLicenseKey();
+
+        $key = 'foobarBaz2Unique299';
+        $this->assertPersistedLicenseKeyNotEquals($key);
+        $this->licenseKey->set($key);
+        $this->assertPersistedLicenseKeyEquals($key);
+    }
+
+    public function test_set_deletesAnExistingLicenseKey_IfValueIsFalse()
+    {
+        $this->setExampleLicenseKey();
+
+        $this->licenseKey->set(false);
+        $this->assertFalse($this->licenseKey->has());
+    }
+
+    public function test_set_deletesAnExistingLicenseKey_IfValueIsNotSet()
+    {
+        $this->setExampleLicenseKey();
+
+        $this->licenseKey->set(null);
+        $this->assertFalse($this->licenseKey->has());
+    }
+
+    public function test_has_detectsWhetherANonEmptyKeyIsSet()
+    {
+        $this->assertNotHasPersistedLicenseKey();
+        $this->setExampleLicenseKey();
+        $this->assertHasPersistedLicenseKey();
+        $this->licenseKey->set('');
+        $this->assertNotHasPersistedLicenseKey();
+        $this->licenseKey->set('1');
+        $this->assertHasPersistedLicenseKey();
+        $this->licenseKey->set('0');
+        $this->assertHasPersistedLicenseKey();
+        $this->licenseKey->set(null);
+        $this->assertNotHasPersistedLicenseKey();
+    }
+
+    private function assertHasPersistedLicenseKey()
+    {
+        // we create a new instance so it's actually persisted and not hold in an object instance
+        $this->assertTrue($this->buildLicenseKey()->has());
+    }
+
+    private function assertNotHasPersistedLicenseKey()
+    {
+        // we create a new instance so it's actually persisted and not hold in an object instance
+        $this->assertFalse($this->buildLicenseKey()->has());
+    }
+
+    private function assertPersistedLicenseKeyEquals($expectedKey)
+    {
+        // we create a new instance so it's actually persisted and not hold in an object instance
+        $this->assertSame($expectedKey, $this->buildLicenseKey()->get());
+    }
+
+    private function assertPersistedLicenseKeyNotEquals($expectedKey)
+    {
+        // we create a new instance so it's actually persisted and not hold in an object instance
+        $this->assertNotSame($expectedKey, $this->buildLicenseKey()->get());
+    }
+
+    private function setExampleLicenseKey()
+    {
+        $this->licenseKey->set('foo');
+        $this->assertTrue($this->licenseKey->has());
+    }
+
+    private function buildLicenseKey()
+    {
+        return new LicenseKey();
+    }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php b/plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b31aea1e2ed46e586034d7f680779e016ce5c213
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php
@@ -0,0 +1,290 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Plugins;
+
+use Piwik\Cache\Backend\ArrayCache;
+use Piwik\Cache\Eager;
+use Piwik\Container\StaticContainer;
+use Piwik\Plugins\Marketplace\Consumer;
+use Piwik\Plugins\Marketplace\Plugins;
+use Piwik\Plugins\Marketplace\Plugins\InvalidLicenses;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer as ConsumerBuilder;
+use Piwik\Translate;
+
+class CustomInvalidLicenses extends InvalidLicenses {
+    private $isActivated = true;
+
+    public function setPluginIsActivated($isActivated)
+    {
+        $this->isActivated = $isActivated;
+    }
+
+    public function isPluginActivated($pluginName)
+    {
+        return $this->isActivated;
+    }
+}
+
+/**
+ * @group Marketplace
+ * @group InvalidLicensesTest
+ * @group InvalidLicenses
+ * @group Plugins
+ */
+class InvalidLicensesTest extends IntegrationTestCase
+{
+    /**
+     * @var Eager
+     */
+    private $cache;
+
+    private $cacheKey = 'Marketplace_ExpiredPlugins';
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        Translate::loadEnglishTranslation();
+
+        $this->cache = new Eager(new ArrayCache(), 'test');
+    }
+
+    public function tearDown()
+    {
+        Translate::unloadEnglishTranslation();
+        parent::tearDown();
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_validLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithValidLicense();
+        $expired->setPluginIsActivated(false);
+
+        $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_noLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithNoLicense();
+        $expired->setPluginIsActivated(false);
+
+        $expected = array(
+            'exceeded' => array(),
+            'expired' => array(),
+            'noLicense' => array());
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_invalidLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithExpiredLicense();
+        $expired->setPluginIsActivated(false);
+
+        $expected = array(
+            'exceeded' => array(),
+            'expired' => array(),
+            'noLicense' => array());
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_exceededLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithExceededLicense();
+        $expired->setPluginIsActivated(false);
+
+        $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_validLicenses()
+    {
+        $expired = $this->buildWithValidLicense();
+
+        $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_noLicenses()
+    {
+        $expired = $this->buildWithNoLicense();
+
+        $expected = array(
+            'exceeded' => array(),
+            'expired' => array(),
+            'noLicense' => array('PaidPlugin1'));
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_invalidLicenses()
+    {
+        $expired = $this->buildWithExpiredLicense();
+
+        $expected = array(
+            'exceeded' => array(),
+            'expired' => array('PaidPlugin1'),
+            'noLicense' => array());
+
+        $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_exceededLicenses()
+    {
+        $expired = $this->buildWithExceededLicense();
+
+        $expected = array(
+            'exceeded' => array('PaidPlugin2'),
+            'expired' => array('PaidPlugin1'),
+            'noLicense' => array());
+        $this->assertEquals($expected, $expired->getPluginNamesOfInvalidLicenses());
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_shouldCacheAnyResult()
+    {
+        $this->assertFalse($this->cache->contains($this->cacheKey));
+
+        $this->buildWithValidLicense()->getPluginNamesOfInvalidLicenses();
+
+        $this->assertTrue($this->cache->contains($this->cacheKey));
+
+        $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+        $this->assertSame($expected, $this->cache->fetch($this->cacheKey));
+    }
+
+    public function test_getNamesOfExpiredPaidPlugins_shouldCache_IfNotValidLicenseKeyButPaidPluginsInstalled()
+    {
+        $this->buildWithExpiredLicense()->getPluginNamesOfInvalidLicenses();
+
+        $expected = array(
+            'exceeded' => array(),
+            'expired' => array('PaidPlugin1'),
+            'noLicense' => array());
+
+        $this->assertSame($expected, $this->cache->fetch($this->cacheKey));
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_validLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithValidLicense();
+        $expired->setPluginIsActivated(false);
+
+        $this->assertNull($expired->getMessageExceededLicenses());
+        $this->assertNull($expired->getMessageExpiredLicenses());
+        $this->assertNull($expired->getMessageNoLicense());
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_invalidLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithExpiredLicense();
+        $expired->setPluginIsActivated(false);
+
+        $this->assertNull($expired->getMessageExceededLicenses());
+        $this->assertNull($expired->getMessageExpiredLicenses());
+        $this->assertNull($expired->getMessageNoLicense());
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_exceededLicenses_noPaidPluginActivated()
+    {
+        $expired = $this->buildWithExceededLicense();
+        $expired->setPluginIsActivated(false);
+        $this->assertNull($expired->getMessageExceededLicenses());
+        $this->assertNull($expired->getMessageExpiredLicenses());
+        $this->assertNull($expired->getMessageNoLicense());
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_validLicenses_PaidPluginActivated()
+    {
+        $expired = $this->buildWithValidLicense();
+
+        $this->assertNull($expired->getMessageExceededLicenses());
+        $this->assertNull($expired->getMessageExpiredLicenses());
+        $this->assertNull($expired->getMessageNoLicense());
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_noLicenses_PaidPluginActivated()
+    {
+        // in theory we would need to show a warning as there is no license, but this can also happen if there's some random
+        // error and the user actually has a license, eg if the request aborted when fetching consumer etc
+        $expired = $this->buildWithNoLicense();
+
+        $this->assertEquals('', $expired->getMessageExceededLicenses());
+        $this->assertEquals('', $expired->getMessageExpiredLicenses());
+        $this->assertEquals('You are using the following plugins without a license: <strong>PaidPlugin1</strong>. <br/>To resolve this issue either update your license key, <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">get a subscription now</a></strong> or deactivate the plugin. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageNoLicense());
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_invalidLicenses_PaidPluginActivated()
+    {
+        $expired = $this->buildWithExpiredLicense();
+
+        $this->assertNull($expired->getMessageExceededLicenses());
+        $this->assertEquals('The licenses for the following plugins are expired: <strong>PaidPlugin1</strong>. <br/>You will no longer receive any updates for these plugins. To resolve this issue either <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">renew your subscription now</a></strong>, or deactivate the plugin if you no longer use it. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageExpiredLicenses());
+    }
+
+    public function test_getMessageExceededLicenses_getMessageExpiredLicenses_exceededLicenses_PaidPluginActivated()
+    {
+        $expired = $this->buildWithExceededLicense();
+        $this->assertEquals('The licenses for the following plugins are no longer valid as the number of authorized users for the license is exceeded: <strong>PaidPlugin2</strong>. <br/>You will not be able to download updates for these plugins. To resolve this issue either delete some users or <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">upgrade the subscription now</a></strong>. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageExceededLicenses());
+        $this->assertEquals('The licenses for the following plugins are expired: <strong>PaidPlugin1</strong>. <br/>You will no longer receive any updates for these plugins. To resolve this issue either <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">renew your subscription now</a></strong>, or deactivate the plugin if you no longer use it. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageExpiredLicenses());
+    }
+
+    public function test_getMessageMissingLicenses_getMessageMissingLicenses_PaidPluginActivated()
+    {
+        $expired = $this->buildWithNoLicense();
+        $this->assertEquals('You are using the following plugins without a license: <strong>PaidPlugin1</strong>. <br/>To resolve this issue either update your license key, <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">get a subscription now</a></strong> or deactivate the plugin. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageNoLicense());
+    }
+
+    private function buildWithValidLicense()
+    {
+        $consumer = ConsumerBuilder::buildValidLicense();
+        return $this->buildInvalidLicense($consumer);
+    }
+
+    private function buildWithExpiredLicense()
+    {
+        $consumer = ConsumerBuilder::buildExpiredLicense();
+        return $this->buildInvalidLicense($consumer);
+    }
+
+    private function buildWithNoLicense()
+    {
+        $consumer = ConsumerBuilder::buildNoLicense();
+        return $this->buildInvalidLicense($consumer);
+    }
+
+    private function buildWithExceededLicense()
+    {
+        $consumer = ConsumerBuilder::buildExceededLicense();
+        return $this->buildInvalidLicense($consumer);
+    }
+
+    /**
+     * @param Consumer $consumer
+     * @return CustomInvalidLicenses
+     */
+    private function buildInvalidLicense($consumer)
+    {
+        $translator = StaticContainer::get('Piwik\Translation\Translator');
+        $advertising = StaticContainer::get('Piwik\ProfessionalServices\Advertising');
+        $client = $consumer->getApiClient();
+        $plugins = new Plugins($client, $consumer, $advertising);
+
+        $licenses = new CustomInvalidLicenses($client, $this->cache, $translator, $plugins);
+        $licenses->clearCache();
+        return $licenses;
+    }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/PluginsTest.php b/plugins/Marketplace/tests/Integration/PluginsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..815fd537a5ff12b600f55e34cde42b5e2cfa8b33
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/PluginsTest.php
@@ -0,0 +1,486 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration;
+
+use Piwik\Plugins\Marketplace\API;
+use Piwik\Plugins\Marketplace\Consumer;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Plugins\Marketplace\Input\Sort;
+use Piwik\Plugins\Marketplace\Plugins;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Client;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service;
+use Piwik\Tests\Framework\Mock\ProfessionalServices\Advertising;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugin;
+
+/**
+ * @group Marketplace
+ * @group PluginsTest
+ * @group Plugins
+ */
+class PluginsTest extends IntegrationTestCase
+{
+    /**
+     * @var Plugins
+     */
+    private $plugins;
+
+    /**
+     * @var Service
+     */
+    private $service;
+
+    /**
+     * @var Service
+     */
+    private $consumerService;
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        API::unsetInstance();
+
+        $this->service = new Service();
+        $this->consumerService = new Service();
+
+        $this->plugins = new Plugins(
+            Client::build($this->service),
+            new Consumer(Client::build($this->consumerService)),
+            new Advertising()
+        );
+    }
+
+    public function test_getAllAvailablePluginNames_noPluginsFound()
+    {
+        $pluginNames = $this->plugins->getAllAvailablePluginNames();
+        $this->assertSame(array(), $pluginNames);
+    }
+
+    public function test_getAllAvailablePluginNames()
+    {
+        $this->service->returnFixture(array(
+            'v2.0_themes.json', 'v2.0_plugins.json'
+        ));
+        $pluginNames = $this->plugins->getAllAvailablePluginNames();
+        $expected = array (
+            'AnotherBlackTheme',
+            'Barometer',
+            'Counter',
+            'CustomAlerts',
+            'CustomOptOut',
+            'FeedAnnotation',
+            'IPv6Usage',
+            'LiveTab',
+            'LoginHttpAuth',
+            'page2images-visual-link',
+            'PaidPlugin1',
+            'ReferrersManager',
+            'SecurityInfo',
+            'TasksTimetable',
+            'TreemapVisualization',
+        );
+        foreach ($expected as $name) {
+            $this->assertContains($name, $pluginNames);
+        }
+    }
+
+    public function test_getAvailablePluginNames_noPluginsFound()
+    {
+        $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = true);
+        $this->assertSame(array(), $pluginNames);
+
+        $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = false);
+        $this->assertSame(array(), $pluginNames);
+    }
+
+    public function test_getAvailablePluginNames_shouldReturnPluginNames()
+    {
+        $this->service->returnFixture('v2.0_themes.json');
+        $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = true);
+        $this->assertSame(array(
+            'AnotherBlackTheme',
+            'Darkness',
+            'Proteus_Bold',
+            'Terrano',
+            'CoffeeCup',
+            'Vale',
+            'ModernBlue',
+            'ModernGreen'), $pluginNames);
+
+        $this->service->returnFixture('v2.0_plugins.json');
+        $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = false);
+        $this->assertSame($this->getExpectedPluginNames(), $pluginNames);
+    }
+
+    public function test_getAvailablePluginNames_shouldCallCorrectApi()
+    {
+        $this->plugins->getAvailablePluginNames($themesOnly = true);
+        $this->assertSame('themes', $this->service->action);
+
+        $this->plugins->getAvailablePluginNames($themesOnly = false);
+        $this->assertSame('plugins', $this->service->action);
+    }
+
+    public function test_getPluginInfo_noSuchPluginExists()
+    {
+        $plugin = $this->plugins->getPluginInfo('fooBarBaz');
+        $this->assertSame(array(), $plugin);
+    }
+
+    public function test_getPluginInfo_notInstalledPlugin_shouldEnrichPluginInformation()
+    {
+        $this->service->returnFixture('v2.0_plugins_Barometer_info.json');
+        $plugin = $this->plugins->getPluginInfo('Barometer');
+
+        unset($plugin['versions']);
+
+        $expected = array (
+            'name' => 'Barometer',
+            'displayName' => 'Barometer',
+            'owner' => 'halfdan',
+            'description' => 'Live Plugin that shows the current number of visitors on the page.',
+            'homepage' => 'http://github.com/halfdan/piwik-barometer-plugin',
+            'createdDateTime' => '2014-12-23 00:38:20',
+            'donate' =>
+                array (
+                    'flattr' => 'https://flattr.com/profile/test1',
+                    'bitcoin' => NULL,
+                ),
+            'support' =>
+                array (
+                        array (
+                            'name' => 'Documentation',
+                            'key' => 'docs',
+                            'value' => 'https://barometer.org/docs/',
+                            'type' => 'url',
+                        ),
+                        array (
+                            'name' => 'Wiki',
+                            'key' => 'wiki',
+                            'value' => 'https://github.com/barometer/piwik/wiki',
+                            'type' => 'url',
+                        ),
+                        array (
+                            'name' => 'Forum',
+                            'key' => 'forum',
+                            'value' => 'https://baromter.forum.org',
+                            'type' => 'url',
+                        ),
+                        array (
+                            'name' => 'Email',
+                            'key' => 'email',
+                            'value' => 'barometer@example.com',
+                            'type' => 'email',
+                        ),
+                        array (
+                            'name' => 'IRC',
+                            'key' => 'irc',
+                            'value' => 'irc://freenode/baromter',
+                            'type' => 'text',
+                        ),
+                        array (
+                            'name' => 'Issues / Bugs',
+                            'key' => 'issues',
+                            'value' => 'https://github.com/barometer/issues',
+                            'type' => 'url',
+                        ),
+                        array (
+                            'name' => 'Source',
+                            'key' => 'source',
+                            'value' => 'https://github.com/barometer/piwik/',
+                            'type' => 'url',
+                        ),
+                        array (
+                            'name' => 'RSS',
+                            'key' => 'rss',
+                            'value' => 'https://barometer.org/feed/',
+                            'type' => 'url',
+                        ),
+                ),
+            'isTheme' => false,
+            'keywords' => array ('barometer','live',),
+            'basePrice' => 0,
+            'authors' =>
+                array (array (
+                    'name' => 'Fabian Becker',
+                    'email' => 'test8@example.com',
+                    'homepage' => 'http://geekproject.eu',
+                ),),
+            'repositoryUrl' => 'https://github.com/halfdan/piwik-barometer-plugin',
+            'lastUpdated' => 'Intl_4or41Intl_Time_AMt_357Intl_Time_AMt_S12ort',
+            'latestVersion' => '0.5.0',
+            'numDownloads' => 0,
+            'screenshots' =>
+                array (
+                    'https://plugins.piwik.org/Barometer/images/0.5.0/piwik-barometer-01.png',
+                    'https://plugins.piwik.org/Barometer/images/0.5.0/piwik-barometer-02.png',
+                ),
+            'previews' =>
+                array (array (
+                    'type' => 'demo',
+                    'provider' => 'link',
+                    'url' => 'https://demo.piwik.org',
+                ),),
+            'activity' =>
+                array (
+                    'numCommits' => '31',
+                    'numContributors' => '3',
+                    'lastCommitDate' => NULL,
+                ),
+            'featured' => false,
+            'isFree' => true,
+            'isPaid' => false,
+            'isCustomPlugin' => false,
+            'shop' => NULL,
+            'isDownloadable' => true,
+            'consumer' => array ('license' => NULL,),
+            'isInstalled' => false,
+            'isActivated' => false,
+            'isInvalid' => true,
+            'canBeUpdated' => false,
+            'hasExceededLicense' => false,
+            'missingRequirements' =>array ( ),
+            'isMissingLicense' => false
+        );
+        $this->assertEquals($expected, $plugin);
+    }
+
+    public function test_getPluginInfo_notInstalledPlugin_shouldCallCorrectService()
+    {
+        $this->plugins->getPluginInfo('Barometer');
+        $this->assertSame('plugins/Barometer/info', $this->service->action);
+    }
+
+    public function test_searchPlugins_WithSearchAndNoPluginsFound_shouldCallCorrectApi()
+    {
+        $this->service->returnFixture('v2.0_plugins-query-nomatchforthisquery.json');
+        $this->plugins->setPluginsHavingUpdateCache(array());
+        $plugins = $this->plugins->searchPlugins($query = 'nomatchforthisquery', $sort = Sort::DEFAULT_SORT, $themesOnly = false);
+
+        $this->assertSame(array(), $plugins);
+        $this->assertSame('plugins', $this->service->action);
+
+        $params = array(
+            'keywords' => '',
+            'purchase_type' => '',
+            'query' => 'nomatchforthisquery',
+            'sort' => Sort::DEFAULT_SORT,
+            'release_channel' => 'latest_stable',
+            'prefer_stable' => 1,
+            'piwik' => '2.16.3',
+            'php' => '7.0.1',
+            'mysql' => '5.7.1',
+            'num_users' => 5,
+            'num_websites' => 21,
+        );
+        $this->assertSame($params, $this->service->params);
+    }
+
+    public function test_searchThemes_ShouldCallCorrectApi()
+    {
+        $this->service->returnFixture('v2.0_themes.json');
+        $this->plugins->setPluginsHavingUpdateCache(array());
+        $plugins = $this->plugins->searchPlugins($query = '', $sort = Sort::DEFAULT_SORT, $themesOnly = true);
+
+        $this->assertCount(8, $plugins);
+        $this->assertSame('AnotherBlackTheme', $plugins[0]['name']);
+        $this->assertSame('themes', $this->service->action);
+
+        $params = array(
+            'keywords' => '',
+            'purchase_type' => '',
+            'query' => '',
+            'sort' => Sort::DEFAULT_SORT,
+            'release_channel' => 'latest_stable',
+            'prefer_stable' => 1,
+            'piwik' => '2.16.3',
+            'php' => '7.0.1',
+            'mysql' => '5.7.1',
+            'num_users' => 5,
+            'num_websites' => 21,
+        );
+        $this->assertSame($params, $this->service->params);
+    }
+
+    public function test_searchPlugins_manyPluginsFound_shouldEnrichAll()
+    {
+        $this->service->returnFixture('v2.0_plugins.json');
+        $plugins = $this->plugins->searchPlugins($query = '', $sort = Sort::DEFAULT_SORT, $themesOnly = false);
+
+        $this->assertCount(54, $plugins);
+        $names = array_map(function ($plugin) {
+            return $plugin['name'];
+        }, $plugins);
+        $this->assertSame($this->getExpectedPluginNames(), $names);
+
+        foreach ($plugins as $plugin) {
+            $name = $plugin['name'];
+            $this->assertFalse($plugin['isTheme']);
+            $this->assertNotEmpty($plugin['homepage']);
+
+            $piwikProCampaign = 'pk_campaign=App_ProfessionalServices&pk_medium=Marketplace&pk_source=Piwik_App';
+
+            if ($name === 'SecurityInfo') {
+                $this->assertTrue($plugin['isFree']);
+                $this->assertFalse($plugin['isPaid']);
+                $this->assertTrue(in_array($plugin['isInstalled'], array(true, false), true));
+                $this->assertFalse($plugin['isInvalid']);
+                $this->assertTrue(isset($plugin['canBeUpdated']));
+                $this->assertSame(array(), $plugin['missingRequirements']);
+                $this->assertSame(Plugin\Manager::getInstance()->isPluginActivated('SecurityInfo'), $plugin['isActivated']);
+            } elseif ($name === 'SimplePageBuilder') {
+                // should add campaign parameters if Piwik PRO plugin
+                $this->assertSame('https://github.com/PiwikPRO/SimplePageBuilder?' . $piwikProCampaign . '&pk_content=SimplePageBuilder', $plugin['homepage']);
+            }
+
+            if ($plugin['owner'] === 'PiwikPRO') {
+                $this->assertContains($piwikProCampaign, $plugin['homepage']);
+            } else {
+                $this->assertNotContains($piwikProCampaign, $plugin['homepage']);
+            }
+        }
+    }
+    
+    public function test_getAllPaidPlugins_shouldFetchOnlyPaidPlugins()
+    {
+        $this->plugins->getAllPaidPlugins();
+        $this->assertSame('plugins', $this->service->action);
+        $this->assertSame(PurchaseType::TYPE_PAID, $this->service->params['purchase_type']);
+        $this->assertSame('', $this->service->params['query']);
+    }
+
+    public function test_getAllFreePlugins_shouldFetchOnlyFreePlugins()
+    {
+        $this->plugins->getAllFreePlugins();
+        $this->assertSame('plugins', $this->service->action);
+        $this->assertSame(PurchaseType::TYPE_FREE, $this->service->params['purchase_type']);
+        $this->assertSame('', $this->service->params['query']);
+    }
+
+    public function test_getAllPlugins_shouldFetchFreeAndPaidPlugins()
+    {
+        $this->plugins->getAllPlugins();
+        $this->assertSame('plugins', $this->service->action);
+        $this->assertSame(PurchaseType::TYPE_ALL, $this->service->params['purchase_type']);
+        $this->assertSame('', $this->service->params['query']);
+    }
+
+    public function test_getAllThemes_shouldFetchFreeAndPaidThemes()
+    {
+        $this->plugins->getAllThemes();
+        $this->assertSame('themes', $this->service->action);
+        $this->assertSame(PurchaseType::TYPE_ALL, $this->service->params['purchase_type']);
+        $this->assertSame('', $this->service->params['query']);
+    }
+
+    public function test_getPluginsHavingUpdate_shouldReturnEnrichedPluginUpdatesForPluginsFoundOnTheMarketplace()
+    {
+        $this->service->returnFixture(array(
+            'v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json',
+            'emptyObjectResponse.json',
+            'emptyObjectResponse.json',
+            'emptyObjectResponse.json',
+            'emptyObjectResponse.json',
+            'emptyObjectResponse.json',
+            'emptyObjectResponse.json',
+            'emptyObjectResponse.json',
+            'v2.0_plugins_TreemapVisualization_info.json'
+        ));
+        $apis = array();
+        $this->service->setOnFetchCallback(function ($action, $params) use (&$apis) {
+            $apis[] = $action;
+        });
+
+        $updates = $this->plugins->getPluginsHavingUpdate();
+        $pluginManager = Plugin\Manager::getInstance();
+        $pluginName = 'TreemapVisualization';
+
+        $this->assertCount(1, $updates);
+        $plugin = $updates[0];
+        $this->assertSame($pluginName, $plugin['name']);
+        $this->assertSame($pluginManager->getLoadedPlugin($pluginName)->getVersion(), $plugin['currentVersion']);
+        $this->assertSame($pluginManager->isPluginActivated($pluginName), $plugin['isActivated']);
+        $this->assertSame(array(), $plugin['missingRequirements']);
+         $this->assertSame('https://github.com/piwik/plugin-TreemapVisualization/commits/1.0.1', $plugin['repositoryChangelogUrl']);
+
+        $expectedApiCalls = array(
+            'plugins/checkUpdates',
+            'plugins/AnonymousPiwikUsageMeasurement/info',
+            'plugins/CustomAlerts/info',
+            'plugins/CustomDimensions/info',
+            'plugins/LogViewer/info',
+            'plugins/QueuedTracking/info',
+            'plugins/SecurityInfo/info',
+            'plugins/TasksTimetable/info',
+            'plugins/TreemapVisualization/info'
+        );
+        $this->assertSame($expectedApiCalls, $apis);
+    }
+
+    private function getExpectedPluginNames()
+    {
+        return array (
+            'AdminNotification',
+            'AdvancedCampaignReporting',
+            'AnonymousPiwikUsageMeasurement',
+            'ApiGetWithSitesInfo',
+            'Bandwidth',
+            'Barometer',
+            'Chat',
+            'ClickHeat',
+            'Counter',
+            'CustomAlerts',
+            'CustomDimensions',
+            'CustomOptOut',
+            'CustomTrackerJs',
+            'ExcludeByDDNS',
+            'FeedAnnotation',
+            'FlagCounter',
+            'FreeMobileMessaging',
+            'GoogleAuthenticator',
+            'GrabGravatar',
+            'InterSites',
+            'IntranetGeoIP',
+            'Ip2Hostname',
+            'IP2Location',
+            'IPv6Usage',
+            'kDebug',
+            'LdapConnection',
+            'LdapVisitorInfo',
+            'LiveTab',
+            'LoginHttpAuth',
+            'LoginRevokable',
+            'LogViewer',
+            'page2images-visual-link',
+            'PaidPlugin1',
+            'PerformanceInfo',
+            'PerformanceMonitor',
+            'PlatformsReport',
+            'QueuedTracking',
+            'ReferrersManager',
+            'RerUserDates',
+            'SecurityInfo',
+            'ServerMonitor',
+            'ShibbolethLogin',
+            'ShortcodeTracker',
+            'SimplePageBuilder',
+            'SimpleSysMon',
+            'SiteMigration',
+            'SnoopyBehavioralScoring',
+            'TasksTimetable',
+            'TopPagesByActions',
+            'TrackingCodeCustomizer',
+            'TreemapVisualization',
+            'UptimeRobotMonitor',
+            'VisitorAvatar',
+            'WebsiteGroups'
+        );
+    }
+}
diff --git a/plugins/Marketplace/tests/Integration/ServiceTest.php b/plugins/Marketplace/tests/Integration/ServiceTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..703ef77367589ba58a6c56c73239e301273ed0fc
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/ServiceTest.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Api;
+
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as TestService;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group Service
+ * @group ServiceTest
+ */
+class ServiceTest extends IntegrationTestCase
+{
+
+    /**
+     * @var TestService
+     */
+    private $service;
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        $this->service = new TestService();
+    }
+
+    /**
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+     * @expectedExceptionCode 101
+     * @expectedExceptionMessage Requested plugin does not exist.
+     */
+    public function test_fetch_throwsApiError_WhenMarketplaceReturnsAnError()
+    {
+        $this->service->returnFixture('v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json');
+        $this->service->fetch('plugins/CustomPlugin1/info', array());
+    }
+
+    /**
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+     * @expectedExceptionCode 100
+     * @expectedExceptionMessage There was an error reading the response from the Marketplace
+     */
+    public function test_fetch_throwsHttpError_WhenMarketplaceReturnsNoResultWhichMeansHttpError()
+    {
+        $this->service->setOnDownloadCallback(function () {
+            return null;
+        });
+        $this->service->fetch('plugins/CustomPlugin1/info', array());
+    }
+
+    public function test_fetch_jsonDecodesTheHttpResponse()
+    {
+        $this->service->returnFixture('v2.0_consumer-access_token-consumer1_paid2_custom1.json');
+        $consumer = $this->service->fetch('consumer', array());
+        $this->assertTrue(is_array($consumer));
+        $this->assertNotEmpty($consumer);
+    }
+
+}
diff --git a/plugins/CorePluginsAdmin/tests/Integration/UpdateCommunicationTest.php b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
similarity index 95%
rename from plugins/CorePluginsAdmin/tests/Integration/UpdateCommunicationTest.php
rename to plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
index 06681f404dc0cce46bc3cffe8165ae0edb6d48a8..bb7f46fba7ca51933f8fb68c333870bb060d82e5 100644
--- a/plugins/CorePluginsAdmin/tests/Integration/UpdateCommunicationTest.php
+++ b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
@@ -6,20 +6,19 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
 
-namespace Piwik\Plugins\CorePluginsAdmin\tests\Integration;
+namespace Piwik\Plugins\Marketplace\tests\Integration;
 
 use Piwik\Config;
 use Piwik\Container\StaticContainer;
 use Piwik\Option;
-use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication;
 use Piwik\Plugins\CoreUpdater\SystemSettings;
+use Piwik\Plugins\Marketplace\UpdateCommunication;
 use Piwik\Tests\Framework\Fixture;
 use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
 
 /**
- * Class Plugins_CorePluginsAdmin_UpdateCommunicationTest
- *
  * @group Plugins
+ * @group Marketplace
  */
 class UpdateCommunicationTest extends IntegrationTestCase
 {
@@ -155,7 +154,7 @@ Installation_HappyAnalysing";
      */
     private function getCommunicationMock($pluginsHavingUpdate)
     {
-        $mock = $this->getMockBuilder('\Piwik\Plugins\CorePluginsAdmin\UpdateCommunication')
+        $mock = $this->getMockBuilder('\Piwik\Plugins\Marketplace\UpdateCommunication')
                      ->setMethods(array('getPluginsHavingUpdate', 'sendEmailNotification'))
                      ->setConstructorArgs(array($this->settings))
                      ->getMock();
diff --git a/plugins/Marketplace/tests/System/Api/ClientTest.php b/plugins/Marketplace/tests/System/Api/ClientTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e38fb809e1132154e13603b12f6362f455432343
--- /dev/null
+++ b/plugins/Marketplace/tests/System/Api/ClientTest.php
@@ -0,0 +1,299 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\System\Api;
+
+use Piwik\Cache;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Plugins\Marketplace\Environment;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+use Piwik\Version;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as TestService;
+use Psr\Log\NullLogger;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group ClientTest
+ * @group Client
+ */
+class ClientTest extends SystemTestCase
+{
+    private $domain = 'http://plugins.piwik.org';
+
+    /**
+     * @var Client
+     */
+    private $client;
+
+    /**
+     * @var Environment
+     */
+    private $environment;
+
+    public function setUp()
+    {
+        $releaseChannels = new Plugin\ReleaseChannels(Plugin\Manager::getInstance());
+        $this->environment = new Environment($releaseChannels);
+
+        $this->client = $this->buildClient();
+        $this->getCache()->flushAll();
+    }
+
+    public function test_getPluginInfo_existingPluginOnTheMarketplace()
+    {
+        $plugin = $this->client->getPluginInfo('SecurityInfo');
+
+        $expectedPluginKeys = array(
+            'name',
+            'displayName',
+            'owner',
+            'description',
+            'homepage',
+            'createdDateTime',
+            'donate',
+            'support',
+            'isTheme',
+            'keywords',
+            'basePrice',
+            'authors',
+            'repositoryUrl',
+            'lastUpdated',
+            'latestVersion',
+            'numDownloads',
+            'screenshots',
+            'previews',
+            'activity',
+            'featured',
+            'isFree',
+            'isPaid',
+            'isCustomPlugin',
+            'shop',
+            'versions',
+            'isDownloadable',
+            'consumer');
+
+        $this->assertNotEmpty($plugin);
+        $this->assertEquals($expectedPluginKeys, array_keys($plugin));
+        $this->assertSame('SecurityInfo', $plugin['name']);
+        $this->assertSame('piwik', $plugin['owner']);
+        $this->assertTrue(is_array($plugin['keywords']));
+        $this->assertNotEmpty($plugin['authors']);
+        $this->assertGreaterThan(1000, $plugin['numDownloads']);
+        $this->assertTrue($plugin['isFree']);
+        $this->assertFalse($plugin['isPaid']);
+        $this->assertFalse($plugin['isCustomPlugin']);
+        $this->assertNotEmpty($plugin['versions']);
+
+        $lastVersion = $plugin['versions'][count($plugin['versions']) - 1];
+        $this->assertEquals(array('name', 'release', 'requires', 'numDownloads', 'license', 'repositoryChangelogUrl', 'readmeHtml', 'download'), array_keys($lastVersion));
+        $this->assertNotEmpty($lastVersion['download']);
+    }
+
+    /**
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Exception
+     * @expectedExceptionMessage Requested plugin does not exist.
+     */
+    public function test_getPluginInfo_shouldThrowException_IfPluginDoesNotExistOnMarketplace()
+    {
+        $this->client->getPluginInfo('NotExistingPlugIn');
+    }
+
+    public function test_getConsumer_shouldReturnNullAndNotThrowException_IfNotAuthorized()
+    {
+        $this->assertNull($this->client->getConsumer());
+    }
+
+    public function test_isValidConsumer_shouldReturnFalseAndNotThrowException_IfNotAuthorized()
+    {
+        $this->assertFalse($this->client->isValidConsumer());
+    }
+
+    public function test_searchForPlugins_requestAll()
+    {
+        $plugins = $this->client->searchForPlugins($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+        $this->assertGreaterThan(15, count($plugins));
+
+        foreach ($plugins as $plugin) {
+            $this->assertNotEmpty($plugin['name']);
+            $this->assertFalse($plugin['isTheme']);
+        }
+    }
+
+    public function test_searchForPlugins_onlyFree()
+    {
+        $plugins = $this->client->searchForPlugins($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_FREE);
+
+        $this->assertGreaterThan(15, count($plugins));
+
+        foreach ($plugins as $plugin) {
+            $this->assertTrue($plugin['isFree']);
+            $this->assertFalse($plugin['isPaid']);
+            $this->assertFalse($plugin['isTheme']);
+        }
+    }
+
+    public function test_searchForPlugins_onlyPaid()
+    {
+        $plugins = $this->client->searchForPlugins($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_PAID);
+
+        $this->assertLessThan(30, count($plugins));
+
+        foreach ($plugins as $plugin) {
+            $this->assertFalse($plugin['isFree']);
+            $this->assertTrue($plugin['isPaid']);
+            $this->assertFalse($plugin['isTheme']);
+        }
+    }
+
+    public function test_searchForPlugins_withKeyword()
+    {
+        $plugins = $this->client->searchForPlugins($keywords = 'login', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+        $this->assertLessThan(30, count($plugins));
+
+        foreach ($plugins as $plugin) {
+            $this->assertContains($keywords, $plugin['keywords']);
+        }
+    }
+
+    public function test_searchForThemes_requestAll()
+    {
+        $plugins = $this->client->searchForThemes($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+        $this->assertGreaterThanOrEqual(1, count($plugins));
+        $this->assertLessThan(50, count($plugins));
+
+        foreach ($plugins as $plugin) {
+            $this->assertNotEmpty($plugin['name']);
+            $this->assertTrue($plugin['isTheme']);
+        }
+    }
+
+    public function test_getDownloadUrl()
+    {
+        $url = $this->client->getDownloadUrl('SecurityInfo');
+
+        $start = $this->domain . '/api/2.0/plugins/SecurityInfo/download/';
+        $end   = '?coreVersion=' . Version::VERSION;
+
+        $this->assertStringStartsWith($start, $url);
+        $this->assertStringEndsWith($end, $url);
+
+        $version = str_replace(array($start, $end), '', $url);
+
+        $this->assertNotEmpty($version);
+        $this->assertRegExp('/\d+\.\d+\.\d+/', $version);
+    }
+
+    public function test_clientResponse_shouldBeCached()
+    {
+        $params = array(
+            'keywords' => 'login',
+            'purchase_type' => '',
+            'query' => '',
+            'sort' => '',
+            'release_channel' => 'latest_stable',
+            'prefer_stable' => 1,
+            'piwik' => Version::VERSION,
+            'php' => phpversion(),
+            'mysql' => $this->environment->getMySQLVersion(),
+            'num_users' => $this->environment->getNumUsers(),
+            'num_websites' => $this->environment->getNumWebsites()
+        );
+        $id = 'marketplace.api.2.0.plugins.' . md5(http_build_query($params));
+
+        $cache = $this->getCache();
+        $this->assertFalse($cache->contains($id));
+
+        $this->client->searchForPlugins($keywords = 'login', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+        $this->assertTrue($cache->contains($id));
+        $cachedPlugins = $cache->fetch($id);
+
+        $this->assertInternalType('array', $cachedPlugins);
+        $this->assertNotEmpty($cachedPlugins);
+        $this->assertGreaterThan(30, $cachedPlugins);
+    }
+
+    public function test_cachedClientResponse_shouldBeReturned()
+    {
+        $params = array(
+            'keywords' => 'login',
+            'purchase_type' => '',
+            'query' => '',
+            'sort' => '',
+            'release_channel' => 'latest_stable',
+            'prefer_stable' => 1,
+            'piwik' => Version::VERSION,
+            'php' => phpversion(),
+            'mysql' => $this->environment->getMySQLVersion(),
+            'num_users' => $this->environment->getNumUsers(),
+            'num_websites' => $this->environment->getNumWebsites());
+        $id = 'marketplace.api.2.0.plugins.' . md5(http_build_query($params));
+
+        $cache = $this->getCache();
+        $cache->save($id, array('plugins' => array(array('name' => 'foobar'))));
+
+        $result = $this->client->searchForPlugins($keywords = 'login', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+        $this->assertSame(array(array('name' => 'foobar')), $result);
+    }
+
+    public function test_getInfoOfPluginsHavingUpdate()
+    {
+        $service = new TestService($this->domain);
+        $client = $this->buildClient($service);
+
+        $pluginTest = array();
+        if (!Plugin\Manager::getInstance()->isPluginLoaded('CustomAlerts')) {
+            $pluginTest[] = Plugin\Manager::getInstance()->loadPlugin('CustomAlerts');
+        } else {
+            $pluginTest[] = Plugin\Manager::getInstance()->getLoadedPlugin('CustomAlerts');
+        }
+
+        $client->getInfoOfPluginsHavingUpdate($pluginTest);
+
+        $this->assertSame('plugins/checkUpdates', $service->action);
+        $this->assertSame(array('plugins', 'release_channel', 'prefer_stable', 'piwik', 'php', 'mysql', 'num_users', 'num_websites'), array_keys($service->params));
+
+        $plugins = $service->params['plugins'];
+        $this->assertInternalType('string', $plugins);
+        $this->assertJson($plugins);
+        $plugins = json_decode($plugins, true);
+
+        $names = array(
+            'CustomAlerts' => true,
+        );
+        foreach ($plugins['plugins'] as $plugin) {
+            $this->assertNotEmpty($plugin['version']);
+            unset($names[$plugin['name']]);
+        }
+
+        $this->assertEmpty($names);
+    }
+
+    private function buildClient($service = null)
+    {
+        if (!isset($service)) {
+            $service = new Service($this->domain);
+        }
+
+        return new Client($service, $this->getCache(), new NullLogger(), $this->environment);
+    }
+
+    private function getCache()
+    {
+        return Cache::getLazyCache();
+    }
+
+}
diff --git a/plugins/Marketplace/tests/System/Api/ServiceTest.php b/plugins/Marketplace/tests/System/Api/ServiceTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6a4b4dab29a789729ffe49330afde76e75f157b8
--- /dev/null
+++ b/plugins/Marketplace/tests/System/Api/ServiceTest.php
@@ -0,0 +1,165 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\System\Api;
+
+use Piwik\Container\StaticContainer;
+use Piwik\Filesystem;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group ServiceTest
+ * @group Service
+ */
+class ServiceTest extends SystemTestCase
+{
+    private $domain = 'http://plugins.piwik.org';
+
+    public function test_shouldUseVersion2()
+    {
+        $service = $this->buildService();
+        $this->assertSame('2.0', $service->getVersion());
+    }
+
+    public function test_getDomain_shouldReturnPassedDomain()
+    {
+        $service = $this->buildService();
+        $this->assertSame($this->domain, $service->getDomain());
+    }
+
+    public function test_authenticate_getAccessToken_shouldSaveToken_IfOnlyHasAlNumValues()
+    {
+        $service = $this->buildService();
+        $service->authenticate('123456789abcdefghij');
+        $this->assertSame('123456789abcdefghij', $service->getAccessToken());
+    }
+
+    public function test_hasAccessToken()
+    {
+        $service = $this->buildService();
+        $this->assertFalse($service->hasAccessToken());
+        $service->authenticate('123456789abcdefghij');
+        $this->assertTrue($service->hasAccessToken());
+    }
+
+    public function test_authenticate_getAccessToken_emptyTokenShouldUnsetToken()
+    {
+        $service = $this->buildService();
+        $service->authenticate('');
+        $this->assertNull($service->getAccessToken());
+    }
+
+    public function test_authenticate_getAccessToken_invalidTokenContainingInvalidCharactersShouldBeIgnored()
+    {
+        $service = $this->buildService();
+        $service->authenticate('123_-4?');
+        $this->assertNull($service->getAccessToken());
+    }
+
+    public function test_fetch_shouldCallMarketplaceApiWithActionAndReturnArrays()
+    {
+        $service = $this->buildService();
+        $response = $service->fetch('plugins', array());
+
+        $this->assertTrue(is_array($response));
+        $this->assertArrayHasKey('plugins', $response);
+        $this->assertGreaterThanOrEqual(30, count($response['plugins']));
+        foreach ($response['plugins'] as $plugin) {
+            $this->assertArrayHasKey('name', $plugin);
+        }
+    }
+
+    public function test_fetch_shouldCallMarketplaceApiWithGivenParamsAndReturnArrays()
+    {
+        $keyword = 'login';
+        $service = $this->buildService();
+        $response = $service->fetch('plugins', array('keywords' => $keyword));
+
+        $this->assertLessThan(20, count($response['plugins']));
+        foreach ($response['plugins'] as $plugin) {
+            $this->assertContains($keyword, $plugin['keywords']);
+        }
+    }
+
+    /**
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+     * @expectedExceptionMessage Not authenticated
+     * @expectedExceptionCode 101
+     */
+    public function test_fetch_shouldThrowException_WhenNotBeingAuthenticated()
+    {
+        $service = $this->buildService();
+        $service->fetch('consumer', array());
+    }
+
+    /**
+     * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+     * @expectedExceptionMessage Not authenticated
+     * @expectedExceptionCode 101
+     */
+    public function test_fetch_shouldThrowException_WhenBeingAuthenticatedWithInvalidTokens()
+    {
+        $service = $this->buildService();
+        $service->authenticate('1234567890');
+        $service->fetch('consumer', array());
+    }
+
+    public function test_download_shouldReturnRawResultForAbsoluteUrl()
+    {
+        $service = $this->buildService();
+        $response = $service->download($this->domain . '/api/2.0/plugins');
+
+        $this->assertInternalType('string', $response);
+        $this->assertNotEmpty($response);
+        $this->assertStringStartsWith('{"plugins"', $response);
+    }
+
+    public function test_download_shouldSaveResultInFileIfPathGiven()
+    {
+        $path = StaticContainer::get('path.tmp') . '/marketplace_test_file.json';
+
+        Filesystem::deleteFileIfExists($path);
+
+        $service = $this->buildService();
+        $response = $service->download($this->domain . '/api/2.0/plugins', $path);
+
+        $this->assertTrue($response);
+        $this->assertFileExists($path);
+        $content = file_get_contents($path);
+        $this->assertNotEmpty($content);
+        $this->assertStringStartsWith('{"plugins"', $content);
+
+        Filesystem::deleteFileIfExists($path);
+    }
+
+    public function test_timeout_invalidService_ShouldFailIfNotReachable()
+    {
+        $start = time();
+
+        $service = $this->buildService();
+        try {
+            $service->download('http://notexisting49.plugins.piwk.org/api/2.0/plugins', null, $timeout = 1);
+            $this->fail('An expected exception has not been thrown');
+        } catch (\Exception $e) {
+
+        }
+
+        $diff = time() - $start;
+        $this->assertLessThanOrEqual(2, $diff);
+    }
+
+    private function buildService()
+    {
+        return new Service($this->domain);
+    }
+
+
+}
diff --git a/plugins/Marketplace/tests/Unit/ConsumerTest.php b/plugins/Marketplace/tests/Unit/ConsumerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b3e4f144f65d5172ae4494d8146706e8f0015428
--- /dev/null
+++ b/plugins/Marketplace/tests/Unit/ConsumerTest.php
@@ -0,0 +1,153 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Unit;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer as ConsumerBuilder;
+
+/**
+ * @group Marketplace
+ * @group ConsumerTest
+ * @group Consumer
+ * @group Plugins
+ */
+class ConsumerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Service
+     */
+    private $service;
+
+    public function setUp()
+    {
+        $this->service = new Service();
+    }
+
+    /**
+     * @dataProvider getConsumerNotAuthenticated
+     */
+    public function test_isValidConsumer_shouldReturnFalse_WhenNotAuthenticedBecauseNoTokenSetOrInvalidToken($fixture)
+    {
+        $this->service->returnFixture($fixture);
+        $this->assertFalse($this->buildConsumer()->isValidConsumer());
+    }
+
+    /**
+     * @dataProvider getConsumerAuthenticated
+     */
+    public function test_isValidConsumer_shouldReturnTrue_WhenValidTokenGiven($fixture)
+    {
+        $this->service->returnFixture($fixture);
+        $this->assertTrue($this->buildConsumer()->isValidConsumer());
+    }
+
+    public function test_getConsumer_shouldReturnConsumerInformation_WhenValid()
+    {
+        $this->service->returnFixture('v2.0_consumer-access_token-consumer1_paid2_custom1.json');
+
+        $expected = array (
+            'licenses' =>
+                array (
+                    0 =>
+                        array (
+                            'startDate' => '2014-05-27 04:46:05',
+                            'endDate' => '2014-06-01 06:22:35',
+                            'nextPaymentDate' => NULL,
+                            'status' => 'Cancelled',
+                            'productType' => 'Up to 4 users',
+                            'isValid' => false,
+                            'isExceeded' => false,
+                            'isExpiredSoon' => false,
+                            'plugin' => array('name' => 'PaidPlugin1', 'displayName' => 'Paid Plugin 1', 'htmlUrl' => 'https://plugins.piwik.org/PaidPlugin1'),
+                        ),
+                    1 =>
+                        array (
+                            'startDate' => '2016-05-20 04:46:05',
+                            'endDate' => '2030-05-27 11:03:06',
+                            'nextPaymentDate' => '2030-05-27 11:03:06',
+                            'status' => 'Active',
+                            'productType' => '5 to 15 users',
+                            'isValid' => true,
+                            'isExceeded' => NULL,
+                            'isExpiredSoon' => false,
+                            'plugin' => array('name' => 'PaidPlugin2', 'displayName' => 'Paid Plugin 2', 'htmlUrl' => 'https://plugins.piwik.org/PaidPlugin2'),
+                        ),
+                    2 =>
+                        array (
+                            'startDate' => '2016-05-25 04:46:05',
+                            'endDate' => '2030-06-03 11:03:06',
+                            'nextPaymentDate' => '2030-06-03 11:03:06',
+                            'status' => 'Active',
+                            'productType' => 'Up to 4 users',
+                            'isValid' => true,
+                            'isExceeded' => NULL,
+                            'isExpiredSoon' => false,
+                            'plugin' => array('name' => 'CustomPlugin1', 'displayName' => 'Custom Plugin 1', 'htmlUrl' => ''),
+                        ),
+            ),
+            'loginUrl' => 'https://shop.piwik.org/my-account',
+        );
+        $this->assertEquals($expected, $this->buildConsumer()->getConsumer());
+    }
+
+    public function test_getConsumer_shouldNotReturnAnyInformationWhenNotAuthenticated()
+    {
+        $this->service->returnFixture('v2.0_consumer-access_token-notexistingtoken.json');
+
+        $this->assertSame(array(), $this->buildConsumer()->getConsumer());
+    }
+
+    public function test_getConsumer_shouldNotReturnInformationWhenAuthenticatedButNoLicense()
+    {
+        $this->service->returnFixture('v2.0_consumer-access_token-validbutnolicense.json');
+
+        $expected = array(
+            'licenses' => array(),
+            'loginUrl' => 'https://shop.piwik.org/my-account'
+        );
+
+        $this->assertSame($expected, $this->buildConsumer()->getConsumer());
+    }
+
+    public function getConsumerNotAuthenticated()
+    {
+        return array(
+            array('v2.0_consumer_validate.json'),
+            array('v2.0_consumer_validate-access_token-notexistingtoken.json'),
+        );
+    }
+
+    public function getConsumerAuthenticated()
+    {
+        return array(
+            array('v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json'),
+            array('v2.0_consumer_validate-access_token-consumer2_paid1.json'),
+            array('v2.0_consumer_validate-access_token-validbutnolicense.json') // valid token but no license
+        );
+    }
+
+    public function test_buildInvalidLicenseKey()
+    {
+        $isValid = Consumer::buildNoLicense()->isValidConsumer();
+
+        $this->assertFalse($isValid);
+    }
+
+    public function test_buildValidLicenseKey()
+    {
+        $isValid = Consumer::buildValidLicense()->isValidConsumer();
+
+        $this->assertTrue($isValid);
+    }
+
+    private function buildConsumer()
+    {
+        return ConsumerBuilder::build($this->service);
+    }
+}
diff --git a/plugins/Marketplace/tests/resources/emptyObjectResponse.json b/plugins/Marketplace/tests/resources/emptyObjectResponse.json
new file mode 100644
index 0000000000000000000000000000000000000000..9e26dfeeb6e641a33dae4961196235bdb965b21b
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/emptyObjectResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000000000000000000000000000000000..be9dbf2e84edb4eae6b4c6f0c922f2e69832e399
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,21 @@
+{"licenses":[{"startDate":"2014-05-27 04:46:05",
+  "endDate":"2014-06-01 06:22:35",
+  "nextPaymentDate":null,"status":"Cancelled",
+  "productType":"Up to 4 users",
+  "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+    "displayName":"Paid Plugin 1",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}},{"startDate":"2016-05-20 04:46:05",
+  "endDate":"2030-05-27 11:03:06",
+  "nextPaymentDate":"2030-05-27 11:03:06",
+  "status":"Active",
+  "productType":"5 to 15 users",
+  "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin2",
+    "displayName":"Paid Plugin 2",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin2"}},{"startDate":"2016-05-25 04:46:05",
+  "endDate":"2030-06-03 11:03:06",
+  "nextPaymentDate":"2030-06-03 11:03:06",
+  "status":"Active",
+  "productType":"Up to 4 users",
+  "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin1",
+    "displayName":"Custom Plugin 1",
+    "htmlUrl":""}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f5fce539d4e5048b9706f1cc6de98e54c606fdc0
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json
@@ -0,0 +1,7 @@
+{"licenses":[{"startDate":"2016-05-21 04:46:05",
+  "endDate":"2029-05-27 11:03:06",
+  "nextPaymentDate":null,"status":"Pending cancellation",
+  "productType":"Up to 4 users",
+  "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+    "displayName":"Paid Plugin 1",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json
new file mode 100644
index 0000000000000000000000000000000000000000..225c30215941aaf9eb940b1767043f18eb0b3f77
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json
@@ -0,0 +1,27 @@
+{"licenses":[{"startDate":"2016-05-22 04:46:05",
+  "endDate":"2030-05-29 11:03:06",
+  "nextPaymentDate":"2030-05-29 11:03:06",
+  "status":"Active",
+  "productType":"Unlimited users",
+  "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+    "displayName":"Paid Plugin 1",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}},{"startDate":"2016-05-23 04:46:05",
+  "endDate":"2030-06-01 11:03:06",
+  "nextPaymentDate":null,"status":"Cancelled",
+  "productType":"Up to 4 users",
+  "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin1",
+    "displayName":"Custom Plugin 1",
+    "htmlUrl":""}},{"startDate":"2016-05-23 04:46:05",
+  "endDate":"2030-06-01 11:03:06",
+  "nextPaymentDate":null,"status":"Cancelled",
+  "productType":"Up to 4 users",
+  "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin2",
+    "displayName":"Paid Plugin 2",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin2"}},{"startDate":"2016-05-24 04:46:05",
+  "endDate":"2030-06-02 11:03:06",
+  "nextPaymentDate":"2030-06-02 11:03:06",
+  "status":"Active",
+  "productType":"5 to 15 users",
+  "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin2",
+    "displayName":"Custom Plugin 2",
+    "htmlUrl":""}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json
new file mode 100644
index 0000000000000000000000000000000000000000..d9651355dbb560a764b69b160cb34d7f4ce03f49
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json
@@ -0,0 +1 @@
+{"error":"Not authenticated"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json
new file mode 100644
index 0000000000000000000000000000000000000000..4f7b644c44fbfcabcf8ebacbcada98c4458846fc
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json
@@ -0,0 +1 @@
+{"licenses":[],"loginUrl":"https:\/\/shop.piwik.org\/my-account"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce325fabaef76908ef2df430168c97d3434be555
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,21 @@
+{"licenses":[{"startDate":"2014-05-27 04:46:05",
+  "endDate":"2014-06-01 06:22:35",
+  "nextPaymentDate":null,"status":"Cancelled",
+  "productType":"Up to 4 users",
+  "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+    "displayName":"Paid Plugin 1",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}},{"startDate":"2016-05-20 04:46:05",
+  "endDate":"2030-05-27 11:03:06",
+  "nextPaymentDate":"2030-05-27 11:03:06",
+  "status":"Active",
+  "productType":"5 to 15 users",
+  "isValid":true,"isExceeded":true,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin2",
+    "displayName":"Paid Plugin 2",
+    "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin2"}},{"startDate":"2016-05-25 04:46:05",
+  "endDate":"2030-06-03 11:03:06",
+  "nextPaymentDate":"2030-06-03 11:03:06",
+  "status":"Active",
+  "productType":"Up to 4 users",
+  "isValid":true,"isExceeded":true,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin1",
+    "displayName":"Custom Plugin 1",
+    "htmlUrl":""}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f8176db609c4ed83bb463debd672e023c3a7738a
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1 @@
+{"isValid":true}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f8176db609c4ed83bb463debd672e023c3a7738a
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json
@@ -0,0 +1 @@
+{"isValid":true}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json
new file mode 100644
index 0000000000000000000000000000000000000000..f8176db609c4ed83bb463debd672e023c3a7738a
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json
@@ -0,0 +1 @@
+{"isValid":true}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json
new file mode 100644
index 0000000000000000000000000000000000000000..2cc9915708903fab36b2696115bae1562bba1de8
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json
@@ -0,0 +1 @@
+{"isValid":false}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json
new file mode 100644
index 0000000000000000000000000000000000000000..f8176db609c4ed83bb463debd672e023c3a7738a
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json
@@ -0,0 +1 @@
+{"isValid":true}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate.json
new file mode 100644
index 0000000000000000000000000000000000000000..2cc9915708903fab36b2696115bae1562bba1de8
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate.json
@@ -0,0 +1 @@
+{"isValid":false}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_info.json b/plugins/Marketplace/tests/resources/v2.0_info.json
new file mode 100644
index 0000000000000000000000000000000000000000..5e93a342cfd1d76b8078ba91cb0d29a932b1f0d8
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_info.json
@@ -0,0 +1,3 @@
+{"pluginsUrl":"http:\/\/plugins.piwik.org\/",
+  "themesUrl":"http:\/\/themes.piwik.org\/",
+  "loginUrl":"https:\/\/shop.piwik.org\/my-account"}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000000000000000000000000000000000..50149150e6c3ca83dcc149011637b450d99006e8
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,142 @@
+{"plugins":[{"name":"CustomPlugin1",
+  "displayName":"Custom Plugin 1",
+  "owner":"PiwikPRO",
+  "description":"This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a previe",
+  "homepage":"https:\/\/piwik.org\/recommends\/piwik-pro-compared-to-piwik-community\/",
+  "createdDateTime":"2014-12-23 01:19:22",
+  "donate":{},"support":[],"isTheme":false,"keywords":["page2images",
+    "website",
+    "screenshot"],"basePrice":0,"authors":[{"name":"SuzhouKada",
+    "email":"test5@example.com",
+    "homepage":"http:\/\/www.page2images.com"}],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/piwik",
+  "lastUpdated":"2014-12-23 01:19:22",
+  "latestVersion":"1.0.4",
+  "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz.png",
+    "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_02.png",
+    "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_03.png"],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":true,"shop":null,"versions":[{"name":"1.0.4",
+    "release":"2014-12-23 01:19:22",
+    "requires":{},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.<\/p>\n\n<p><img src=\"https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png\" alt=\"visual-link-screenshot-on-domz.png\" \/><\/p>\n\n",
+      "faq":"<p>Who need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https.<\/p>",
+      "documentation":"",
+      "changelog":"<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/CustomPlugin1\/download\/1.0.4"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-25 04:46:05",
+    "endDate":"2030-06-03 11:03:06",
+    "nextPaymentDate":"2030-06-03 11:03:06",
+    "status":"Active",
+    "productType":"Up to 4 users",
+    "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/paidplugin1.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/forum.paidplugin1.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"paidplugin1@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/paidplugin1",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/paidplugin1.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["cache",
+    "delete",
+    "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+    "email":"test3@example.com",
+    "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+    "variations":[{"price":"150",
+      "prettyPrice":"150\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+      "prettyPrice":"$175",
+      "currency":"USD",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+      "prettyPrice":"300\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+      "prettyPrice":"$345",
+      "currency":"USD",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+      "prettyPrice":"600\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+      "prettyPrice":"$690",
+      "currency":"USD",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+      "height":200}},"versions":[{"name":"1.1",
+    "release":null,"requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2014-05-27 04:46:05",
+    "endDate":"2014-06-01 06:22:35",
+    "nextPaymentDate":null,"status":"Cancelled",
+    "productType":"Up to 4 users",
+    "isValid":false,"isExceeded":false,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin2",
+  "displayName":"Paid Plugin 2",
+  "owner":"TestVendor",
+  "description":"Adds a profile photo from Gravatar based on the email address stored in the User Id field.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-07-24 13:15:01",
+  "donate":{"paypal":"test4@example.com",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":["GrabGravatar",
+    "avatar",
+    "photo",
+    "profile",
+    "visitor"],"basePrice":250,"authors":[{"name":"Alnoor Pirani",
+    "email":"test2@example.com",
+    "homepage":"http:\/\/alnoorpirani.com\/"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin2",
+  "lastUpdated":"2015-07-24 13:56:30",
+  "latestVersion":"0.2.0",
+  "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/GrabGravatar\/images\/0.2.0\/Gravatar_replaces_default_avatar_when_email_known.png"],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"http:\/\/demo23.paidplugin2.org"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.2.0",
+    "release":"2015-07-24 13:56:30",
+    "requires":{"piwik":">=2.11.2"},"numDownloads":null,"license":{"name":"CommercialLicense",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>A Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.<\/p>\n\n",
+      "faq":"<p><strong>What information do I need to make this plugin work?<\/strong>\nMake sure you are capturing the email address for your visitors in the User Id field.<\/p>\n\n<p><strong>Why do some of my visitors just display the Gravatar logo instead of a photo?<\/strong>\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.11 Fixed screenshot filename<\/li>\n<li>0.1.1 Add screenshots<\/li>\n<li>0.1.0 First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/PaidPlugin2\/download\/0.2.0"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-20 04:46:05",
+    "endDate":"2030-05-27 11:03:06",
+    "nextPaymentDate":"2030-05-27 11:03:06",
+    "status":"Active",
+    "productType":"5 to 15 users",
+    "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000000000000000000000000000000000..95ee07e2f565b98ee852aeb8abc02e82e672078e
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json
@@ -0,0 +1,89 @@
+{"plugins":[{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/paidplugin1.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/forum.paidplugin1.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"paidplugin1@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/paidplugin1",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/paidplugin1.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["cache",
+    "delete",
+    "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+    "email":"test3@example.com",
+    "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":"2014-12-23 01:18:20",
+  "latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+    "variations":[{"price":"150",
+      "prettyPrice":"150\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+      "prettyPrice":"$175",
+      "currency":"USD",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+      "prettyPrice":"300\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+      "prettyPrice":"$345",
+      "currency":"USD",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+      "prettyPrice":"600\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+      "prettyPrice":"$690",
+      "currency":"USD",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+      "height":200}},"versions":[{"name":"1.1",
+    "release":"2014-12-23 01:18:20",
+    "requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>~2014~<\/p>\n\n<p>2014-02-21 - Update some more code, added in notification area but it's not quite working yet (TODO - make it work)<\/p>\n\n<p>2014-02-21 - Rebranded to cacheBuster and set version to 1.0, updated code to use a better check for directory seperator<\/p>\n\n<p>2014-02-20 - v2.0\n    - Updated plugin to work with Piwik 2.0.3<\/p>\n\n<p>~2013~\n    Inital creation of plugin at http:\/\/www.spherexx.com under the name ClearCache<\/p>"},"download":"\/api\/2.0\/plugins\/PaidPlugin1\/download\/1.1"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-21 04:46:05",
+    "endDate":"2029-05-27 11:03:06",
+    "nextPaymentDate":null,"status":"Pending cancellation",
+    "productType":"Up to 4 users",
+    "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json
new file mode 100644
index 0000000000000000000000000000000000000000..739dff585599c1b32ce0efd08bb985ca1b37d64c
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json
@@ -0,0 +1,83 @@
+{"plugins":[{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/paidplugin1.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/forum.paidplugin1.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"paidplugin1@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/paidplugin1",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/paidplugin1.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["cache",
+    "delete",
+    "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+    "email":"test3@example.com",
+    "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+    "variations":[{"price":"150",
+      "prettyPrice":"150\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+      "prettyPrice":"$175",
+      "currency":"USD",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+      "prettyPrice":"300\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+      "prettyPrice":"$345",
+      "currency":"USD",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+      "prettyPrice":"600\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+      "prettyPrice":"$690",
+      "currency":"USD",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+      "height":200}},"versions":[{"name":"1.1",
+    "release":null,"requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":null,"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000000000000000000000000000000000..a4fa42813e92d801e1012cf60bd7bd0b10a3d44e
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,141 @@
+{"plugins":[{"name":"CustomPlugin1",
+  "displayName":"Custom Plugin 1",
+  "owner":"PiwikPRO",
+  "description":"This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a previe",
+  "homepage":"https:\/\/piwik.org\/recommends\/piwik-pro-compared-to-piwik-community\/",
+  "createdDateTime":"2014-12-23 01:19:22",
+  "donate":{},"support":[],"isTheme":false,"keywords":["page2images",
+    "website",
+    "screenshot"],"basePrice":0,"authors":[{"name":"SuzhouKada",
+    "email":"test5@example.com",
+    "homepage":"http:\/\/www.page2images.com"}],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/piwik",
+  "lastUpdated":null,"latestVersion":"1.0.4",
+  "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz.png",
+    "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_02.png",
+    "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_03.png"],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":true,"shop":null,"versions":[{"name":"1.0.4",
+    "release":null,"requires":{},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.<\/p>\n\n<p><img src=\"https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png\" alt=\"visual-link-screenshot-on-domz.png\" \/><\/p>\n\n",
+      "faq":"<p>Who need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https.<\/p>",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-25 04:46:05",
+    "endDate":"2030-06-03 11:03:06",
+    "nextPaymentDate":"2030-06-03 11:03:06",
+    "status":"Active",
+    "productType":"Up to 4 users",
+    "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/paidplugin1.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/forum.paidplugin1.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"paidplugin1@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/paidplugin1",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/paidplugin1.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["cache",
+    "delete",
+    "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+    "email":"test3@example.com",
+    "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+    "variations":[{"price":"150",
+      "prettyPrice":"150\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+      "prettyPrice":"$175",
+      "currency":"USD",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD",
+      "cheapest":true,"recommended":false},{"price":"300",
+      "prettyPrice":"300\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+      "prettyPrice":"$345",
+      "currency":"USD",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD",
+      "cheapest":false,"recommended":false},{"price":"600",
+      "prettyPrice":"600\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+      "prettyPrice":"$690",
+      "currency":"USD",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD",
+      "cheapest":false,"recommended":true}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+      "height":200}},"versions":[{"name":"1.1",
+    "release":null,"requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2014-05-27 04:46:05",
+    "endDate":"2014-06-01 06:22:35",
+    "nextPaymentDate":null,"status":"Cancelled",
+    "productType":"Up to 4 users",
+    "isValid":false,"isExceeded":false,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin2",
+  "displayName":"Paid Plugin 2",
+  "owner":"TestVendor",
+  "description":"Adds a profile photo from Gravatar based on the email address stored in the User Id field.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-07-24 13:15:01",
+  "donate":{"paypal":"test4@example.com",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":["GrabGravatar",
+    "avatar",
+    "photo",
+    "profile",
+    "visitor"],"basePrice":250,"authors":[{"name":"Alnoor Pirani",
+    "email":"test2@example.com",
+    "homepage":"http:\/\/alnoorpirani.com\/"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin2",
+  "lastUpdated":null,"latestVersion":"0.2.0",
+  "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/GrabGravatar\/images\/0.2.0\/Gravatar_replaces_default_avatar_when_email_known.png"],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"http:\/\/demo23.paidplugin2.org"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.2.0",
+    "release":null,"requires":{"piwik":">=2.11.2"},"numDownloads":null,"license":{"name":"CommercialLicense",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>A Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.<\/p>\n\n",
+      "faq":"<p><strong>What information do I need to make this plugin work?<\/strong>\nMake sure you are capturing the email address for your visitors in the User Id field.<\/p>\n\n<p><strong>Why do some of my visitors just display the Gravatar logo instead of a photo?<\/strong>\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com<\/p>",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-20 04:46:05",
+    "endDate":"2030-05-27 11:03:06",
+    "nextPaymentDate":"2030-05-27 11:03:06",
+    "status":"Active",
+    "productType":"5 to 15 users",
+    "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000000000000000000000000000000000..0e84886b886f142db5e174a0684c2257fe978f2f
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
@@ -0,0 +1,90 @@
+{"plugins":[{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/paidplugin1.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/forum.paidplugin1.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"paidplugin1@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/paidplugin1",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/paidplugin1.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["cache",
+    "delete",
+    "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+    "email":"test3@example.com",
+    "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+    "variations":[{"price":"150",
+      "prettyPrice":"150\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+      "prettyPrice":"$175",
+      "currency":"USD",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD",
+      "cheapest":true,"recommended":false},{"price":"300",
+      "prettyPrice":"300\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+      "prettyPrice":"$345",
+      "currency":"USD",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD",
+      "cheapest":false,"recommended":false},{"price":"600",
+      "prettyPrice":"600\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+      "prettyPrice":"$690",
+      "currency":"USD",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD",
+      "cheapest":false,"recommended":true}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+      "height":200}},"versions":[{"name":"1.1",
+    "release":null,"requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-21 04:46:05",
+    "endDate":"2029-05-27 11:03:06",
+    "nextPaymentDate":null,"status":"Pending cancellation",
+    "productType":"Up to 4 users",
+    "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json b/plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json
new file mode 100644
index 0000000000000000000000000000000000000000..d8a81e419d9c36a7a8dbff3d2150ac71315367d0
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json
@@ -0,0 +1 @@
+{"plugins":[]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins.json b/plugins/Marketplace/tests/resources/v2.0_plugins.json
new file mode 100644
index 0000000000000000000000000000000000000000..bbd6d9ef1407f7b2f3d383819b6bf91849ca4392
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins.json
@@ -0,0 +1,3011 @@
+{"plugins":[{"name":"AdminNotification",
+  "displayName":"Admin Notification",
+  "owner":"jbrule",
+  "description":"Adds the ability for Piwik administrators to include an informative message to all user's dashboards. This uses the built in Notification function.",
+  "homepage":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification",
+  "createdDateTime":"2015-04-13 17:52:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification",
+  "lastUpdated":"2015-11-20 19:16:03",
+  "latestVersion":"0.1.2",
+  "numDownloads":2618,"screenshots":[],"previews":[],"activity":{"numCommits":"7",
+    "numContributors":"1",
+    "lastCommitDate":"2015-11-20 19:14:09"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-04-13 17:52:03",
+    "requires":{"piwik":">=2.8.0"},"readme":"",
+    "numDownloads":3,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdminNotification\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-04-13 18:20:03",
+    "requires":{"piwik":">=2.8.0"},"readme":"",
+    "numDownloads":1302,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdminNotification\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2015-11-20 19:16:03",
+    "requires":{"piwik":">=2.12.0"},"readme":"#Piwik AdminNotification Plugin\n##Description\nAdds the ability for Piwik administrators to include an informative message on all users' dashboards. This may be useful for communicating with users in larger shared environments. In our setup we were tracking 1,900 websites with 250 users. This is a solution we wrote to allow us to easily inform our users of maintainance windows.\n\n##Instructions\nThe easiest way to install is to find the plugin in the [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\n##Changelog\n0.1.2 Tested with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Cleanup. Removed plugin template verbiage from code files.\n0.1.0 Initial Release\n\n##License\nGPL v3 \/ fair use\n\n## Support\nPlease [report any issues](https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/issues). Pull requests welcome.",
+    "numDownloads":1313,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/commits\/v1.0",
+    "readmeHtml":{"description":"\n\n<p>Adds the ability for Piwik administrators to include an informative message on all users' dashboards. This may be useful for communicating with users in larger shared environments. In our setup we were tracking 1,900 websites with 250 users. This is a solution we wrote to allow us to easily inform our users of maintainance windows.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>0.1.2 Tested with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Cleanup. Removed plugin template verbiage from code files.\n0.1.0 Initial Release<\/p>"},"download":"\/api\/2.0\/plugins\/AdminNotification\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"AdvancedCampaignReporting",
+  "displayName":"Advanced Campaign Reporting",
+  "owner":"PiwikPRO",
+  "description":"Track up to five Campaigns parameter (campaign, source, medium, keyword, content). Lets you also segment users by any campaign dimension, and provides",
+  "homepage":"http:\/\/piwik.pro",
+  "createdDateTime":"2014-10-01 03:22:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting",
+  "lastUpdated":"2016-03-22 12:36:04",
+  "latestVersion":"1.3.1",
+  "numDownloads":8360,"screenshots":[],"previews":[],"activity":{"numCommits":"149",
+    "numContributors":"9",
+    "lastCommitDate":"2016-04-15 22:57:32"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.3",
+    "release":"2014-10-01 03:22:04",
+    "requires":{},"readme":"",
+    "numDownloads":496,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.3"},{"name":"1.0.4",
+    "release":"2014-11-03 15:08:04",
+    "requires":{},"readme":"",
+    "numDownloads":213,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.4"},{"name":"1.0.5",
+    "release":"2014-11-14 11:16:04",
+    "requires":{},"readme":"",
+    "numDownloads":109,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.5"},{"name":"1.0.6",
+    "release":"2014-11-17 04:44:03",
+    "requires":{},"readme":"",
+    "numDownloads":1531,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.6"},{"name":"1.0.7",
+    "release":"2015-03-31 20:50:04",
+    "requires":{},"readme":"",
+    "numDownloads":9,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.7"},{"name":"1.0.8",
+    "release":"2015-03-31 21:20:04",
+    "requires":{},"readme":"",
+    "numDownloads":1853,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.8"},{"name":"1.1.1",
+    "release":"2015-09-03 02:04:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":954,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.1.1"},{"name":"1.2.0",
+    "release":"2015-11-11 13:08:02",
+    "requires":{"piwik":">=2.15.0"},"readme":"",
+    "numDownloads":1743,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/2.0.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.2.0"},{"name":"1.3.0",
+    "release":"2016-03-08 14:02:03",
+    "requires":{"piwik":">=2.16.0"},"readme":"",
+    "numDownloads":352,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.3.0"},{"name":"1.3.1",
+    "release":"2016-03-22 12:36:04",
+    "requires":{"piwik":">=2.16.0"},"readme":"# Advanced Campaigns Reporting\n\nMaster [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting)\nDevelop [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting)\n\n## Description\n\nTrack up to five Campaigns parameters (name, source, medium, keyword, content), and access Campaign Analytics reports.\n\n### Measuring campaigns\n\nThe default Campaign parameters are called: pk_campaign, pk_source, pk_medium, pk_keyword, pk_content and pk_cid.\n\nIf you already have URLs tagged with Google Analytics parameters these are supported: utm_campaign, utm_source, utm_medium, utm_term, utm_content and utm_id\n\nAn example landing page URL is:\n```\n\/offer?pk_campaign=Best-Seller&pk_source=Newsletter_7&pk_medium=email\n```\n\n### Features\n * Real time Analytics Reports of all your Campaign Marketing\n * Detects Campaign parameters from the landing page URL, within the query string or in the #hash string\n * The Referrers>Overview report displays a left column \"Referrers Overview\" with a list of reports that can be loaded on click.\n   This report viewer now also lists the new Campaign reports under \"View Referrers by Campaign\".\n * The content of Referrers> Campaign will be replaced with the new enhanced Campaigns reports.\n * The default Referrers Campaign widget and API are working as before.\n * The campaign reports are available in Piwik Mobile and can be sent as Scheduled reports (by email, as HTML or PDF)\n * Segment editor: a new \"Campaigns\" category lists the five new segment for each campaign dimension\n * The new Campaign reports can be added as widgets in your personalized Dashboard\n * Access the Campaign Report data by the API\n * Comes with automated tests to ensure the Plugin works as expected\n * Will track up to 250 characters for each of the five Campaign dimension\n\n### Notes\n\nIn the Campaign reports by default Piwik will only archive the first 1000 rows. If you track many campaigns you can configure Piwik so it does not truncate your data. To have data truncated after 10,000 rows, edit your `config\/config.ini.php` and add the following:\n\n```\n[General]\ndatatable_archiving_maximum_rows_referrers = 10000\ndatatable_archiving_maximum_rows_subtable_referrers = 10000\n```\n\n\n### Ideas for improvement\n * To improve data acquisition accuracy, we could extend the piwik.js class to store in first party cookies\n the five campaign dimensions. This would increase the accuracy of Goal conversions and Ecommerce conversions attributions\n for these conversions made at least one day after the first visit with a campaign set. [#10](https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/issues\/10)\n * Add friendly Tracking API parameters to collect campaign dimensions.\n campaignName `cn`, campaignSource `cs`, campaignMedium `cm`, campaignContent `cc`, campaignId `ci`.\n\n## Changelog\n * 1.3.1 Better support for campaign parameters behind hash tag (#)\n * 1.3.0 PPCDEV-2609 Compatibility with Piwik 2.16.0\n * 1.2.0 (Nov 10th 2015) - Plugin comaptibility with Piwik 2.15.0\n * 1.1.1 (Sept 3rd 2015) - Campaign reports now display your campaign report data even for campaign data before you activated AdvancedCampaignReporting\n * 1.1.0 (July 28th 2015)\n * 1.0.8 (Apr 1st 2015) - Exclude Google Analytics campaign parameters from the Page URLs\n * 1.0.6 (Nov 17th 2014) - Documentation\n * 1.0.5 (Nov 14th 2014) - Detect new URL parameters: piwik_campaign, pk_cpn and for Keywords: pk_kwd, piwik_keyword\n * 1.0.4 (Nov 4th 2014) - View Goals by Campaign Dimension in the Goals & Ecommerce reports\n * 1.0.3 (Oct 1st 2014) - Released for free on the [Piwik Marketplace](http:\/\/plugins.piwik.org\/)\n\n\n## Support\n\nPlugin provided by [Piwik PRO](https:\/\/example.por) - Cloud and Enterprise analytics from the creators of Piwik.org\n\nIf you find a bug or have a suggestion please create an issue in: https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/issues\n",
+    "numDownloads":1100,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Track up to five Campaigns parameters (name, source, medium, keyword, content), and access Campaign Analytics reports.<\/p>\n\n<h3>Measuring campaigns<\/h3>\n\n<p>The default Campaign parameters are called: pk_campaign, pk_source, pk_medium, pk_keyword, pk_content and pk_cid.<\/p>\n\n<p>If you already have URLs tagged with Google Analytics parameters these are supported: utm_campaign, utm_source, utm_medium, utm_term, utm_content and utm_id<\/p>\n\n<p>An example landing page URL is:<\/p>\n\n<pre><code>\/offer?pk_campaign=Best-Seller&amp;pk_source=Newsletter_7&amp;pk_medium=email\n<\/code><\/pre>\n\n<h3>Features<\/h3>\n\n<ul><li>Real time Analytics Reports of all your Campaign Marketing<\/li>\n<li>Detects Campaign parameters from the landing page URL, within the query string or in the #hash string<\/li>\n<li>The Referrers&gt;Overview report displays a left column \"Referrers Overview\" with a list of reports that can be loaded on click.\nThis report viewer now also lists the new Campaign reports under \"View Referrers by Campaign\".<\/li>\n<li>The content of Referrers&gt; Campaign will be replaced with the new enhanced Campaigns reports.<\/li>\n<li>The default Referrers Campaign widget and API are working as before.<\/li>\n<li>The campaign reports are available in Piwik Mobile and can be sent as Scheduled reports (by email, as HTML or PDF)<\/li>\n<li>Segment editor: a new \"Campaigns\" category lists the five new segment for each campaign dimension<\/li>\n<li>The new Campaign reports can be added as widgets in your personalized Dashboard<\/li>\n<li>Access the Campaign Report data by the API<\/li>\n<li>Comes with automated tests to ensure the Plugin works as expected<\/li>\n<li>Will track up to 250 characters for each of the five Campaign dimension<\/li>\n<\/ul><h3>Notes<\/h3>\n\n<p>In the Campaign reports by default Piwik will only archive the first 1000 rows. If you track many campaigns you can configure Piwik so it does not truncate your data. To have data truncated after 10,000 rows, edit your <code>config\/config.ini.php<\/code> and add the following:<\/p>\n\n<pre><code>[General]\ndatatable_archiving_maximum_rows_referrers = 10000\ndatatable_archiving_maximum_rows_subtable_referrers = 10000\n<\/code><\/pre>\n\n<h3>Ideas for improvement<\/h3>\n\n<ul><li>To improve data acquisition accuracy, we could extend the piwik.js class to store in first party cookies\nthe five campaign dimensions. This would increase the accuracy of Goal conversions and Ecommerce conversions attributions\nfor these conversions made at least one day after the first visit with a campaign set. <a href=\"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/issues\/10\">#10<\/a><\/li>\n<li>Add friendly Tracking API parameters to collect campaign dimensions.\ncampaignName <code>cn<\/code>, campaignSource <code>cs<\/code>, campaignMedium <code>cm<\/code>, campaignContent <code>cc<\/code>, campaignId <code>ci<\/code>.<\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>1.3.1 Better support for campaign parameters behind hash tag (#)<\/li>\n<li>1.3.0 PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<li>1.2.0 (Nov 10th 2015) - Plugin comaptibility with Piwik 2.15.0<\/li>\n<li>1.1.1 (Sept 3rd 2015) - Campaign reports now display your campaign report data even for campaign data before you activated AdvancedCampaignReporting<\/li>\n<li>1.1.0 (July 28th 2015)<\/li>\n<li>1.0.8 (Apr 1st 2015) - Exclude Google Analytics campaign parameters from the Page URLs<\/li>\n<li>1.0.6 (Nov 17th 2014) - Documentation<\/li>\n<li>1.0.5 (Nov 14th 2014) - Detect new URL parameters: piwik_campaign, pk_cpn and for Keywords: pk_kwd, piwik_keyword<\/li>\n<li>1.0.4 (Nov 4th 2014) - View Goals by Campaign Dimension in the Goals &amp; Ecommerce reports<\/li>\n<li>1.0.3 (Oct 1st 2014) - Released for free on the <a href=\"http:\/\/plugins.piwik.org\/\">Piwik Marketplace<\/a><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"AnonymousPiwikUsageMeasurement",
+  "displayName":"Anonymous Piwik Usage Measurement",
+  "owner":"piwik",
+  "description":"Help improve your Piwik experience by sending anonymized usage data to the creators of Piwik, to your own Piwik instance or to any other Piwik",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-10-19 14:04:02",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement",
+  "lastUpdated":"2016-02-10 17:22:03",
+  "latestVersion":"0.2.1",
+  "numDownloads":1662,"screenshots":[],"previews":[],"activity":{"numCommits":"61",
+    "numContributors":"5",
+    "lastCommitDate":"2016-05-17 03:54:49"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+    "release":"2015-10-19 14:04:03",
+    "requires":{"piwik":">=2.15.0-b17"},"readme":"",
+    "numDownloads":18,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/0.1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2015-10-20 06:44:03",
+    "requires":{"piwik":">=2.15.0-b17"},"readme":"",
+    "numDownloads":3,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2015-10-20 10:14:03",
+    "requires":{"piwik":">=2.15.0-rc1"},"readme":"",
+    "numDownloads":15,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2015-10-21 06:06:03",
+    "requires":{"piwik":">=2.15.0-rc1"},"readme":"",
+    "numDownloads":595,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.4"},{"name":"0.2.0",
+    "release":"2016-01-19 00:20:04",
+    "requires":{"piwik":">=2.15.0"},"readme":"",
+    "numDownloads":291,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2016-02-10 17:22:03",
+    "requires":{"piwik":">=2.15.0"},"readme":"# Piwik AnonymousPiwikUsageMeasurement Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-AnonymousPiwikUsageMeasurement.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-AnonymousPiwikUsageMeasurement)\n\n## Description\n\nHelp us to improve Piwik by sending anonymous usage data of your Piwik service to the creators of Piwik and\/or get usage data yourself.\n\nTrack usage of your Piwik service into up to three Piwiks:\n\n* [demo-anonymous.piwik.org](https:\/\/demo-anonymous.piwik.org) (enabled by default but can be disabled). The tracked data will be used to make Piwik better. Thank you for your help!\n* your own Piwik (can be configured optionally)\n* a custom Piwik (can be configured optionally)\n\n### What is Piwik doing to make sure the data is anonymized?\n\nWe are very careful in what we track and we make sure to anonymize data that could contain user data.\n\n* We overwrite the page title as the title could contain the name of the viewed website\n* We remove any referrer information\n* We replace URL paramaters with a predefined value apart from a few whitelisted ones to make sure no actual token_auth, CSRF token or user defined value will be tracked\n* On demo-anonymous.piwik.org 3 bytes of the IP are anonymised (eg when IP is 192.168.1.1 we track only 192.0.0.0). The original IP is not used to identify your location and provider information is not collected. \n* We do not just track any outlinks or downloads\n\n### When should I not install this plugin?\n\nIf you have developed a custom Piwik plugin that contains for example the name of your business in any of the following names we recommend to not install this plugin as it might be tracked:\n\n* name of a plugin\n* name of a controller action\n* name of a report\n* name of a widget\n* name of an API method\n\nPlugins that are installed via the Marketplace should not pose a problem as their names don't contain any user specific information such as the name of your business.\n\nWe track any information as efficient as possible to not slow down your Piwik. If you have already performance problems with your Piwik we recommend to not install this plugin though.\n\n### Which data is tracked?\n\nWhen the plugin is activated, the following data will be tracked:\n\n* The pages and reports that are viewed\n* The visitors' software and devices data like the used browser and the resolution\n* Some clicks or interactions with certain selectors or buttons. For example we track an event when a segment is selected but we do not track the actual segment.\n* In a daily task we track the following data:\n  * Piwik version\n  * PHP version\n  * Number of websites\n  * Number of users\n  * Number of segments\n  * How often which API method was called (only plugin name and method name but no parameters) and how long the API calls took on average.\n\n## FAQ\n\n__Are there any prerequisites?__\n\n* If sending usage data to Piwik is enabled, the Piwik installation must be connected to the internet\n* If tracking to a custom Piwik installation is enabled, your Piwik installation and your Piwik users must be able to connect to this instance\n* If tracking to a custom Piwik installation is enabled and your Piwik is served via HTTPS, the custom Piwik installation must be available via HTTPS as well\n\n__Why was this plugin created?__\n\nThis plugin was created to provide a simple way to measure how Piwik product itself is being used. The opt-in and anonymised usage tracking information will be used by the Piwik creators to build a better product and a great user experience.\n\n__Who has access to the tracked data at demo-anonymous.piwik.org?__\n\nThe data is public and therefore can be seen by anyone on [http:\/\/demo-anonymous.piwik.org](http:\/\/demo-anonymous.piwik.org).\n\nThis is to assure the tracked data is anonymous (transparency) and to showcase how Piwik can be used to track an application.\n\n## Changelog\n\n* 0.2.1 Track MySQL server version in a custom variable.\n* 0.2.0 Add possibility to enable\/disable anonymization and tracking user login as userID\n* 0.1.4 Fixed a bug that failed to track under HTTPS under circumstances\n* 0.1.3 Updated plugin description only\n* 0.1.2 Bugfixes\n* 0.1.1 Track average API executime time\n* 0.1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/issues](https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/issues)\n",
+    "numDownloads":740,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Help us to improve Piwik by sending anonymous usage data of your Piwik service to the creators of Piwik and\/or get usage data yourself.<\/p>\n\n<p>Track usage of your Piwik service into up to three Piwiks:<\/p>\n\n<ul><li><a href=\"https:\/\/demo-anonymous.piwik.org\">demo-anonymous.piwik.org<\/a> (enabled by default but can be disabled). The tracked data will be used to make Piwik better. Thank you for your help!<\/li>\n<li>your own Piwik (can be configured optionally)<\/li>\n<li>a custom Piwik (can be configured optionally)<\/li>\n<\/ul><h3>What is Piwik doing to make sure the data is anonymized?<\/h3>\n\n<p>We are very careful in what we track and we make sure to anonymize data that could contain user data.<\/p>\n\n<ul><li>We overwrite the page title as the title could contain the name of the viewed website<\/li>\n<li>We remove any referrer information<\/li>\n<li>We replace URL paramaters with a predefined value apart from a few whitelisted ones to make sure no actual token_auth, CSRF token or user defined value will be tracked<\/li>\n<li>On demo-anonymous.piwik.org 3 bytes of the IP are anonymised (eg when IP is 192.168.1.1 we track only 192.0.0.0). The original IP is not used to identify your location and provider information is not collected. <\/li>\n<li>We do not just track any outlinks or downloads<\/li>\n<\/ul><h3>When should I not install this plugin?<\/h3>\n\n<p>If you have developed a custom Piwik plugin that contains for example the name of your business in any of the following names we recommend to not install this plugin as it might be tracked:<\/p>\n\n<ul><li>name of a plugin<\/li>\n<li>name of a controller action<\/li>\n<li>name of a report<\/li>\n<li>name of a widget<\/li>\n<li>name of an API method<\/li>\n<\/ul><p>Plugins that are installed via the Marketplace should not pose a problem as their names don't contain any user specific information such as the name of your business.<\/p>\n\n<p>We track any information as efficient as possible to not slow down your Piwik. If you have already performance problems with your Piwik we recommend to not install this plugin though.<\/p>\n\n<h3>Which data is tracked?<\/h3>\n\n<p>When the plugin is activated, the following data will be tracked:<\/p>\n\n<ul><li>The pages and reports that are viewed<\/li>\n<li>The visitors' software and devices data like the used browser and the resolution<\/li>\n<li>Some clicks or interactions with certain selectors or buttons. For example we track an event when a segment is selected but we do not track the actual segment.<\/li>\n<li>In a daily task we track the following data:\n\n<ul><li>Piwik version<\/li>\n<li>PHP version<\/li>\n<li>Number of websites<\/li>\n<li>Number of users<\/li>\n<li>Number of segments<\/li>\n<li>How often which API method was called (only plugin name and method name but no parameters) and how long the API calls took on average.<\/li>\n<\/ul><\/li>\n<\/ul>",
+      "faq":"<p><strong>Are there any prerequisites?<\/strong><\/p>\n\n<ul><li>If sending usage data to Piwik is enabled, the Piwik installation must be connected to the internet<\/li>\n<li>If tracking to a custom Piwik installation is enabled, your Piwik installation and your Piwik users must be able to connect to this instance<\/li>\n<li>If tracking to a custom Piwik installation is enabled and your Piwik is served via HTTPS, the custom Piwik installation must be available via HTTPS as well<\/li>\n<\/ul><p><strong>Why was this plugin created?<\/strong><\/p>\n\n<p>This plugin was created to provide a simple way to measure how Piwik product itself is being used. The opt-in and anonymised usage tracking information will be used by the Piwik creators to build a better product and a great user experience.<\/p>\n\n<p><strong>Who has access to the tracked data at demo-anonymous.piwik.org?<\/strong><\/p>\n\n<p>The data is public and therefore can be seen by anyone on <a href=\"http:\/\/demo-anonymous.piwik.org\">http:\/\/demo-anonymous.piwik.org<\/a>.<\/p>\n\n<p>This is to assure the tracked data is anonymous (transparency) and to showcase how Piwik can be used to track an application.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.2.1 Track MySQL server version in a custom variable.<\/li>\n<li>0.2.0 Add possibility to enable\/disable anonymization and tracking user login as userID<\/li>\n<li>0.1.4 Fixed a bug that failed to track under HTTPS under circumstances<\/li>\n<li>0.1.3 Updated plugin description only<\/li>\n<li>0.1.2 Bugfixes<\/li>\n<li>0.1.1 Track average API executime time<\/li>\n<li>0.1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.2.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ApiGetWithSitesInfo",
+  "displayName":"Api Get With Sites Info",
+  "owner":"piwik",
+  "description":"Modifies the 'API.get' output to also list the website name and main website URL",
+  "homepage":"http:\/\/github.com\/piwik\/piwik-ApiGetWithSitesInfo",
+  "createdDateTime":"2014-12-09 03:50:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo",
+  "lastUpdated":"2014-12-11 21:06:04",
+  "latestVersion":"0.1.2",
+  "numDownloads":3009,"screenshots":[],"previews":[],"activity":{"numCommits":"24",
+    "numContributors":"3",
+    "lastCommitDate":"2016-01-25 22:14:51"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-12-09 03:50:03",
+    "requires":{"piwik":">=2.9.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ApiGetWithSitesInfo\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-12-09 03:58:03",
+    "requires":{"piwik":">=2.9.0"},"readme":"",
+    "numDownloads":45,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ApiGetWithSitesInfo\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-12-11 21:06:04",
+    "requires":{"piwik":">=2.9.0"},"readme":"# Piwik ApiGetWithSitesInfo Plugin\n\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-ApiGetWithSitesInfo.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-ApiGetWithSitesInfo)\n\n## Description\n\nModifies the 'API.get' output to also list the website name and main website URL.\n\nWhen calling the API method `API.get` it will be enriched with the following new fields for each website:\n\n * `idsite` - Website ID\n * `site_url` - Website URL\n * `site_name` - Website name\n\n If you specify `&idSite=all` it will decorate each website in the response with the new fields.\n \nThe output will look as follows:\n\n```\n<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<result>\n\t<idsite>2<\/idsite>\n\t<site_url>http:\/\/blog.shacklefordvetclinic.com<\/site_url>\n\t<site_name>Shackleford Road Veterinary Clinic<\/site_name>\n    <nb_uniq_visitors>2397<\/nb_uniq_visitors>\n    <nb_visits>2758<\/nb_visits>\n    <nb_actions>7943<\/nb_actions>\n    <bounce_count>1421<\/bounce_count>\n    <nb_conversions>987<\/nb_conversions>\n    <nb_visits_converted>838<\/nb_visits_converted>\n    <revenue>0<\/revenue>\n    <nb_pageviews>6370<\/nb_pageviews>\n    <nb_uniq_pageviews>5330<\/nb_uniq_pageviews>\n    <nb_downloads>368<\/nb_downloads>\n    <nb_uniq_downloads>305<\/nb_uniq_downloads>\n    <nb_outlinks>951<\/nb_outlinks>\n    <nb_uniq_outlinks>871<\/nb_uniq_outlinks>\n    <nb_searches>27<\/nb_searches>\n    <nb_keywords>25<\/nb_keywords>\n    <nb_hits_with_time_generation>5635<\/nb_hits_with_time_generation>\n    <conversion_rate>30.38%<\/conversion_rate>\n    <bounce_rate>52%<\/bounce_rate>\n    <nb_actions_per_visit>2.9<\/nb_actions_per_visit>\n    [...]\n```\n\n \n## Changelog\n\n* 0.1.2 - Fixed bug `Call to a member function getRowsCount() on a non-object`\n* 0.1.0 - Initial release\n\n## Support\n\nPlease direct any feedback to the [Issue tracker on Github.](https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/issues)\n",
+    "numDownloads":2963,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Modifies the 'API.get' output to also list the website name and main website URL.<\/p>\n\n<p>When calling the API method <code>API.get<\/code> it will be enriched with the following new fields for each website:<\/p>\n\n<ul><li><code>idsite<\/code> - Website ID<\/li>\n<li><code>site_url<\/code> - Website URL<\/li>\n<li><p><code>site_name<\/code> - Website name<\/p>\n\n<p>If you specify <code>&amp;idSite=all<\/code> it will decorate each website in the response with the new fields.<\/p><\/li>\n<\/ul><p>The output will look as follows:<\/p>\n\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;\n&lt;result&gt;\n    &lt;idsite&gt;2&lt;\/idsite&gt;\n    &lt;site_url&gt;http:\/\/blog.shacklefordvetclinic.com&lt;\/site_url&gt;\n    &lt;site_name&gt;Shackleford Road Veterinary Clinic&lt;\/site_name&gt;\n    &lt;nb_uniq_visitors&gt;2397&lt;\/nb_uniq_visitors&gt;\n    &lt;nb_visits&gt;2758&lt;\/nb_visits&gt;\n    &lt;nb_actions&gt;7943&lt;\/nb_actions&gt;\n    &lt;bounce_count&gt;1421&lt;\/bounce_count&gt;\n    &lt;nb_conversions&gt;987&lt;\/nb_conversions&gt;\n    &lt;nb_visits_converted&gt;838&lt;\/nb_visits_converted&gt;\n    &lt;revenue&gt;0&lt;\/revenue&gt;\n    &lt;nb_pageviews&gt;6370&lt;\/nb_pageviews&gt;\n    &lt;nb_uniq_pageviews&gt;5330&lt;\/nb_uniq_pageviews&gt;\n    &lt;nb_downloads&gt;368&lt;\/nb_downloads&gt;\n    &lt;nb_uniq_downloads&gt;305&lt;\/nb_uniq_downloads&gt;\n    &lt;nb_outlinks&gt;951&lt;\/nb_outlinks&gt;\n    &lt;nb_uniq_outlinks&gt;871&lt;\/nb_uniq_outlinks&gt;\n    &lt;nb_searches&gt;27&lt;\/nb_searches&gt;\n    &lt;nb_keywords&gt;25&lt;\/nb_keywords&gt;\n    &lt;nb_hits_with_time_generation&gt;5635&lt;\/nb_hits_with_time_generation&gt;\n    &lt;conversion_rate&gt;30.38%&lt;\/conversion_rate&gt;\n    &lt;bounce_rate&gt;52%&lt;\/bounce_rate&gt;\n    &lt;nb_actions_per_visit&gt;2.9&lt;\/nb_actions_per_visit&gt;\n    [...]\n<\/code><\/pre>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.2 - Fixed bug <code>Call to a member function getRowsCount() on a non-object<\/code><\/li>\n<li>0.1.0 - Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ApiGetWithSitesInfo\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Bandwidth",
+  "displayName":"Bandwidth",
+  "owner":"piwik",
+  "description":"Monitor Bandwidth for each page, download, and measure overall traffic in bytes",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-02-18 03:50:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth",
+  "lastUpdated":"2016-01-28 16:10:04",
+  "latestVersion":"0.1.2",
+  "numDownloads":7742,"screenshots":[],"previews":[],"activity":{"numCommits":"62",
+    "numContributors":"6",
+    "lastCommitDate":"2016-03-15 04:19:37"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-02-18 03:50:05",
+    "requires":{"piwik":">=2.11.0-b3"},"readme":"",
+    "numDownloads":1809,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Bandwidth\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-06-09 04:08:04",
+    "requires":{"piwik":">=2.11.0-b3"},"readme":"",
+    "numDownloads":3477,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Bandwidth\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2016-01-28 16:10:04",
+    "requires":{"piwik":">=2.14.0"},"readme":"# Piwik Bandwidth Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-Bandwidth.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-Bandwidth)\n\n## Description\n\nThis plugin allows you to measure the bandwidth that was used by each page view or download. \nIt enriches existing reports and APIs to show the used bandwidth. Find more information in the FAQ.\n\n## FAQ\n\n__How can I track the bandwidth?__\n\nLog analytics:\n\nThe bandwidth will be automatically tracked when using the [log importer](http:\/\/piwik.org\/log-analytics\/) as long as \nyour log format is supported.\n\nTracking API:\n\nIf you are using the [HTTP Tracking API](http:\/\/developer.piwik.org\/api-reference\/tracking-api) \nyou can specify the bandwidth in bytes by appending the URL parameter `bw_bytes=1234` to the tracking URL. In this case \na bandwidth of 1234 bytes will be tracked.\n\n__Which actions support tracking of bandwidth?__\n\nPageviews (Page URLs and Page Titles) as well as Downloads.\n\n__In which reports is the used bandwidth displayed?__\n\n* Page URLs \n* Page Titles\n* Downloads\n\nAll reports will show a column `Average Bandwidth` and `Sum Bandwidth`\n\nThe \"Visitors => Overview\" report shows a total bandwidth overview and it is possible to view the evolution over period.\n\n__Which APIs does this plugin define or enrich?__\n\nThere is a report `Bandwidth.get` returning the total bandwidth (across all actions).\n\nIt also enriches varies reports such as `Actions.get`, `Actions.getPageUrls`, `Actions.getPageTitles` and `Actions.getDownloads`.\nFor example it adds columns such as `avg_bandwidth`, `sum_bandwidth`, `min_bandwidth`, `max_bandwidth` to each page view.\n\n__Why are the bandwidth columns are not displayed in the UI?__\n\nMake sure the Bandwidth plugin is activated by going to `Administration => Plugins`. Also the bandwidth columns are not \ndisplayed if no bandwidth was tracked in the current selected month.\n\n## Changelog\n\n0.1.0 Initial Release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)",
+    "numDownloads":2456,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin allows you to measure the bandwidth that was used by each page view or download. \nIt enriches existing reports and APIs to show the used bandwidth. Find more information in the FAQ.<\/p>\n\n",
+      "faq":"<p><strong>How can I track the bandwidth?<\/strong><\/p>\n\n<p>Log analytics:<\/p>\n\n<p>The bandwidth will be automatically tracked when using the <a href=\"http:\/\/piwik.org\/log-analytics\/\">log importer<\/a> as long as \nyour log format is supported.<\/p>\n\n<p>Tracking API:<\/p>\n\n<p>If you are using the <a href=\"http:\/\/developer.piwik.org\/api-reference\/tracking-api\">HTTP Tracking API<\/a> \nyou can specify the bandwidth in bytes by appending the URL parameter <code>bw_bytes=1234<\/code> to the tracking URL. In this case \na bandwidth of 1234 bytes will be tracked.<\/p>\n\n<p><strong>Which actions support tracking of bandwidth?<\/strong><\/p>\n\n<p>Pageviews (Page URLs and Page Titles) as well as Downloads.<\/p>\n\n<p><strong>In which reports is the used bandwidth displayed?<\/strong><\/p>\n\n<ul><li>Page URLs <\/li>\n<li>Page Titles<\/li>\n<li>Downloads<\/li>\n<\/ul><p>All reports will show a column <code>Average Bandwidth<\/code> and <code>Sum Bandwidth<\/code><\/p>\n\n<p>The \"Visitors =&gt; Overview\" report shows a total bandwidth overview and it is possible to view the evolution over period.<\/p>\n\n<p><strong>Which APIs does this plugin define or enrich?<\/strong><\/p>\n\n<p>There is a report <code>Bandwidth.get<\/code> returning the total bandwidth (across all actions).<\/p>\n\n<p>It also enriches varies reports such as <code>Actions.get<\/code>, <code>Actions.getPageUrls<\/code>, <code>Actions.getPageTitles<\/code> and <code>Actions.getDownloads<\/code>.\nFor example it adds columns such as <code>avg_bandwidth<\/code>, <code>sum_bandwidth<\/code>, <code>min_bandwidth<\/code>, <code>max_bandwidth<\/code> to each page view.<\/p>\n\n<p><strong>Why are the bandwidth columns are not displayed in the UI?<\/strong><\/p>\n\n<p>Make sure the Bandwidth plugin is activated by going to <code>Administration =&gt; Plugins<\/code>. Also the bandwidth columns are not \ndisplayed if no bandwidth was tracked in the current selected month.<\/p>",
+      "documentation":"",
+      "changelog":"<p>0.1.0 Initial Release<\/p>"},"download":"\/api\/2.0\/plugins\/Bandwidth\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Barometer",
+  "displayName":"Barometer",
+  "owner":"halfdan",
+  "description":"Live Plugin that shows the current number of visitors on the page.",
+  "homepage":"http:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+  "createdDateTime":"2014-12-23 00:38:20",
+  "donate":{"flattr":"https:\/\/flattr.com\/profile\/test1",
+    "bitcoin":null},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/barometer.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/barometer\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/baromter.forum.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"barometer@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/baromter",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/barometer\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/barometer\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/barometer.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["barometer",
+    "live"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+    "email":"test8@example.com",
+    "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+  "lastUpdated":"2014-12-23 00:41:21",
+  "latestVersion":"0.5.0",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/Barometer\/images\/piwik-barometer-01.png",
+    "https:\/\/plugins.piwik.org\/Barometer\/images\/piwik-barometer-02.png"],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.piwik.org"}],"activity":{"numCommits":"31",
+    "numContributors":"3",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+    "release":"2014-12-23 00:38:20",
+    "requires":{"piwik":">=1.10.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.1.1"},{"name":"0.5.0",
+    "release":"2014-12-23 00:41:21",
+    "requires":{},"readme":"# Piwik Barometer Plugin\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a two new widgets that you can add to your dashboard.\n\nThe widgets will show a Visitor Barometer and a Visit Time Barometer that auto-refresh every 5 seconds. It shows the number of visitors or visit time in a N minute period compared to the maximum number of visitors\/average visit time in any N minute period of the last 30 days.\n\nThe idea for this plugin came from [@muesli](http:\/\/github.com\/muesli) who suggested it on #piwik in IRC.\n\n## Documentation\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n   ```\n   cd plugins\/\n   git clone https:\/\/github.com\/halfdan\/piwik-barometer-plugin.git Barometer\n   ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You will now find the widget under the Live! section.\n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.5.0",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a two new widgets that you can add to your dashboard.<\/p>\n\n<p>The widgets will show a Visitor Barometer and a Visit Time Barometer that auto-refresh every 5 seconds. It shows the number of visitors or visit time in a N minute period compared to the maximum number of visitors\/average visit time in any N minute period of the last 30 days.<\/p>\n\n<p>The idea for this plugin came from <a href=\"http:\/\/github.com\/muesli\">@muesli<\/a> who suggested it on #piwik in IRC.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.5.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Chat",
+  "displayName":"Chat",
+  "owner":"VincentLahaye",
+  "description":"Not production ready. Join the Beta test ! Engage people you don't know at all, with this targeted and efficient chat system, directly integrated into",
+  "homepage":"https:\/\/github.com\/VincentLahaye\/piwik-chat",
+  "createdDateTime":"2014-06-13 09:10:06",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat",
+  "lastUpdated":"2014-08-20 09:08:05",
+  "latestVersion":"0.2.4",
+  "numDownloads":5705,"screenshots":[],"previews":[],"activity":{"numCommits":"2",
+    "numContributors":"2",
+    "lastCommitDate":"2014-08-20 09:08:00"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+    "release":"2014-06-13 09:10:06",
+    "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+    "numDownloads":2,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-06-13 09:52:05",
+    "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+    "numDownloads":92,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2014-06-23 11:54:10",
+    "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+    "numDownloads":109,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2014-06-29 15:12:05",
+    "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+    "numDownloads":513,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.4"},{"name":"0.1.5",
+    "release":"2014-08-13 10:42:05",
+    "requires":{"piwik":">=2.4.0"},"readme":"",
+    "numDownloads":70,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.5"},{"name":"0.1.6",
+    "release":"2014-08-14 10:08:05",
+    "requires":{"piwik":">=2.4.0"},"readme":"",
+    "numDownloads":127,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.6"},{"name":"0.2.0",
+    "release":"2014-08-19 16:58:06",
+    "requires":{"piwik":">=2.4.0"},"readme":"",
+    "numDownloads":2,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2014-08-19 17:16:05",
+    "requires":{"piwik":">=2.4.0"},"readme":"",
+    "numDownloads":31,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.1"},{"name":"0.2.2",
+    "release":"2014-08-20 07:34:06",
+    "requires":{"piwik":">=2.4.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.2"},{"name":"0.2.3",
+    "release":"2014-08-20 07:58:06",
+    "requires":{"piwik":">=2.4.0"},"readme":"",
+    "numDownloads":6,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.3"},{"name":"0.2.4",
+    "release":"2014-08-20 09:08:05",
+    "requires":{"piwik":">=2.4.0"},"readme":"# Chat Plugin for Piwik (BETA)\nThis plugin is not production ready, but any help is appreciate!\n\nEngage people you don't know at all, with this targeted and efficient chat system, directly integrated into Piwik.\n\nThe client has these three states, plus a minimized state :\n\n![Chat Client](\/screenshots\/ClientState2.png?raw=true \"Chat Client State 2\")\n![Chat Client](\/screenshots\/ClientState3.png?raw=true \"Chat Client State 3\")\n![Chat Client](\/screenshots\/ClientState4.png?raw=true \"Chat Client State 4\")\n\nAnd here is the updated Visitor Profile :\n![Backend](\/screenshots\/BackendVisitorProfile.png?raw=true \"Visitor Profile in Backend\")\n\n## Installation\nAdd this code, after Piwik's tracking code :\n\n    <!-- Piwik Chat -->\n    <script type=\"text\/javascript\">\n        (function() {\n            var u=((\"https:\" == document.location.protocol) ? \"https:\/\/{$PIWIK_URL}\/\" : \"http:\/\/{$PIWIK_URL}\/\");\n            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text\/javascript';\n            g.defer=true; g.async=true; g.src=u+'plugins\/Chat\/javascripts\/client\/client.js'; s.parentNode.insertBefore(g,s);\n        })();\n    <\/script>\n    <!-- End Piwik Chat Code -->\n\n## How it works\nOn the backend, this plugin modifies the visitorProfile popup, by adding to it a \"Chat\" tab next to \"Visited pages\". A new menu \"Chat\" is available, which allows to browse all conversations.\n\nSoon, a reporting system will be integrated, which will show figures like conversion rate or engagement, in function of the Chat's use.\n\nAfter installing the plugin, you have to modify your tracking code. It includes the file \"javascripts\/client\/client.js\", which waits for the Tracker() to initialize, then appends an iframe to the page. This iframe requests the \"popout\" action of the controller, where the plugin tries to identify the visitor based on his visitorID or configID.\n\n## Changelog\n\nv0.2.2 :\n\n+ Add DB Versioning support\n\nv0.2 :\n\n+ Piwik 2.5.0 ready\n+ Add automatic messages based on segment recognition\n+ General improvement on client popout\n    + Load message over ajax\n    + Add moment.js\n    + Update the communication (based on easyXDM) between the popout and its parent iframe. See : https:\/\/github.com\/VincentLahaye\/piwik-chat\/commit\/ced4662d83cc8efc98b58b27e92ab6d06bb29546\n+ Update VisitorProfile popup\n    + Improve textarea input interractions\n+ Rewrite a lot of code regarding the \"model\" file Conversation.php, now split in different files\n\nv0.1.6 :\n\n+ Add a reporting bug system\n\n\nv0.1.5 :\n\n+    Notification system improved\n    +    Add email notification to offline staf members\n    +    Add title notification\n    +    Improve sound and menu notification, now working on all CoreHome module\n+    Add german translation\n+    Fix wrong inclusion paths on client popout\n+    Fix online staff indicator on client popout\n\n\nv0.1 :\n\n+   Basic chat functions with client\/server communication and Piwik integration\n+   Add additional inputs in the visitor profile in order to save personal informations about a visitor (name, email, phone and comments)\n+   The client shows if someone of the staff is online or not\n+   Sound notifications on both sides\n+   French translation\n\n## Roadmap\nv0.3 :\n\n*   Add a reporting system that shows figures about the module impact\n*   Add external cache support for polling (APC, Memcache, opCache...)\n\n## Academical study\nAs an MSc student in eBusiness, this project is part of my final dissertation : \"How to engage people you don't know at all ?\".\n\nThe first part of this project is to develop the module and its reporting system. Then, the second part will be about analyse the impact of this Chat system (conversion rate, engagement, etc..) in function of its use, and eventually try to determine which way of use is the most efficient. From this research it may be possible to provide advices and answer questions like : What is the best behavior to adopt as an operator? What kinds of automatic messages are the more efficient in order to increase conversion?\n\nTo lead this study, I will need data! And if you support my work, you'll be able to send me your reports via the plugin, in an anonymized way.",
+    "numDownloads":4752,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>v0.2.2 :<\/p>\n\n<ul><li>Add DB Versioning support<\/li>\n<\/ul><p>v0.2 :<\/p>\n\n<ul><li>Piwik 2.5.0 ready<\/li>\n<li>Add automatic messages based on segment recognition<\/li>\n<li>General improvement on client popout\n\n<ul><li>Load message over ajax<\/li>\n<li>Add moment.js<\/li>\n<li>Update the communication (based on easyXDM) between the popout and its parent iframe. See : https:\/\/github.com\/VincentLahaye\/piwik-chat\/commit\/ced4662d83cc8efc98b58b27e92ab6d06bb29546<\/li>\n<\/ul><\/li>\n<li>Update VisitorProfile popup\n\n<ul><li>Improve textarea input interractions<\/li>\n<\/ul><\/li>\n<li>Rewrite a lot of code regarding the \"model\" file Conversation.php, now split in different files<\/li>\n<\/ul><p>v0.1.6 :<\/p>\n\n<ul><li>Add a reporting bug system<\/li>\n<\/ul><p>v0.1.5 :<\/p>\n\n<ul><li>Notification system improved\n\n<ul><li>Add email notification to offline staf members<\/li>\n<li>Add title notification<\/li>\n<li>Improve sound and menu notification, now working on all CoreHome module<\/li>\n<\/ul><\/li>\n<li>Add german translation<\/li>\n<li>Fix wrong inclusion paths on client popout<\/li>\n<li>Fix online staff indicator on client popout<\/li>\n<\/ul><p>v0.1 :<\/p>\n\n<ul><li>Basic chat functions with client\/server communication and Piwik integration<\/li>\n<li>Add additional inputs in the visitor profile in order to save personal informations about a visitor (name, email, phone and comments)<\/li>\n<li>The client shows if someone of the staff is online or not<\/li>\n<li>Sound notifications on both sides<\/li>\n<li>French translation<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ClickHeat",
+  "displayName":"Click Heat",
+  "owner":"piwikjapan",
+  "description":"ClickHeat is a visual heatmap of clicks on a HTML page. This plugin based on Dugwood's ClickHeat version 1.14. Plugin not consider IIS. Sorry.",
+  "homepage":"http:\/\/piwikjapan.org",
+  "createdDateTime":"2015-04-23 01:56:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat",
+  "lastUpdated":"2015-04-27 15:46:04",
+  "latestVersion":"0.1.5",
+  "numDownloads":8559,"screenshots":[],"previews":[],"activity":{"numCommits":"13",
+    "numContributors":"3",
+    "lastCommitDate":"2016-05-27 17:59:06"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+    "release":"2015-04-23 01:56:05",
+    "requires":{"piwik":">=2.11.1"},"readme":"",
+    "numDownloads":49,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2015-04-23 14:12:04",
+    "requires":{"piwik":">=2.11.0"},"readme":"",
+    "numDownloads":72,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2015-04-25 14:38:05",
+    "requires":{"piwik":">=2.11.0"},"readme":"",
+    "numDownloads":64,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2015-04-27 13:54:05",
+    "requires":{"piwik":">=2.11.0"},"readme":"",
+    "numDownloads":21,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.4"},{"name":"0.1.5",
+    "release":"2015-04-27 15:46:04",
+    "requires":{"piwik":">=2.11.0"},"readme":"# Piwik ClickHeat Plugin\n\n## Description\nClickHeat is a visual heatmap of clicks on a HTML page, showing hot and cold click zones. This plugin based on [Dugwood's ClickHeat version 1.14](https:\/\/github.com\/dugwood\/clickheat). It is an OpenSource software, released under GPL licence, and free of charge. \n\n__Plugin not consider the IIS.__ Sorry. We are waiting patches for IIS.\n\n## Installation\nInstall it via Piwik Marketplace.\n\nThis plugin installer will make directories:\n* yourpiwik\/tmp\/cache\/clickheat\/cache\n* yourpiwik\/tmp\/cache\/clickheat\/logs.\n\nThis plugin uses a different tracker. Please click on the link \"JavaScript\" and put the special Javascript codes into your website.\n\n## FAQ\n__What exactly is included in this feature ?__\n\n* pick up a siteid\n* pick up a period\n* pick up a browser type\n* pick up a specific web page\n\n__And what functions are not included in this feature ?__\n\n* remove special addresses defined on the control panel.\n* remove special browsers defined on the control panel.\n* filters based on added segmentation\n\n__Where is the coordinate information from the browser ?__\n\nClickHeat plugin uses text files to record the coordinate data of each browser in directory: yourpiwik\/tmp\/cache\/clickheat\/logs.\n\n__What is \"click.php returned a status code 403\" ?__\n\nYou have to perform the upgrade immediately to version 0.1.5. I forgot to put .htaccess.\n\n__After installing the plugin, Piwik Administration area shows \"page not found 404 error\".__\n\nThis plugin doesn't consider the IIS. Sorry. And please delete the ClickHeat plugin (yourpiwik\/plugins\/ClickHeat) manually via FTP or Explorer. We are waiting patches for IIS.\n\n__Does it withstands high traffics ?__\n\nThis plugin uses minimal text to record data and file based logging. And when click.php is called from a special Javascript for cgi, just append text on end of the each file. And when you analyze the click data and make a heatmap, plugin will create cached heatmap as png image file. \n\nTherefore, we expect the plugin light works, but we don't know what load it has under Piwik 2.x. So we are very glad, when you inform us about your situation. \n\nPlease see the link [Performance and optimization](http:\/\/www.labsmedia.com\/clickheat\/156894.html) about system resources. If you want performance, you need to avoid to use a cgi, that is possible. It method is explained on the link. \n\n__New click data were added, but not updated heatmap. Why ?__\n\nPlugin places heatmap images in the cache directory: yourpiwik\/tmp\/cache\/clickheat\/cache. Therefore when you suddenly met with such probrem, you can delete cache files, but __do not delete cache directory__.\n\n__Showed a heatmap, but not overlay a heatmap to the target web page. Why ?__\n\nCheck that your website does not set the HTTP header __X-FRAME-OPTIONS__ to __SAMEORIGIN__ as this will prevent this plugin from iframing your website for the heatmap report. Please see [Page Overlay Troubleshooting](http:\/\/piwik.org\/docs\/page-overlay\/#page-overlay-troubleshooting), that is same problem.\n\n## Changelog\n\n* 0.1.0 First beta\n* 0.1.2 to append faq\n* 0.1.3 to append faq\n* 0.1.5 to add .htaccess\n\n## License\nGPL v3 or later\n\n## Support\nPlease direct any feedback to [yamachan@piwikjapan.org](mailto:yamachan@piwikjapan.org).\n",
+    "numDownloads":8353,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>ClickHeat is a visual heatmap of clicks on a HTML page, showing hot and cold click zones. This plugin based on <a href=\"https:\/\/github.com\/dugwood\/clickheat\">Dugwood's ClickHeat version 1.14<\/a>. It is an OpenSource software, released under GPL licence, and free of charge.<\/p>\n\n<p><strong>Plugin not consider the IIS.<\/strong> Sorry. We are waiting patches for IIS.<\/p>\n\n",
+      "faq":"<p><strong>What exactly is included in this feature ?<\/strong><\/p>\n\n<ul><li>pick up a siteid<\/li>\n<li>pick up a period<\/li>\n<li>pick up a browser type<\/li>\n<li>pick up a specific web page<\/li>\n<\/ul><p><strong>And what functions are not included in this feature ?<\/strong><\/p>\n\n<ul><li>remove special addresses defined on the control panel.<\/li>\n<li>remove special browsers defined on the control panel.<\/li>\n<li>filters based on added segmentation<\/li>\n<\/ul><p><strong>Where is the coordinate information from the browser ?<\/strong><\/p>\n\n<p>ClickHeat plugin uses text files to record the coordinate data of each browser in directory: yourpiwik\/tmp\/cache\/clickheat\/logs.<\/p>\n\n<p><strong>What is \"click.php returned a status code 403\" ?<\/strong><\/p>\n\n<p>You have to perform the upgrade immediately to version 0.1.5. I forgot to put .htaccess.<\/p>\n\n<p><strong>After installing the plugin, Piwik Administration area shows \"page not found 404 error\".<\/strong><\/p>\n\n<p>This plugin doesn't consider the IIS. Sorry. And please delete the ClickHeat plugin (yourpiwik\/plugins\/ClickHeat) manually via FTP or Explorer. We are waiting patches for IIS.<\/p>\n\n<p><strong>Does it withstands high traffics ?<\/strong><\/p>\n\n<p>This plugin uses minimal text to record data and file based logging. And when click.php is called from a special Javascript for cgi, just append text on end of the each file. And when you analyze the click data and make a heatmap, plugin will create cached heatmap as png image file.<\/p>\n\n<p>Therefore, we expect the plugin light works, but we don't know what load it has under Piwik 2.x. So we are very glad, when you inform us about your situation.<\/p>\n\n<p>Please see the link <a href=\"http:\/\/www.labsmedia.com\/clickheat\/156894.html\">Performance and optimization<\/a> about system resources. If you want performance, you need to avoid to use a cgi, that is possible. It method is explained on the link.<\/p>\n\n<p><strong>New click data were added, but not updated heatmap. Why ?<\/strong><\/p>\n\n<p>Plugin places heatmap images in the cache directory: yourpiwik\/tmp\/cache\/clickheat\/cache. Therefore when you suddenly met with such probrem, you can delete cache files, but <strong>do not delete cache directory<\/strong>.<\/p>\n\n<p><strong>Showed a heatmap, but not overlay a heatmap to the target web page. Why ?<\/strong><\/p>\n\n<p>Check that your website does not set the HTTP header <strong>X-FRAME-OPTIONS<\/strong> to <strong>SAMEORIGIN<\/strong> as this will prevent this plugin from iframing your website for the heatmap report. Please see <a href=\"http:\/\/piwik.org\/docs\/page-overlay\/#page-overlay-troubleshooting\">Page Overlay Troubleshooting<\/a>, that is same problem.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0 First beta<\/li>\n<li>0.1.2 to append faq<\/li>\n<li>0.1.3 to append faq<\/li>\n<li>0.1.5 to add .htaccess<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.5"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Counter",
+  "displayName":"Counter",
+  "owner":"Globulopolis",
+  "description":"Display Hits\/Visits on image",
+  "homepage":"http:\/\/xn--80aeqbhthr9b.com\/en\/others\/piwik\/10-piwik-graphical-counter.html",
+  "createdDateTime":"2014-12-23 01:14:18",
+  "donate":{},"support":[],"isTheme":false,"keywords":["piwik",
+    "counter image",
+    "image counter",
+    "piwik visible counter",
+    "show hits piwik",
+    "show visits piwik"],"basePrice":0,"authors":[{"name":"Viper",
+    "email":null,"homepage":null}],"repositoryUrl":"https:\/\/github.com\/Globulopolis\/Counter",
+  "lastUpdated":"2014-12-23 01:14:18",
+  "latestVersion":"2.0.2",
+  "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"10",
+    "numContributors":"1",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"2.0.2",
+    "release":"2014-12-23 01:14:18",
+    "requires":{},"readme":"# Piwik counter plugin\n\n## Description\n\nDisplay Hits\/Visits on image\n\n## FAQ\n\nSee http:\/\/xn--80aeqbhthr9b.com\/en\/others\/piwik\/10-piwik-graphical-counter.html\n\n## Changelog\n2.0.2\n* Fixed a bug where the URL with the image displayed via http, if you are using https(bug only in counters list).\n\n2.0.1\n* Fix for CORS (thanks for aureq for patch)\n* Changing versioning according to requirements\n\n2.0 Initial release\n\n## Support\n\nhttp:\/\/xn--80aeqbhthr9b.com\/en\/contact-form.html",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Globulopolis\/Counter\/commits\/2.0.2",
+    "readmeHtml":{"description":"\n\n<p>Display Hits\/Visits on image<\/p>\n\n",
+      "faq":"<p>See http:\/\/xn--80aeqbhthr9b.com\/en\/others\/piwik\/10-piwik-graphical-counter.html<\/p>",
+      "documentation":"",
+      "changelog":"<p>2.0.2\n* Fixed a bug where the URL with the image displayed via http, if you are using https(bug only in counters list).<\/p>\n\n<p>2.0.1\n* Fix for CORS (thanks for aureq for patch)\n* Changing versioning according to requirements<\/p>\n\n<p>2.0 Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/Counter\/download\/2.0.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomAlerts",
+  "displayName":"Custom Alerts",
+  "owner":"piwik",
+  "description":"Alerts are a great way to get notified of changes on your website. This is a beta version.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 01:07:23",
+  "donate":{},"support":[],"isTheme":false,"keywords":["alerts",
+    "notification",
+    "report",
+    "monitoring"],"basePrice":0,"authors":[{"name":"Piwik",
+    "email":"test1@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts",
+  "lastUpdated":"2014-12-23 01:16:54",
+  "latestVersion":"0.1.12",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/CustomAlerts\/images\/Create_Alert.png",
+    "https:\/\/plugins.piwik.org\/CustomAlerts\/images\/History_Of_Alerts.png",
+    "https:\/\/plugins.piwik.org\/CustomAlerts\/images\/List_Of_Alerts.png"],"previews":[],"activity":{"numCommits":"300",
+    "numContributors":"7",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-12-23 01:07:25",
+    "requires":{"piwik":">=2.0.4"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.0.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-12-23 01:08:03",
+    "requires":{"piwik":">=2.0.4"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-12-23 01:08:23",
+    "requires":{"piwik":">=2.0.4-b1"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2014-12-23 01:08:43",
+    "requires":{"piwik":">=2.0.4-b1"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.3",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2014-12-23 01:11:39",
+    "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.4",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.4"},{"name":"0.1.5",
+    "release":"2014-12-23 01:11:59",
+    "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.5",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.5"},{"name":"0.1.6",
+    "release":"2014-12-23 01:12:20",
+    "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.6",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.6"},{"name":"0.1.7",
+    "release":"2014-12-23 01:12:42",
+    "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.7",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.7"},{"name":"0.1.8-b1",
+    "release":"2014-12-23 01:13:41",
+    "requires":{"piwik":">=2.0.4-b5"},"readme":"",
+    "numDownloads":0,"license":{"name":"Commercial license",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.8",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.8-b1"},{"name":"0.1.9",
+    "release":"2014-12-23 01:14:00",
+    "requires":{"piwik":">=2.0.4-b5"},"readme":"",
+    "numDownloads":0,"license":{"name":"Commercial license",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.9",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.9"},{"name":"0.1.10",
+    "release":"2014-12-23 01:15:35",
+    "requires":{"piwik":">=2.0.4-b7"},"readme":"",
+    "numDownloads":0,"license":{"name":"Commercial license",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.10",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.10"},{"name":"0.1.11",
+    "release":"2014-12-23 01:15:57",
+    "requires":{"piwik":">=2.0.4-b7"},"readme":"",
+    "numDownloads":0,"license":{"name":"Commercial license",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.11",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.11"},{"name":"0.1.12",
+    "release":"2014-12-23 01:16:54",
+    "requires":{"piwik":">=2.0.4-b9"},"readme":"# Piwik CustomAlerts Plugin \n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-CustomAlerts.png?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-CustomAlerts)\n\n## Description\n\nCreate Custom Alerts + Be notified by email\/SMS!\n\nAlerts are a great way to get notified of changes on your website. Want to know if your new product hits less than 100 sales in a week or your new article attracts more than 200 visitors a day? Create alerts that make sense to you. Be notified by email or SMS when the conditions for your alerts are met. Stay on top of your website!\n\nThe Alert log will help you to better understand the success of your website. You can use it to analyze how often your website hit more than 10000 visits per day or on how many days a product was sold more than 50 times.\n\nThis plugin was [crowdfunded with the support](http:\/\/crowdfunding.piwik.org\/custom-alerts-plugin\/) of 37 Piwik community members!\n\n## Installation\n\nInstall it via Piwik Marketplace\n\n## FAQ\n\n__What exactly is included in this feature?__\n\nHere is the complete list of features that are included in this project:\n\n* Define new Alert (\"Big drop in purchases\")\n* Select a website on which the Alert is defined\n* Receive an alert by email (email will contain Alert description + link to Piwik dashboard URL for the given website ID and period).\n* Receive an alert by SMS (SMS will contain Alert description and numbers that triggered the Alert)\n* Select the Alert period: should it be daily, weekly or monthly?\n* Select the report (Websites, Keywords, Countries, general stats)\n* Define Metrics (visits, page view, avg. visit duration, Goal 1 conversions, total goal conversions, etc.)\n* Define the Alert: when Visits decrease 50%, when purchases are more than 50 per day, etc.\n\n__What reports are available to the Alert system?__\n\nYou can create an alert for any available report in Piwik. Plugins can define new reports which will be automatically picked up by Alerts.\n\n__What alert conditions are available?__\n\nYou can create alerts for the following metrics:\n\n* Visits, Visits Evolution, Unique Visits\n* Actions, Action Evolution\n* Pageviews, Pageviews Evolution\n* Time on page\n* Bounce rate\n* Goal revenue\n* Downloads\n* and many more..\n\nTo define the condition you can select the conditions:\n\n* Greater than, less than\n* Equal, Not Equal\n* Percentage increase\/decrease\n\n## Changelog\n\n* 0.1.0 First beta\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Please direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n\n",
+    "numDownloads":0,"license":{"name":"Commercial license",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.12",
+    "readmeHtml":{"description":"\n\n<p>Create Custom Alerts + Be notified by email\/SMS!<\/p>\n\n<p>Alerts are a great way to get notified of changes on your website. Want to know if your new product hits less than 100 sales in a week or your new article attracts more than 200 visitors a day? Create alerts that make sense to you. Be notified by email or SMS when the conditions for your alerts are met. Stay on top of your website!<\/p>\n\n<p>The Alert log will help you to better understand the success of your website. You can use it to analyze how often your website hit more than 10000 visits per day or on how many days a product was sold more than 50 times.<\/p>\n\n<p>This plugin was <a href=\"http:\/\/crowdfunding.piwik.org\/custom-alerts-plugin\/\">crowdfunded with the support<\/a> of 37 Piwik community members!<\/p>\n\n",
+      "faq":"<p><strong>What exactly is included in this feature?<\/strong><\/p>\n\n<p>Here is the complete list of features that are included in this project:<\/p>\n\n<ul><li>Define new Alert (\"Big drop in purchases\")<\/li>\n<li>Select a website on which the Alert is defined<\/li>\n<li>Receive an alert by email (email will contain Alert description + link to Piwik dashboard URL for the given website ID and period).<\/li>\n<li>Receive an alert by SMS (SMS will contain Alert description and numbers that triggered the Alert)<\/li>\n<li>Select the Alert period: should it be daily, weekly or monthly?<\/li>\n<li>Select the report (Websites, Keywords, Countries, general stats)<\/li>\n<li>Define Metrics (visits, page view, avg. visit duration, Goal 1 conversions, total goal conversions, etc.)<\/li>\n<li>Define the Alert: when Visits decrease 50%, when purchases are more than 50 per day, etc.<\/li>\n<\/ul><p><strong>What reports are available to the Alert system?<\/strong><\/p>\n\n<p>You can create an alert for any available report in Piwik. Plugins can define new reports which will be automatically picked up by Alerts.<\/p>\n\n<p><strong>What alert conditions are available?<\/strong><\/p>\n\n<p>You can create alerts for the following metrics:<\/p>\n\n<ul><li>Visits, Visits Evolution, Unique Visits<\/li>\n<li>Actions, Action Evolution<\/li>\n<li>Pageviews, Pageviews Evolution<\/li>\n<li>Time on page<\/li>\n<li>Bounce rate<\/li>\n<li>Goal revenue<\/li>\n<li>Downloads<\/li>\n<li>and many more..<\/li>\n<\/ul><p>To define the condition you can select the conditions:<\/p>\n\n<ul><li>Greater than, less than<\/li>\n<li>Equal, Not Equal<\/li>\n<li>Percentage increase\/decrease<\/li>\n<\/ul>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0 First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.12"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomDimensions",
+  "displayName":"Custom Dimensions",
+  "owner":"piwik",
+  "description":"Extend Piwik to your needs by defining and tracking Custom Dimensions in scope Action or Visit",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-11-25 03:26:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions",
+  "lastUpdated":"2016-02-04 19:56:04",
+  "latestVersion":"0.1.4",
+  "numDownloads":2584,"screenshots":[],"previews":[],"activity":{"numCommits":"67",
+    "numContributors":"4",
+    "lastCommitDate":"2016-06-02 15:56:37"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-11-25 03:26:04",
+    "requires":{"piwik":">=2.15.1-b3"},"readme":"",
+    "numDownloads":100,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/0.1.11",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.0"},{"name":"0.1.2",
+    "release":"2015-12-07 04:16:04",
+    "requires":{"piwik":">=2.15.1-b8"},"readme":"",
+    "numDownloads":477,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/0.1.12",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2016-01-21 19:30:07",
+    "requires":{"piwik":">=2.15.1-b8"},"readme":"",
+    "numDownloads":254,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2016-02-04 19:56:04",
+    "requires":{"piwik":">=2.15.1-b8"},"readme":"# Piwik CustomDimensions Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-CustomDimensions.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-CustomDimensions)\n\n## Description\n\nThis plugins allows you to configure and track any [Custom Dimensions](https:\/\/piwik.org\/docs\/custom-dimensions\/). You can configure a Custom Dimension\nby giving it a name and a scope (Action or Visit). Afterwards you will see a new menu item in the reporting area\nfor each configured dimension and be able to get its data. You can also export the report as a widget, segment by this\n dimenson, and more. For more information read the [Custom Dimensions user guide](https:\/\/piwik.org\/docs\/custom-dimensions\/) or have a look in the FAQ.\n\n*Warning*: Depending on the database size of your Piwik this plugin may take a long time to install.\n\n## FAQ\n\n__I have a large database, can I install the plugin on the command line?__\n\nYes, this is not only possible but even recommended as the installation may take hours. To do this follow these steps:\n\n* Download the Plugin from [https:\/\/plugins.piwik.org\/CustomDimensions](https:\/\/plugins.piwik.org\/CustomDimensions)\n* Extract the files within the downloaded ZIP file\n* Copy the `CustomDimensions` directory into the `plugins` directory of your Piwik\n* Execute the command `.\/console plugin:activate CustomDimensions` within your Piwik directory\n\n__Where can I manage Custom Dimensions?__\n\nCustom Dimensions can be managed by clicking on your username or user icon in the top right. There will be a menu\nitem \"Custom Dimensions\" within the \"Manage\" section of the left menu. By clicking on it you can manage Custom Dimensions.\nPlease note that the permission Admin is required in order to be able to manage them.\n\n__Where can I find the Id for a Custom Dimension?__\n\nYou can find them by going to the \"Manage Custom Dimensions\" page in your personal area. For each dimension you will\nfind the Id in the table that lists all available Custom Dimensions.\n\n__How do I set a value for a dimension in the JavaScript Tracker?__\n\nPlease have a look at the [JavaScript Tracker guide for Custom Dimensions](https:\/\/developer.piwik.org\/guides\/tracking-javascript-guide#custom-dimensions).\n\n__How do I set a value for a dimension in the PHP Tracker?__\n\n`$tracker->setCustomTrackingParameter('dimension' . $customDimensionId, $value);`\n\nPlease note custom tracking parameters are cleared after each tracking request. If you want to keep the same\nCustom Dimensions over all request make sure to call this method before each tracking call.\n\n__I have configured all available Custom Dimension slots, can I add more?__\n\nYes, this is possible. To make a new Custom Dimension slot available execute the following command including the scope option:\n\n```\n.\/console customdimensions:add-custom-dimension --scope=action\n.\/console customdimensions:add-custom-dimension --scope=visit\n```\n\nBe aware that this can take a long time depending on the size of your database as it requires MySQL schema changes.\nYou can directly create multiple Custom Dimension slots. To do this add the option `--count=X`. Usually it doesn't take much\nlonger to create directly multiple new slots.\n\n__Is it possible to delete a Custom Dimension and all of its data?__\n\nIn the UI it is only possible to deactivate a dimension. However, on the command line you can remove a Custom Dimension\nand report it's log data by executing the following console command:\n\n```\n.\/console customdimensions:remove-custom-dimension --scope=$scope --index=$index\n```\n\nMake sure to replace `$scope` and `$index` with the correct values. To get a list of all available indexes execute `.\/console customdimensions:info`.\n\nRemoving a Custom Dimension may take a long time as it requires MySQL schema changes. Currently, only log data is removed. Archived reports will be\nnot deleted currently.\n\n## Changelog\n\n* 0.1.4 Fix a possible JavaScript error if Transitions plugin is disabled\n* 0.1.3 Fix UI of Custom Dimensions was not working properly when not using English as language\n* 0.1.2\n  * New feature: Mark an extraction as case sensitive\n  * New feature : Show actions that had no value defined\n  * New feature : Link to Page URLs in subtables\n* 0.1.1 Bugfixes\n* 0.1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [github.com\/piwik\/plugin-CustomDimensions\/issues](https:\/\/github.com\/piwik\/plugin-CustomDimensions\/issues)\n",
+    "numDownloads":1753,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/0.1.4",
+    "readmeHtml":{"description":"\n\n<p>This plugins allows you to configure and track any <a href=\"https:\/\/piwik.org\/docs\/custom-dimensions\/\">Custom Dimensions<\/a>. You can configure a Custom Dimension\nby giving it a name and a scope (Action or Visit). Afterwards you will see a new menu item in the reporting area\nfor each configured dimension and be able to get its data. You can also export the report as a widget, segment by this\n dimenson, and more. For more information read the <a href=\"https:\/\/piwik.org\/docs\/custom-dimensions\/\">Custom Dimensions user guide<\/a> or have a look in the FAQ.<\/p>\n\n<p><em>Warning<\/em>: Depending on the database size of your Piwik this plugin may take a long time to install.<\/p>\n\n",
+      "faq":"<p><strong>I have a large database, can I install the plugin on the command line?<\/strong><\/p>\n\n<p>Yes, this is not only possible but even recommended as the installation may take hours. To do this follow these steps:<\/p>\n\n<ul><li>Download the Plugin from <a href=\"https:\/\/plugins.piwik.org\/CustomDimensions\">https:\/\/plugins.piwik.org\/CustomDimensions<\/a><\/li>\n<li>Extract the files within the downloaded ZIP file<\/li>\n<li>Copy the <code>CustomDimensions<\/code> directory into the <code>plugins<\/code> directory of your Piwik<\/li>\n<li>Execute the command <code>.\/console plugin:activate CustomDimensions<\/code> within your Piwik directory<\/li>\n<\/ul><p><strong>Where can I manage Custom Dimensions?<\/strong><\/p>\n\n<p>Custom Dimensions can be managed by clicking on your username or user icon in the top right. There will be a menu\nitem \"Custom Dimensions\" within the \"Manage\" section of the left menu. By clicking on it you can manage Custom Dimensions.\nPlease note that the permission Admin is required in order to be able to manage them.<\/p>\n\n<p><strong>Where can I find the Id for a Custom Dimension?<\/strong><\/p>\n\n<p>You can find them by going to the \"Manage Custom Dimensions\" page in your personal area. For each dimension you will\nfind the Id in the table that lists all available Custom Dimensions.<\/p>\n\n<p><strong>How do I set a value for a dimension in the JavaScript Tracker?<\/strong><\/p>\n\n<p>Please have a look at the <a href=\"https:\/\/developer.piwik.org\/guides\/tracking-javascript-guide#custom-dimensions\">JavaScript Tracker guide for Custom Dimensions<\/a>.<\/p>\n\n<p><strong>How do I set a value for a dimension in the PHP Tracker?<\/strong><\/p>\n\n<p><code>$tracker-&gt;setCustomTrackingParameter('dimension' . $customDimensionId, $value);<\/code><\/p>\n\n<p>Please note custom tracking parameters are cleared after each tracking request. If you want to keep the same\nCustom Dimensions over all request make sure to call this method before each tracking call.<\/p>\n\n<p><strong>I have configured all available Custom Dimension slots, can I add more?<\/strong><\/p>\n\n<p>Yes, this is possible. To make a new Custom Dimension slot available execute the following command including the scope option:<\/p>\n\n<pre><code>.\/console customdimensions:add-custom-dimension --scope=action\n.\/console customdimensions:add-custom-dimension --scope=visit\n<\/code><\/pre>\n\n<p>Be aware that this can take a long time depending on the size of your database as it requires MySQL schema changes.\nYou can directly create multiple Custom Dimension slots. To do this add the option <code>--count=X<\/code>. Usually it doesn't take much\nlonger to create directly multiple new slots.<\/p>\n\n<p><strong>Is it possible to delete a Custom Dimension and all of its data?<\/strong><\/p>\n\n<p>In the UI it is only possible to deactivate a dimension. However, on the command line you can remove a Custom Dimension\nand report it's log data by executing the following console command:<\/p>\n\n<pre><code>.\/console customdimensions:remove-custom-dimension --scope=$scope --index=$index\n<\/code><\/pre>\n\n<p>Make sure to replace <code>$scope<\/code> and <code>$index<\/code> with the correct values. To get a list of all available indexes execute <code>.\/console customdimensions:info<\/code>.<\/p>\n\n<p>Removing a Custom Dimension may take a long time as it requires MySQL schema changes. Currently, only log data is removed. Archived reports will be\nnot deleted currently.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.4 Fix a possible JavaScript error if Transitions plugin is disabled<\/li>\n<li>0.1.3 Fix UI of Custom Dimensions was not working properly when not using English as language<\/li>\n<li>0.1.2\n\n<ul><li>New feature: Mark an extraction as case sensitive<\/li>\n<li>New feature : Show actions that had no value defined<\/li>\n<li>New feature : Link to Page URLs in subtables<\/li>\n<\/ul><\/li>\n<li>0.1.1 Bugfixes<\/li>\n<li>0.1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomOptOut",
+  "displayName":"Custom Opt Out",
+  "owner":"Zeichen32",
+  "description":"Create your own opt-out iframe css styles",
+  "homepage":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut",
+  "createdDateTime":"2014-12-23 01:06:54",
+  "donate":{"paypal":"test2@example.com",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":["Opt-Out",
+    "CSS"],"basePrice":0,"authors":[{"name":"Jens Averkamp",
+    "email":"test6@example.com",
+    "homepage":"https:\/\/github.com\/Zeichen32"}],"repositoryUrl":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut",
+  "lastUpdated":"2014-12-23 01:22:19",
+  "latestVersion":"0.1.4",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/CustomOptOut\/images\/CustomOptOut.png"],"previews":[],"activity":{"numCommits":"13",
+    "numContributors":"5",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.3",
+    "release":"2014-12-23 01:06:54",
+    "requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut\/commits\/0.1.3",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomOptOut\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2014-12-23 01:22:19",
+    "requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"readme":"# Custom Opt-Out Styles Piwik Plugin\n\n## Description\n\nAdd a new admin tab, to change the opt-out CSS Styles for each website.\n\n## Requirements\n\n+ Piwik >= 2.0.0\n\n## Changelog\n\n#### CustomOptOut 0.1.4:\n* Issue #3 Code updated to support Piwik 2.1 and newer\n* Issue #2 Allow relative urls in css file field\n\n#### CustomOptOut 0.1.3:\n* Issue #1 Added a p-tag around the opt-out text for better markup and easier styling. (christianseel)\n\n#### CustomOptOut 0.1.2:\n* Fix wrong css escaping\n\n#### CustomOptOut 0.1.1:\n* Initial Version\n\n\n## Authors\n\n**Jens Averkamp**\n\n+ [https:\/\/github.com\/Zeichen32](https:\/\/github.com\/Zeichen32)\n\n## Support\n**Please direct any feedback to [https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut](https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut)**\n\n## Copyright and license\n\nReleased under the GPL v3 (or later) license, see [misc\/gpl-3.0.txt](misc\/gpl-3.0.txt)",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut\/commits\/0.1.4",
+    "readmeHtml":{"description":"\n\n<p>Add a new admin tab, to change the opt-out CSS Styles for each website.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<h4>CustomOptOut 0.1.4:<\/h4>\n\n<ul><li>Issue #3 Code updated to support Piwik 2.1 and newer<\/li>\n<li>Issue #2 Allow relative urls in css file field<\/li>\n<\/ul><h4>CustomOptOut 0.1.3:<\/h4>\n\n<ul><li>Issue #1 Added a p-tag around the opt-out text for better markup and easier styling. (christianseel)<\/li>\n<\/ul><h4>CustomOptOut 0.1.2:<\/h4>\n\n<ul><li>Fix wrong css escaping<\/li>\n<\/ul><h4>CustomOptOut 0.1.1:<\/h4>\n\n<ul><li>Initial Version<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomOptOut\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomTrackerJs",
+  "displayName":"Custom Tracker Js",
+  "owner":"PiwikPRO",
+  "description":"Lets Super Users and other plugins customise the piwik.js tracker file.",
+  "homepage":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs",
+  "createdDateTime":"2014-10-14 04:56:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs",
+  "lastUpdated":"2016-04-12 16:00:04",
+  "latestVersion":"1.1.2",
+  "numDownloads":4376,"screenshots":[],"previews":[],"activity":{"numCommits":"33",
+    "numContributors":"5",
+    "lastCommitDate":"2016-04-15 22:59:15"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.2",
+    "release":"2014-10-14 04:56:03",
+    "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+    "numDownloads":64,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.0.2"},{"name":"1.0.3",
+    "release":"2014-10-15 21:58:03",
+    "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+    "numDownloads":3554,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.0.3"},{"name":"1.1.0",
+    "release":"2016-03-08 14:28:03",
+    "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+    "numDownloads":315,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.1.0"},{"name":"1.1.1",
+    "release":"2016-04-12 14:30:04",
+    "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.0.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.1.1"},{"name":"1.1.2",
+    "release":"2016-04-12 16:00:04",
+    "requires":{"piwik":">=2.8.0-b4"},"readme":"# Piwik CustomTrackerJs Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-CustomTrackerJs.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-CustomTrackerJs)\n\n## Description\n\nThe `CustomTrackerJs` plugin lets the super users or other plugins add custom code to the Piwik Javascript Tracker.\n\n## Usage\n\n### Super users\n\nSuper users can set the Javascript code they want to add to the `piwik.js` file in `Settings > Plugin settings`.\n\nAny code added in the *Javascript code* textbox will be appended to `piwik.js` by a scheduled task. Be very careful\nas to write valid Javascript code since invalid code can break the tracker.\n\n### Other plugins\n\nPlugins can make use of the `CustomTrackerJs.getTrackerJsAdditions` event to register Javascript code to add to\nthe tracker.\n\nFor example this will add a `console.log(\"Hello world!\");` line to the tracker:\n\n```php\nclass MyPlugin extends \\Piwik\\Plugin\n{\n    public function getListHooksRegistered()\n    {\n        return array(\n            'CustomTrackerJs.getTrackerJsAdditions' => 'getTrackerJsAdditions',\n        );\n    }\n\n    public function getTrackerJsAdditions(&$code)\n    {\n        $code .= PHP_EOL . 'console.log(\"Hello world!\");';\n    }\n}\n```\n\n## Changelog\n\n* 1.1.2\n    - Marketplace release\n* 1.1.0\n    - PPCDEV-2609 Compatibility with Piwik 2.16.0\n\n## Support\n\nPlease contact us at contact@piwik.pro in case you are facing a bug.\n\n\nPlugin created and maintained by [Piwik PRO](http:\/\/piwik.pro\/).\n",
+    "numDownloads":442,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>The <code>CustomTrackerJs<\/code> plugin lets the super users or other plugins add custom code to the Piwik Javascript Tracker.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>1.1.2\n\n<ul><li>Marketplace release<\/li>\n<\/ul><\/li>\n<li>1.1.0\n\n<ul><li>PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ExcludeByDDNS",
+  "displayName":"Exclude By DDNS",
+  "owner":"sgiehl",
+  "description":"This plugin allows you to dynamically exclude a IP using DDNS update",
+  "homepage":"http:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS",
+  "createdDateTime":"2015-02-08 22:10:03",
+  "donate":{"paypal":"stefangiehl@web.de",
+    "flattr":"https:\/\/flattr.com\/thing\/2578144\/sgiehl",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS",
+  "lastUpdated":"2016-05-08 22:10:03",
+  "latestVersion":"0.5.0",
+  "numDownloads":3069,"screenshots":[],"previews":[],"activity":{"numCommits":"44",
+    "numContributors":"1",
+    "lastCommitDate":"2016-05-08 22:29:45"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1",
+    "release":"2015-02-08 22:10:03",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":149,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.1"},{"name":"0.1.1",
+    "release":"2015-02-24 19:52:03",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":68,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.1.1"},{"name":"0.2.0",
+    "release":"2015-03-01 11:42:03",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":227,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2015-03-28 15:32:03",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":397,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.2.1"},{"name":"0.2.2",
+    "release":"2015-06-01 07:08:09",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":341,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/1.0.8",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.2.2"},{"name":"0.3.0",
+    "release":"2015-07-28 20:36:02",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":4,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.3.0"},{"name":"0.3.1",
+    "release":"2015-07-28 22:30:03",
+    "requires":{"piwik":">=2.9.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":157,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.3.1"},{"name":"0.4.0",
+    "release":"2015-08-15 18:44:03",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":1529,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.4.0"},{"name":"0.5.0",
+    "release":"2016-05-08 22:10:03",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.3"},"readme":"# Piwik Exclude IP By DDNS\n\n[![Build Status](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ExcludeByDDNS.png?branch=master)](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ExcludeByDDNS)\n[![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS&title=Piwik Plugin ExcludeByDDNS=&tags=github&category=software)\n\n## Description\n\nThis plugin allows the Piwik users to dynamically exclude their IP address using DDNS update.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.4.0 or higher is required.\n\n### Features\n\n- Exclude one IP for each Piwik user \n- Exclude and IP using an already updated hostname\n\n## FAQ\n\n__Which update method should i use, _DDNS Update_ or _DDNS Hostname_?__\n\nIf available, ___DDNS Update___ is recommended. This method is a bit more complicated to set up, but it leads to immediately updated IP's, as the client will trigger the update whenever a new IP is assigned.\nBut it may not be viable for all users, eg. \n* Not all DDNS clients allow custom update-URL's.\n* The client may be already serving another Server and have no ability to talk to multiple Servers at the same time.\n\nSo, the ___DDNS Hostname___ can be an alternative. Use a DDNS Service that is compatible with your client and enter the hostname from there to have the plugin resolve your dynamic IP. The downside: Updating happens via a sheduled task every hour, so there might be small windows with the new IP still being tracked, but not the old one.\n\n__What data do I need to set for DDNS Update__\n\nYou need to set a custom URL to be triggered for an update.\nYour personal update-URL is shown in your piwik installation (user-menu > Personal > DDNS Settings).\n\nThe URL has the following scheme:\n```\nhttp{s}:\/\/{piwik.url}\/index.php?module=ExcludeByDDNS&action=update&token_auth={token_auth}\n```\n\n- {s} Use HTTPS if available.\n- {piwik.url}: The URL to your piwik installation.\n- {token_auth}: Your API auth token (user-menu > Platform > API).\n\nThere is no need to set user, password or domain name.\n\n## Changelog\n\n- Version 0.4.0 - Compatibility for Piwik > 2.4.0\n- Version 0.3.0 - Various improvements and translations\n- Version 0.2.0 - Beta Release\n- Version 0.1.0 - Alpha Release\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\n",
+    "numDownloads":197,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/1.1.0",
+    "readmeHtml":{"description":"\n\n<p>This plugin allows the Piwik users to dynamically exclude their IP address using DDNS update.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.4.0 or higher is required.<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Exclude one IP for each Piwik user <\/li>\n<li>Exclude and IP using an already updated hostname<\/li>\n<\/ul>",
+      "faq":"<p><strong>Which update method should i use, <em>DDNS Update<\/em> or <em>DDNS Hostname<\/em>?<\/strong><\/p>\n\n<p>If available, <strong><em>DDNS Update<\/em><\/strong> is recommended. This method is a bit more complicated to set up, but it leads to immediately updated IP's, as the client will trigger the update whenever a new IP is assigned.\nBut it may not be viable for all users, eg. \n* Not all DDNS clients allow custom update-URL's.\n* The client may be already serving another Server and have no ability to talk to multiple Servers at the same time.<\/p>\n\n<p>So, the <strong><em>DDNS Hostname<\/em><\/strong> can be an alternative. Use a DDNS Service that is compatible with your client and enter the hostname from there to have the plugin resolve your dynamic IP. The downside: Updating happens via a sheduled task every hour, so there might be small windows with the new IP still being tracked, but not the old one.<\/p>\n\n<p><strong>What data do I need to set for DDNS Update<\/strong><\/p>\n\n<p>You need to set a custom URL to be triggered for an update.\nYour personal update-URL is shown in your piwik installation (user-menu &gt; Personal &gt; DDNS Settings).<\/p>\n\n<p>The URL has the following scheme:<\/p>\n\n<pre><code>http{s}:\/\/{piwik.url}\/index.php?module=ExcludeByDDNS&amp;action=update&amp;token_auth={token_auth}\n<\/code><\/pre>\n\n<ul><li>{s} Use HTTPS if available.<\/li>\n<li>{piwik.url}: The URL to your piwik installation.<\/li>\n<li>{token_auth}: Your API auth token (user-menu &gt; Platform &gt; API).<\/li>\n<\/ul><p>There is no need to set user, password or domain name.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>Version 0.4.0 - Compatibility for Piwik &gt; 2.4.0<\/li>\n<li>Version 0.3.0 - Various improvements and translations<\/li>\n<li>Version 0.2.0 - Beta Release<\/li>\n<li>Version 0.1.0 - Alpha Release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.5.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"FeedAnnotation",
+  "displayName":"Feed Annotation",
+  "owner":"halfdan",
+  "description":"Plugin to automatically create Annotations by polling a feed (Atom\/RSS)",
+  "homepage":"http:\/\/github.com\/halfdan\/piwik-feedannotation-plugin",
+  "createdDateTime":"2014-12-23 00:39:30",
+  "donate":{},"support":[],"isTheme":false,"keywords":["rss",
+    "atom",
+    "annotation",
+    "feed"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+    "email":"test8@example.com",
+    "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/piwik-feedannotation-plugin",
+  "lastUpdated":"2014-12-23 00:39:30",
+  "latestVersion":"0.9.5",
+  "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"26",
+    "numContributors":"1",
+    "lastCommitDate":"1970-01-01 00:33:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.9.5",
+    "release":"2014-12-23 00:39:30",
+    "requires":{"piwik":">=2.0.0"},"readme":"# Piwik FeedAnnotation Plugin\n\n## Description \n\nThis is a plugin for the Open Source Web Analytics platform Piwik. It allows you to automatically fetch RSS\/Atom-Feeds from your website and create new Annotations from feed entries. \n\nSince the \"Annotations\" plugin was introduced in Piwik 1.10, this plugin requires at least Piwik 1.10.\n\n![Annotations in Piwik](http:\/\/cdn.geekmonkey.org\/assets\/files\/000\/000\/038\/screen\/annotations-view.png)\n\n## Documentation\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n   ```\n   cd plugins\/\n   git clone https:\/\/github.com\/halfdan\/piwik-feedannotation-plugin.git FeedAnnotation\n   ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You can add new feeds for sites you have admin access to under Settings -> Feed Annotations\n\nFeeds are fetched once a day using \"scheduled tasks\". After adding a feed you can manually force the plugin to process your feed by clicking the \"Process now\" link.\n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-feedannotation-plugin\/commits\/v0.9.5",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. It allows you to automatically fetch RSS\/Atom-Feeds from your website and create new Annotations from feed entries.<\/p>\n\n<p>Since the \"Annotations\" plugin was introduced in Piwik 1.10, this plugin requires at least Piwik 1.10.<\/p>\n\n<p><img src=\"http:\/\/cdn.geekmonkey.org\/assets\/files\/000\/000\/038\/screen\/annotations-view.png\" alt=\"annotations-view.png\" \/><\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/FeedAnnotation\/download\/0.9.5"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"FlagCounter",
+  "displayName":"Flag Counter",
+  "owner":"sgiehl",
+  "description":"This plugin allows you to include a simple statistic in your website showing the flags and hits of the countries your visitors came from",
+  "homepage":"http:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter",
+  "createdDateTime":"2015-01-05 23:22:04",
+  "donate":{"paypal":"stefangiehl@web.de",
+    "flattr":"https:\/\/flattr.com\/thing\/2578144\/sgiehl",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter",
+  "lastUpdated":"2015-08-15 18:54:04",
+  "latestVersion":"0.4.0",
+  "numDownloads":4519,"screenshots":[],"previews":[],"activity":{"numCommits":"29",
+    "numContributors":"1",
+    "lastCommitDate":"2016-01-19 20:18:45"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1",
+    "release":"2015-01-05 23:22:04",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":351,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/1.0.6",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.1"},{"name":"0.2",
+    "release":"2015-02-08 12:22:04",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":523,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.2"},{"name":"0.3",
+    "release":"2015-04-06 11:44:03",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":155,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.3"},{"name":"0.3.1",
+    "release":"2015-04-15 20:06:03",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":487,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.3.1"},{"name":"0.3.2",
+    "release":"2015-06-01 07:10:04",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":681,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.3.2"},{"name":"0.4.0",
+    "release":"2015-08-15 18:54:04",
+    "requires":{"piwik":">=2.4.0",
+      "php":">=5.3.0"},"readme":"# Piwik Flag Counter Plugin\n\n[![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter&title=Piwik Plugin FlagCounter=&tags=github&category=software) \n\n\n## Description\n\nThis plugin allows you to include a small image or iframe in you website displaying the flags and total hits of the countries your website visitors came from\n\nPlease keep in mind that everyone will be able to see that kind of statistic as this plugin does not consider the access rights.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.0.4 or higher is required.\nGD library including ttf support\n\n### Features\n\n- Configurable with following parameters:\n  - idSite: Website to display\n  - period: period to display\n  - date: date to display\n  - cols: count of columns to display (default 2)\n  - rows: count of rows to display (default 5)\n  - showflag: show flags (default 1)\n  - showcountryode: show country codes (default 0)\n  - font: font family to use\n  - fontsize: font size to use (between 2 and 30; default 12)\n  - fontcolor: font color to use (rgb value; default 0,0,0)\n- Generates a transparent PNG image showing the flag icons and their total hits\n- Generates simple HTML to be included as iframe\n\n## FAQ\n\n__The image is not displayed. What can I do?__\n\nMaybe you have some kind of access restriction for your Piwik like http auth. The Url needs to be public accessible, or at least accessible to those, who should be able to see the counter.\n\n__How can I display the counter for all data in the past__\n\nTo do that, set period to ```range``` and date to something like ```1992-01-01,today```.\n\nThe full URL for the image would then look like:\n```\nhttp:\/\/piwik.url\/index.php?module=FlagCounter&action=image&idSite=1&period=range&date=1992-01-01,today&cols=2&rows=6\n``` \n\n__Can I use a custom font?__\n\nCurrently all ttf fonts located in the ```fonts``` directory within this plugin are available for usage. If you place a new font there, you should be able to use it.\n\n\n## Changelog\n\n- Version 0.1 - Alpha Release\n- Version 0.2 \n  - improved image generation (automatic spacing between items)\n  - possibility to show country codes besides or instead of the flags\n- Version 0.3\n  - added ability to choose a font family, size & color\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\nNote: The fonts bundled with this plugin are under the following licenses\n- OpenSans: Apache license\n- Roboto: Apache license\n- Raleway: SIL Open Font License\n- Cantarell: SIL Open Font License\n\n",
+    "numDownloads":2322,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin allows you to include a small image or iframe in you website displaying the flags and total hits of the countries your website visitors came from<\/p>\n\n<p>Please keep in mind that everyone will be able to see that kind of statistic as this plugin does not consider the access rights.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.0.4 or higher is required.\nGD library including ttf support<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Configurable with following parameters:\n\n<ul><li>idSite: Website to display<\/li>\n<li>period: period to display<\/li>\n<li>date: date to display<\/li>\n<li>cols: count of columns to display (default 2)<\/li>\n<li>rows: count of rows to display (default 5)<\/li>\n<li>showflag: show flags (default 1)<\/li>\n<li>showcountryode: show country codes (default 0)<\/li>\n<li>font: font family to use<\/li>\n<li>fontsize: font size to use (between 2 and 30; default 12)<\/li>\n<li>fontcolor: font color to use (rgb value; default 0,0,0)<\/li>\n<\/ul><\/li>\n<li>Generates a transparent PNG image showing the flag icons and their total hits<\/li>\n<li>Generates simple HTML to be included as iframe<\/li>\n<\/ul>",
+      "faq":"<p><strong>The image is not displayed. What can I do?<\/strong><\/p>\n\n<p>Maybe you have some kind of access restriction for your Piwik like http auth. The Url needs to be public accessible, or at least accessible to those, who should be able to see the counter.<\/p>\n\n<p><strong>How can I display the counter for all data in the past<\/strong><\/p>\n\n<p>To do that, set period to <code>range<\/code> and date to something like <code>1992-01-01,today<\/code>.<\/p>\n\n<p>The full URL for the image would then look like:<\/p>\n\n<pre><code>http:\/\/piwik.url\/index.php?module=FlagCounter&amp;action=image&amp;idSite=1&amp;period=range&amp;date=1992-01-01,today&amp;cols=2&amp;rows=6\n<\/code><\/pre>\n\n<p><strong>Can I use a custom font?<\/strong><\/p>\n\n<p>Currently all ttf fonts located in the <code>fonts<\/code> directory within this plugin are available for usage. If you place a new font there, you should be able to use it.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>Version 0.1 - Alpha Release<\/li>\n<li>Version 0.2 \n\n<ul><li>improved image generation (automatic spacing between items)<\/li>\n<li>possibility to show country codes besides or instead of the flags<\/li>\n<\/ul><\/li>\n<li>Version 0.3\n\n<ul><li>added ability to choose a font family, size &amp; color<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.4.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"FreeMobileMessaging",
+  "displayName":"Free Mobile Messaging",
+  "owner":"apapillon",
+  "description":"Mobile Messaging Plugin: Free Mobile support",
+  "homepage":"https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin",
+  "createdDateTime":"2015-11-29 23:10:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin",
+  "lastUpdated":"2015-11-29 23:10:04",
+  "latestVersion":"1.0.0",
+  "numDownloads":1212,"screenshots":[],"previews":[],"activity":{"numCommits":"1",
+    "numContributors":"1",
+    "lastCommitDate":"2015-11-29 23:09:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+    "release":"2015-11-29 23:10:04",
+    "requires":{"piwik":">=2.15.1-b2"},"readme":"# Piwik FreeMobileSMSProvider Plugin \n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform [Piwik][1]. It \nadd Free Mobile SMS provider support to MobileMessaging plugin.\n\n## Installation\n\nInstall the prerequiste MobileMessagin plugin via MarketPlace.\n\nSee http:\/\/piwik.org\/faq\/plugins\/#faq_21\n\n## FAQ\n\n\n## Changelog\n\n__1.0.0__\n* Initial release\n\n## License\n\nGPL v3\n\n## Support\n\nPlease direct any feedback to: \n\n* [https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin\/issues][2]\n\n[1]: http:\/\/piwik.org\n[2]: https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin\/issues\n",
+    "numDownloads":1212,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin\/commits\/1.0",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform <a href=\"http:\/\/piwik.org\">Piwik<\/a>. It \nadd Free Mobile SMS provider support to MobileMessaging plugin.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/FreeMobileMessaging\/download\/1.0.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"GoogleAuthenticator",
+  "displayName":"Google Authenticator",
+  "owner":"sgiehl",
+  "description":"Adds Google Authenticator Two Factor Auth to Piwik",
+  "homepage":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator",
+  "createdDateTime":"2015-07-21 20:46:05",
+  "donate":{"paypal":"stefangiehl@web.de",
+    "flattr":"https:\/\/flattr.com\/thing\/4453253\/sgiehlpiwik-plugin-GoogleAuthenticator-on-GitHub",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator",
+  "lastUpdated":"2015-08-15 15:26:03",
+  "latestVersion":"0.1.0",
+  "numDownloads":2267,"screenshots":[],"previews":[],"activity":{"numCommits":"42",
+    "numContributors":"1",
+    "lastCommitDate":"2016-04-30 14:40:55"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.0.1",
+    "release":"2015-07-21 20:46:05",
+    "requires":{"piwik":">=2.14.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":47,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.1"},{"name":"0.0.2",
+    "release":"2015-07-26 10:56:04",
+    "requires":{"piwik":">=2.14.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":26,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.2"},{"name":"0.0.3",
+    "release":"2015-07-27 20:44:03",
+    "requires":{"piwik":">=2.14.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":19,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.3"},{"name":"0.0.4",
+    "release":"2015-07-28 13:18:03",
+    "requires":{"piwik":">=2.14.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":167,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.4"},{"name":"0.1.0",
+    "release":"2015-08-15 15:26:03",
+    "requires":{"piwik":">=2.14.0",
+      "php":">=5.4.0"},"readme":"# Piwik Google Authenticator Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-GoogleAuthenticator.png?branch=master)](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-GoogleAuthenticator)\n[![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator&title=Piwik Plugin GoogleAuthenticator=&tags=github&category=software) \n\n\n## Description\n\nAdds a userbased possibility to use Google Authenticator 2FA as additional login security.\nEach use can enable\/disable this feature in his account settings.\n\nThis Plugin is based on the original Piwik Login plugin and needs this one to be installed but not active.\n\nATTENTION: Activating Google Authenticator for an account, also requires an auth code for direct API requests with the users token auth. Use ```&auth_code={authcode}``` to do that.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.14.0 or higher is required.\n\n### Features\n\n- Userbased activation of Google Authenticator 2FA\n\n## Changelog\n\n- 0.1.0 Added possibility to define title and description for Google Authenticator app\n- 0.0.4 fixes password reset link\n- 0.0.3 small improvements\n- 0.0.2 Added first translations\n- 0.0.1 Initial release\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\nThe used library [PHPGangsta\/GoogleAuthenticator](https:\/\/github.com\/PHPGangsta\/GoogleAuthenticator) is licensed under BSD\n\n",
+    "numDownloads":2008,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Adds a userbased possibility to use Google Authenticator 2FA as additional login security.\nEach use can enable\/disable this feature in his account settings.<\/p>\n\n<p>This Plugin is based on the original Piwik Login plugin and needs this one to be installed but not active.<\/p>\n\n<p>ATTENTION: Activating Google Authenticator for an account, also requires an auth code for direct API requests with the users token auth. Use <code>&amp;auth_code={authcode}<\/code> to do that.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.14.0 or higher is required.<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Userbased activation of Google Authenticator 2FA<\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0 Added possibility to define title and description for Google Authenticator app<\/li>\n<li>0.0.4 fixes password reset link<\/li>\n<li>0.0.3 small improvements<\/li>\n<li>0.0.2 Added first translations<\/li>\n<li>0.0.1 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"GrabGravatar",
+  "displayName":"Grab Gravatar",
+  "owner":"alnoorp",
+  "description":"Adds a profile photo from Gravatar based on the email address stored in the User Id field.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-03-18 04:20:04",
+  "donate":{"paypal":"alnoorp@gmail.com",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar",
+  "lastUpdated":"2015-07-24 14:26:11",
+  "latestVersion":"0.2.0",
+  "numDownloads":2018,"screenshots":[],"previews":[],"activity":{"numCommits":"15",
+    "numContributors":"1",
+    "lastCommitDate":"2015-03-22 04:22:05"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-03-18 04:20:04",
+    "requires":{"piwik":">=2.11.2"},"readme":"",
+    "numDownloads":6,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-07-24 14:26:04",
+    "requires":{"piwik":">=2.11.2"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.1.1"},{"name":"0.1.11",
+    "release":"2015-07-24 14:26:07",
+    "requires":{"piwik":">=2.11.2"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.1.11"},{"name":"0.2.0",
+    "release":"2015-07-24 14:26:11",
+    "requires":{"piwik":">=2.11.2"},"readme":"# Piwik GrabGravatar Plugin\n\n## Description\n\nA Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.\n\n## Installation\n\nInstall it via Piwik Marketplace\n\n## FAQ\n\n__What information do I need to make this plugin work?__\nMake sure you are capturing the email address for your visitors in the User Id field.\n\n__Why do some of my visitors just display the Gravatar logo instead of a photo?__\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com\n\n## Changelog\n\n* 0.1.11 Fixed screenshot filename\n* 0.1.1 Add screenshots\n* 0.1.0 First beta\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease direct any feedback to <alnoorp@gmail.com>\n",
+    "numDownloads":2012,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.2",
+    "readmeHtml":{"description":"\n\n<p>A Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.<\/p>\n\n",
+      "faq":"<p><strong>What information do I need to make this plugin work?<\/strong>\nMake sure you are capturing the email address for your visitors in the User Id field.<\/p>\n\n<p><strong>Why do some of my visitors just display the Gravatar logo instead of a photo?<\/strong>\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.11 Fixed screenshot filename<\/li>\n<li>0.1.1 Add screenshots<\/li>\n<li>0.1.0 First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"InterSites",
+  "displayName":"Inter Sites",
+  "owner":"PiwikPRO",
+  "description":"Analyze how many visitors navigate between your websites.",
+  "homepage":"http:\/\/piwik.pro",
+  "createdDateTime":"2014-09-14 04:10:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites",
+  "lastUpdated":"2016-03-08 14:16:03",
+  "latestVersion":"0.4.0",
+  "numDownloads":7766,"screenshots":[],"previews":[],"activity":{"numCommits":"69",
+    "numContributors":"6",
+    "lastCommitDate":"2016-04-15 22:58:13"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-09-14 04:10:03",
+    "requires":{"piwik":">=2.7.0-b3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-09-14 04:40:03",
+    "requires":{"piwik":">=2.7.0-b3"},"readme":"",
+    "numDownloads":1138,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-12-08 02:56:04",
+    "requires":{"piwik":">=2.10.0-b6"},"readme":"",
+    "numDownloads":951,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.1.2"},{"name":"0.2.0",
+    "release":"2015-03-04 13:02:04",
+    "requires":{"piwik":">=2.10.0"},"readme":"",
+    "numDownloads":126,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2015-03-05 08:36:03",
+    "requires":{"piwik":">=2.10.0"},"readme":"",
+    "numDownloads":1472,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.2.1"},{"name":"0.2.3",
+    "release":"2015-07-29 11:10:03",
+    "requires":{"piwik":">=2.11.0"},"readme":"",
+    "numDownloads":1043,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.2.3"},{"name":"0.3.0",
+    "release":"2015-10-21 23:18:03",
+    "requires":{"piwik":">=2.11.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.3.0"},{"name":"0.3.1",
+    "release":"2015-10-21 23:24:03",
+    "requires":{"piwik":">=2.15.0-rc4"},"readme":"",
+    "numDownloads":372,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.3.1"},{"name":"0.3.2",
+    "release":"2015-11-11 20:10:03",
+    "requires":{"piwik":">=2.15.0"},"readme":"",
+    "numDownloads":1597,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.3.2"},{"name":"0.4.0",
+    "release":"2016-03-08 14:16:03",
+    "requires":{"piwik":">=2.16.0"},"readme":"InterSites\n==========\n\nMaster: [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites)\nDevelop: [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites)\n\n**Analyze how visitors navigate between your websites.**\n\n## Description\n\nMeasures number of visits and unique visitors that have navigated across two or three specific websites.\n\n_(Unique user is determined across websites using the fingerprint config\\_id stored in the DB.)_\n\n## Features\n\n### See how many visitors visited more than one of your websites.\n\nTo access this functionality, navigate to the All Websites dashboard. Here there will be a new link that says _Number of visitors who viewed several websites_. Click this link and a dialog will display that will allow you to get visitor metrics for many sites.\n\nComparison of visits is done in dates for the UTC time, not for the site specific time.\n\n\n## Changelog\n * 0.4.0\n   - PPCDEV-2609 Compatibility with Piwik 2.16.0\n * 0.3.2\n    - Changed minimum required Piwik to 2.15.0\n * 0.3.1\n    - Bumping minimum required Piwik.\n * 0.3.0\n    - Compatibility w\/ Piwik 2.15.\n * 0.2.2:\n    - Fixed bug with day period\n    - Added tests for day and month period\n    - Fixed Site names display, as they were displayed as HTML entities\n * 0.2.1: Market release\n * 0.2.0: Introduced composer.json file\n * 0.1.2: Compatibility with Piwik 2.10.0 (Notification will explain that config setting `enable_fingerprinting_across_websites=1` is required)\n * 0.1.0: Initial release\n",
+    "numDownloads":1067,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Measures number of visits and unique visitors that have navigated across two or three specific websites.<\/p>\n\n<p><em>(Unique user is determined across websites using the fingerprint config_id stored in the DB.)<\/em><\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>0.4.0\n\n<ul><li>PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<\/ul><\/li>\n<li>0.3.2\n\n<ul><li>Changed minimum required Piwik to 2.15.0<\/li>\n<\/ul><\/li>\n<li>0.3.1\n\n<ul><li>Bumping minimum required Piwik.<\/li>\n<\/ul><\/li>\n<li>0.3.0\n\n<ul><li>Compatibility w\/ Piwik 2.15.<\/li>\n<\/ul><\/li>\n<li>0.2.2:\n\n<ul><li>Fixed bug with day period<\/li>\n<li>Added tests for day and month period<\/li>\n<li>Fixed Site names display, as they were displayed as HTML entities<\/li>\n<\/ul><\/li>\n<li>0.2.1: Market release<\/li>\n<li>0.2.0: Introduced composer.json file<\/li>\n<li>0.1.2: Compatibility with Piwik 2.10.0 (Notification will explain that config setting <code>enable_fingerprinting_across_websites=1<\/code> is required)<\/li>\n<li>0.1.0: Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.4.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"IntranetGeoIP",
+  "displayName":"Intranet Geo IP",
+  "owner":"ThaDafinser",
+  "description":"Piwik plugin to locate all locale data of a user based on the IP address\/subnetwork (country, region, city, latitude, longitude, provider, ...)",
+  "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP",
+  "createdDateTime":"2014-06-12 08:04:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP",
+  "lastUpdated":"2015-07-13 10:54:03",
+  "latestVersion":"2.2.0",
+  "numDownloads":9934,"screenshots":[],"previews":[],"activity":{"numCommits":"67",
+    "numContributors":"1",
+    "lastCommitDate":"2015-10-15 12:35:16"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+    "release":"2014-06-12 08:04:04",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":6,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0"},{"name":"1.0.1",
+    "release":"2014-06-12 08:16:10",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.1"},{"name":"1.0.2",
+    "release":"2014-06-12 08:20:10",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.2"},{"name":"1.0.4",
+    "release":"2014-06-12 08:44:03",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":3,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.4"},{"name":"1.0.5",
+    "release":"2014-06-12 09:06:03",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":2,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.5"},{"name":"1.0.6",
+    "release":"2014-06-12 11:08:04",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.6"},{"name":"1.0.7",
+    "release":"2014-06-12 11:12:04",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":24,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.7"},{"name":"1.0.8",
+    "release":"2014-06-13 09:22:03",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":208,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.8"},{"name":"1.0.9",
+    "release":"2014-07-02 12:44:04",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":201,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.9"},{"name":"1.1.0",
+    "release":"2014-07-15 15:34:05",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":63,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.1.0"},{"name":"1.2.0",
+    "release":"2014-07-17 11:34:04",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":166,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.2.0"},{"name":"2.0.0",
+    "release":"2014-07-28 07:04:08",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":420,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.0.0"},{"name":"2.0.1",
+    "release":"2014-08-29 08:12:04",
+    "requires":{"piwik":">=2.3.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":1875,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.0.1"},{"name":"2.1.0",
+    "release":"2015-01-28 09:40:04",
+    "requires":{"piwik":">=2.9.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":504,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.1.0"},{"name":"2.1.3",
+    "release":"2015-02-25 07:50:04",
+    "requires":{"piwik":">=2.9.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":1997,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.1.3"},{"name":"2.2.0",
+    "release":"2015-07-13 10:54:03",
+    "requires":{"piwik":">=2.9.0",
+      "php":">=5.4.0"},"readme":"# Piwik IntranetGeoIp Plugin\n\n## Description\n\nPiwik plugin to locate all locale data of a user based on the IP address\/subnetwork (country, region, city, latitude, longitude, provider, ...)\n\n***Please use it only for INTRANET tracking*** everything else just dont make sense :-)\n\n## FAQ\n\n__What does this plugin do?__\n\nIt adds visitor information based on the matched IP address from your configuration. Not more and not less.\nThe database schema and UI stays untouched, so all Piwik statistics can be used like you would use a internet GeoIP database.\n\n\n__How to configure\/install this plugin \/ the networks?__\n\nAfter installation and activation of the plugin, open the file `piwik\/config\/IntranetGeoIP.data.php`\n\nYou can their add your location information and their subnetworks.\n\nSee the file `piwik\/config\/IntranetGeoIP.data.php` or see the readme on github https:\/\/github.com\/ThaDafinser\/IntranetGeoIp\n\n\n__What statistics are available?__\n\nIf you create a full configuration data file, you'll see\n* Visitor -> Realtime visitor map\n* Visitor -> Location and provider\n* and many more...(in generall all statistics are available like using a internet GeoIP database)\n\n\n__Why there stands provider \"unknown\" in my visitor log?__\n\nIf your installation is stock, all visitors will get this \"flag\" to show you, what IPs are not matched.\nYou can adjust or remove this, by changing the \"noMatch\" block in your `IntranetGeoIP.data.php` file.\nIf you remove the complete block, none matched visitors will be skipped by this plugin.\nBut you can also fill all possible visitorInfos like you are used for matched IP addresses.\n\n\n__Can i use this plugin with a internet GeoIP database side by side?__\n\nYes you can.\nJust remove or comment out the `noMatch` block in your configuration file.\n\n__Note about the configuration?__\n\nInside the array key `visitorInfo` you can freely add\/remove all available columns from the `log_visit` table you want.\nThe keys below are just a suggestion, since they are the only one which make sense currently IMO.\nAll available fields, see here: http:\/\/developer.piwik.org\/guides\/persistence-and-the-mysql-backend#visits\n\nInside they key `networks` add all subnetworks which apply to this location.\n\n```php\nreturn [\n    \/*\n     * If the IP was not matched, apply these data to visitorInfo\n     * You can also apply here all possible visitorInformation data if you want\n     *\/\n    'noMatch' => [\n        'visitorInfo' => [\n            'location_provider' => 'unknown'\n        ]\n    ],\n    \n    [\n        'visitorInfo' => [\n            \/\/ISO-3166 alpha-2 code http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1\n            'location_country' => 'at',\n            \n            \/\/the region code (i take them from piwik\/libs\/MaxMindGeoIp\/geoipregionvars.php\n            'location_region' => '08',\n            \n            \/\/should be freetext\n            'location_city' => 'Muntlix',\n            \n            \/\/get this from a picker, e.g. http:\/\/www.tytai.com\/gmap\/\n            'location_latitude' => '47.282024',\n            'location_longitude' => '9.662304',\n            \n            \/\/enter your company name or do it based on your domain hierarchy\n            'location_provider' => 'myCompany'\n        ],\n        'networks' => [\n            \/\/enter here all subnetworks for this location\n            \/\/use a subnetwork calculator, e.g. http:\/\/jodies.de\/ipcalc\n            '10.59.0.0\/19',\n            '170.56.251.200\/29'\n        ]\n    ],\n    \n    \/\/add more blocks live above\n];\n```\n",
+    "numDownloads":4463,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Piwik plugin to locate all locale data of a user based on the IP address\/subnetwork (country, region, city, latitude, longitude, provider, ...)<\/p>\n\n<p><strong><em>Please use it only for INTRANET tracking<\/em><\/strong> everything else just dont make sense :-)<\/p>\n\n",
+      "faq":"<p><strong>What does this plugin do?<\/strong><\/p>\n\n<p>It adds visitor information based on the matched IP address from your configuration. Not more and not less.\nThe database schema and UI stays untouched, so all Piwik statistics can be used like you would use a internet GeoIP database.<\/p>\n\n<p><strong>How to configure\/install this plugin \/ the networks?<\/strong><\/p>\n\n<p>After installation and activation of the plugin, open the file <code>piwik\/config\/IntranetGeoIP.data.php<\/code><\/p>\n\n<p>You can their add your location information and their subnetworks.<\/p>\n\n<p>See the file <code>piwik\/config\/IntranetGeoIP.data.php<\/code> or see the readme on github https:\/\/github.com\/ThaDafinser\/IntranetGeoIp<\/p>\n\n<p><strong>What statistics are available?<\/strong><\/p>\n\n<p>If you create a full configuration data file, you'll see\n* Visitor -&gt; Realtime visitor map\n* Visitor -&gt; Location and provider\n* and many more...(in generall all statistics are available like using a internet GeoIP database)<\/p>\n\n<p><strong>Why there stands provider \"unknown\" in my visitor log?<\/strong><\/p>\n\n<p>If your installation is stock, all visitors will get this \"flag\" to show you, what IPs are not matched.\nYou can adjust or remove this, by changing the \"noMatch\" block in your <code>IntranetGeoIP.data.php<\/code> file.\nIf you remove the complete block, none matched visitors will be skipped by this plugin.\nBut you can also fill all possible visitorInfos like you are used for matched IP addresses.<\/p>\n\n<p><strong>Can i use this plugin with a internet GeoIP database side by side?<\/strong><\/p>\n\n<p>Yes you can.\nJust remove or comment out the <code>noMatch<\/code> block in your configuration file.<\/p>\n\n<p><strong>Note about the configuration?<\/strong><\/p>\n\n<p>Inside the array key <code>visitorInfo<\/code> you can freely add\/remove all available columns from the <code>log_visit<\/code> table you want.\nThe keys below are just a suggestion, since they are the only one which make sense currently IMO.\nAll available fields, see here: http:\/\/developer.piwik.org\/guides\/persistence-and-the-mysql-backend#visits<\/p>\n\n<p>Inside they key <code>networks<\/code> add all subnetworks which apply to this location.<\/p>\n\n<pre><code>return [\n    \/*\n     * If the IP was not matched, apply these data to visitorInfo\n     * You can also apply here all possible visitorInformation data if you want\n     *\/\n    'noMatch' =&gt; [\n        'visitorInfo' =&gt; [\n            'location_provider' =&gt; 'unknown'\n        ]\n    ],\n\n    [\n        'visitorInfo' =&gt; [\n            \/\/ISO-3166 alpha-2 code http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1\n            'location_country' =&gt; 'at',\n\n            \/\/the region code (i take them from piwik\/libs\/MaxMindGeoIp\/geoipregionvars.php\n            'location_region' =&gt; '08',\n\n            \/\/should be freetext\n            'location_city' =&gt; 'Muntlix',\n\n            \/\/get this from a picker, e.g. http:\/\/www.tytai.com\/gmap\/\n            'location_latitude' =&gt; '47.282024',\n            'location_longitude' =&gt; '9.662304',\n\n            \/\/enter your company name or do it based on your domain hierarchy\n            'location_provider' =&gt; 'myCompany'\n        ],\n        'networks' =&gt; [\n            \/\/enter here all subnetworks for this location\n            \/\/use a subnetwork calculator, e.g. http:\/\/jodies.de\/ipcalc\n            '10.59.0.0\/19',\n            '170.56.251.200\/29'\n        ]\n    ],\n\n    \/\/add more blocks live above\n];\n<\/code><\/pre>",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Ip2Hostname",
+  "displayName":"IP 2 Hostname",
+  "owner":"ThaDafinser",
+  "description":"Piwik plugin to get the hostname from the visitor IP",
+  "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname",
+  "createdDateTime":"2015-01-28 11:44:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname",
+  "lastUpdated":"2015-10-15 08:00:03",
+  "latestVersion":"v2.0.0",
+  "numDownloads":4169,"screenshots":[],"previews":[],"activity":{"numCommits":"16",
+    "numContributors":"2",
+    "lastCommitDate":"2015-10-15 07:59:15"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+    "release":"2015-01-28 11:44:03",
+    "requires":{"piwik":">=2.10.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":2,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/1.0.0"},{"name":"1.0.1",
+    "release":"2015-01-28 12:18:02",
+    "requires":{"piwik":">=2.10.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":1827,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/2.0.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/1.0.1"},{"name":"1.0.3",
+    "release":"2015-08-24 13:28:03",
+    "requires":{"piwik":">=2.10.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":515,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/1.0.3"},{"name":"v2.0.0",
+    "release":"2015-10-15 08:00:03",
+    "requires":{"piwik":">=2.15.0",
+      "php":">=5.5.0"},"readme":"# Piwik Ip2Hostname Plugin\n\n## Description\n\nThis plugin (try) to get the hostname of the visitor and write it into the `log_visitor` table.\n\nThere are currently ***no reports or any views available***, to see a result. ***You need to directly query the table!***\nI currently dont have the time and need of such a view, and therefor maybe you'll never see one...if nobody else create oen :-)\n\nNOTE:\n***I use it currently only in an intranet enviroment*** to detect computers which have old enviroment, because the IP might change i log the hostname.\n\nI never tried it and probably wont use it for internet...\n",
+    "numDownloads":1825,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/0.1.3",
+    "readmeHtml":{"description":"\n\n<p>This plugin (try) to get the hostname of the visitor and write it into the <code>log_visitor<\/code> table.<\/p>\n\n<p>There are currently <strong><em>no reports or any views available<\/em><\/strong>, to see a result. <strong><em>You need to directly query the table!<\/em><\/strong>\nI currently dont have the time and need of such a view, and therefor maybe you'll never see one...if nobody else create oen :-)<\/p>\n\n<p>NOTE:\n<strong><em>I use it currently only in an intranet enviroment<\/em><\/strong> to detect computers which have old enviroment, because the IP might change i log the hostname.<\/p>\n\n<p>I never tried it and probably wont use it for internet...<\/p>",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/v2.0.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"IP2Location",
+  "displayName":"IP 2 Location",
+  "owner":"ip2location",
+  "description":"Use IP2Location geolocation database to lookup for accurate visitor location in Piwik.",
+  "homepage":"http:\/\/www.ip2location.com\/developers\/piwik",
+  "createdDateTime":"2014-04-23 09:24:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik",
+  "lastUpdated":"2016-04-19 03:08:03",
+  "latestVersion":"2.2.0",
+  "numDownloads":16518,"screenshots":[],"previews":[],"activity":{"numCommits":"33",
+    "numContributors":"3",
+    "lastCommitDate":"2016-04-19 03:07:28"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"2.0.0",
+    "release":"2014-04-23 09:24:05",
+    "requires":{"piwik":">=2.0.1",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":1589,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.0.0"},{"name":"2.0.2",
+    "release":"2014-07-15 07:50:03",
+    "requires":{"piwik":">=2.0.1",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":3772,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.0.2"},{"name":"2.1.1",
+    "release":"2015-03-10 01:36:03",
+    "requires":{"piwik":">=2.0.1",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":402,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.1"},{"name":"2.1.3",
+    "release":"2015-03-24 01:54:03",
+    "requires":{"piwik":">=2.12.0",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":199,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.3"},{"name":"2.1.4",
+    "release":"2015-03-30 00:48:04",
+    "requires":{"piwik":">=2.12.0",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":221,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.4"},{"name":"2.1.5",
+    "release":"2015-04-07 08:08:03",
+    "requires":{"piwik":">=2.12.0",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":5127,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.5"},{"name":"2.1.8",
+    "release":"2015-12-16 01:22:03",
+    "requires":{"piwik":">=2.12.0",
+      "php":">=5.3.20"},"readme":"",
+    "numDownloads":3639,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/1.0.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.8"},{"name":"2.2.0",
+    "release":"2016-04-19 03:08:03",
+    "requires":{"piwik":">=2.12.0",
+      "php":">=5.3.20"},"readme":"# Piwik IP2Location Plugin \n\n## Description\n\nThis IP2Location plugin enables more accurate location lookup in your Piwik visitor log.\n\nYou need a IP2Location BIN database to make this plugin works. Database is available for free at\n\nhttp:\/\/lite.ip2location.com or http:\/\/www.ip2location.com for a commercial database.\n\n## Installation \/ Update\n\nSee http:\/\/piwik.org\/faq\/plugins\/#faq_21\n\n## Changelog\n\n__2.2.0__\n* added custom report to view additional information such as Time Zone, ZIP code, usage type.\n\n__2.1.0__\n* updated to IP2Location 7.0.0 library\n\n__2.0.0__\n* first release for Piwik 2.0\n\n## License\n\nGPL v3 \/ fair use\n\n## Support\n\nPlease contact us at support@ip2location.com\n",
+    "numDownloads":1569,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/0.46",
+    "readmeHtml":{"description":"\n\n<p>This IP2Location plugin enables more accurate location lookup in your Piwik visitor log.<\/p>\n\n<p>You need a IP2Location BIN database to make this plugin works. Database is available for free at<\/p>\n\n<p>http:\/\/lite.ip2location.com or http:\/\/www.ip2location.com for a commercial database.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p><strong>2.2.0<\/strong>\n* added custom report to view additional information such as Time Zone, ZIP code, usage type.<\/p>\n\n<p><strong>2.1.0<\/strong>\n* updated to IP2Location 7.0.0 library<\/p>\n\n<p><strong>2.0.0<\/strong>\n* first release for Piwik 2.0<\/p>"},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"IPv6Usage",
+  "displayName":"IPv6 Usage",
+  "owner":"halfdan",
+  "description":"Piwik Plugin to track whether visitors are using IPv4 or IPv6",
+  "homepage":"http:\/\/github.com\/halfdan\/IPv6Usage",
+  "createdDateTime":"2014-12-23 00:40:33",
+  "donate":{"flattr":"https:\/\/flattr.com\/profile\/test1",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":["ipv4",
+    "ipv6"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+    "email":"test8@example.com",
+    "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/IPv6Usage",
+  "lastUpdated":"2014-12-23 01:13:18",
+  "latestVersion":"0.6.0",
+  "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"35",
+    "numContributors":"2",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.5.0",
+    "release":"2014-12-23 00:40:33",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/IPv6Usage\/commits\/0.5.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/IPv6Usage\/download\/0.5.0"},{"name":"0.6.0",
+    "release":"2014-12-23 01:13:18",
+    "requires":{},"readme":"# IPv6Usage\n\n## Description\n\nThis is a plugin for Piwik that generates reports about the IPv6 reach of your websites. It is written as a tracker plugin and directly hooks into the Piwik tracking call.\n\n## Documentation\n\nI wrote an article about the development that lead to this plugin and explained how the plugin works internally. You can find the article at [Geekmonkey](http:\/\/geekmonkey.org\/articles\/34-how-to-write-a-piwik-plugin)\n\nThere is also a [short article](http:\/\/geekmonkey.org\/articles\/33-tracking-the-ipv6-reach-of-your-website-with-piwik\/) that explains how to setup the plugin.\n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests or create issues.\n\n## License\n\nGPLv3 or later\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/IPv6Usage\/commits\/0.6.0",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for Piwik that generates reports about the IPv6 reach of your websites. It is written as a tracker plugin and directly hooks into the Piwik tracking call.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/IPv6Usage\/download\/0.6.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"kDebug",
+  "displayName":"kDebug",
+  "owner":"XaviTorello",
+  "description":"Activate or deactivate DEBUG tracking mode with a simple click.",
+  "homepage":"http:\/\/xaviertorello.cat",
+  "createdDateTime":"2014-09-09 13:42:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik",
+  "lastUpdated":"2014-09-19 13:08:03",
+  "latestVersion":"0.1.2",
+  "numDownloads":3626,"screenshots":[],"previews":[],"activity":{"numCommits":"8",
+    "numContributors":"2",
+    "lastCommitDate":"2016-01-11 08:58:56"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-09-09 13:42:03",
+    "requires":{"piwik":">=2.4.0-b1",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/kDebug\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-09-09 14:06:03",
+    "requires":{"piwik":">=2.4.0-b1",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":133,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/kDebug\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-09-19 13:08:03",
+    "requires":{"piwik":">=2.4.0-b1",
+      "php":">=5.3.0"},"readme":"# Piwik kDebug Plugin\n\n## Description\n\nActivate or deactivate DEBUG tracking mode with a simple click.\n\n![kDebug Screenshot](http:\/\/xaviertorello.cat\/img\/projects\/kDebugEN.png \"kDebug toogle\")\n\nkDebug is a simple plugin for Piwik to enable \/ disable DEBUG mode for tracking requests with a simple click.\n\nBy default, it's needed to modify manually the Piwiks config.ini file.\n\nWith this plugin just navigate to \"Settings > Debug\", and click on the toggle button to change the status of DEBUG mode.\n\n[More information](http:\/\/xaviertorello.cat\/#portfolio \"Xavier Torell\u00f3 Porfolio\")\n\n\n\n## Installation\n\nInstall it via Piwik Marketplace\n\n\n## FAQ\n\n__What exactly is included in this plugin?__\n\n* A simple and quick method to enable\/disable DEBUG mode for tracking requests\n\n\n## Changelog\n\n0.1.0 First version. Toggle button to activate\/deactivate DEBUG mode\n\n\n## License\n\nGPL v3 or later\n\n\n## Support\n\nPlease direct any feedback to [Xavier Torell\u00f3](http:\/\/xaviertorello.cat \"Xavier Torell\u00f3\") [http:\/\/xaviertorello.cat\/#contact]\n",
+    "numDownloads":3492,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Activate or deactivate DEBUG tracking mode with a simple click.<\/p>\n\n<p><img src=\"http:\/\/xaviertorello.cat\/img\/projects\/kDebugEN.png\" alt=\"kDebugEN.png\" \/><\/p>\n\n<p>kDebug is a simple plugin for Piwik to enable \/ disable DEBUG mode for tracking requests with a simple click.<\/p>\n\n<p>By default, it's needed to modify manually the Piwiks config.ini file.<\/p>\n\n<p>With this plugin just navigate to \"Settings &gt; Debug\", and click on the toggle button to change the status of DEBUG mode.<\/p>\n\n<p><a href=\"http:\/\/xaviertorello.cat\/#portfolio\">More information<\/a><\/p>\n\n",
+      "faq":"<p><strong>What exactly is included in this plugin?<\/strong><\/p>\n\n<ul><li>A simple and quick method to enable\/disable DEBUG mode for tracking requests<\/li>\n<\/ul>",
+      "documentation":"",
+      "changelog":"<p>0.1.0 First version. Toggle button to activate\/deactivate DEBUG mode<\/p>"},"download":"\/api\/2.0\/plugins\/kDebug\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LdapConnection",
+  "displayName":"Ldap Connection",
+  "owner":"ThaDafinser",
+  "description":"Plugin to make a LDAP connection, which can be used by various LDAP plugins",
+  "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection",
+  "createdDateTime":"2014-08-06 07:50:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection",
+  "lastUpdated":"2015-01-29 07:20:09",
+  "latestVersion":"0.3.1",
+  "numDownloads":4104,"screenshots":[],"previews":[],"activity":{"numCommits":"11",
+    "numContributors":"1",
+    "lastCommitDate":"2015-03-12 11:53:13"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-08-06 07:50:08",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":205,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.1.0"},{"name":"0.2.0",
+    "release":"2014-08-25 09:08:09",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":22,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.2.0"},{"name":"0.3.0",
+    "release":"2014-08-26 06:00:09",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":1119,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.3.0"},{"name":"0.3.1",
+    "release":"2015-01-29 07:20:09",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"# Piwik LdapConnection Plugin\n\n## Description\n\nConfigurable piwik plugin to create an LDAP connection, which can be reused by other plugins.\nIs uses the ZF2 Ldap component: http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap\n\nCurrently used by https:\/\/github.com\/ThaDafinser\/LdapVisitorInfo\n\n## FAQ\n\n__Why is PIWIK 2.5 required?__\n\nBecause the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890\n\n\n__What does this plugin do?__\n\nIt creates based on your configuration a connection to LDAP. Not more and not less :-)\n\n\n__How can i use this LDAP connection in another plugin?__\n\nThis is an example to retrieve the connection.\nFor documentation please see http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap\n\n```php\nnamespace Piwik\\Plugins\\YourPlugin;\n\nuse Piwik\\Plugin;\nuse Piwik\\Plugins\\LdapConnection\\API as APILdapConnection;\nuse Zend\\Ldap\\Ldap;\n\nclass YourPlugin extends Plugin\n{\n    private function doSomething()\n    {\n    \t\/* @var $ldap \\Zend\\Ldap\\Ldap *\/\n        $ldap = APILdapConnection::getInstance()->getConnection();\n        $ldap->connect();\n        \n        $filter = sprintf('(&(objectclass=user)(samAccountName=%s))', $visitorUsername);\n        $collection = $ldap->search($filter, null, Ldap::SEARCH_SCOPE_SUB, ['displayname']);\n        \n        if ($collection->count() >= 1) {\n        \t$result = $collection->getFirst();\n        \t\/\/do something with the result...\n        }\n    }\n}\n```\n",
+    "numDownloads":2758,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.5.1",
+    "readmeHtml":{"description":"\n\n<p>Configurable piwik plugin to create an LDAP connection, which can be reused by other plugins.\nIs uses the ZF2 Ldap component: http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap<\/p>\n\n<p>Currently used by https:\/\/github.com\/ThaDafinser\/LdapVisitorInfo<\/p>\n\n",
+      "faq":"<p><strong>Why is PIWIK 2.5 required?<\/strong><\/p>\n\n<p>Because the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890<\/p>\n\n<p><strong>What does this plugin do?<\/strong><\/p>\n\n<p>It creates based on your configuration a connection to LDAP. Not more and not less :-)<\/p>\n\n<p><strong>How can i use this LDAP connection in another plugin?<\/strong><\/p>\n\n<p>This is an example to retrieve the connection.\nFor documentation please see http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap<\/p>\n\n<pre><code>namespace Piwik\\Plugins\\YourPlugin;\n\nuse Piwik\\Plugin;\nuse Piwik\\Plugins\\LdapConnection\\API as APILdapConnection;\nuse Zend\\Ldap\\Ldap;\n\nclass YourPlugin extends Plugin\n{\n    private function doSomething()\n    {\n        \/* @var $ldap \\Zend\\Ldap\\Ldap *\/\n        $ldap = APILdapConnection::getInstance()-&gt;getConnection();\n        $ldap-&gt;connect();\n\n        $filter = sprintf('(&amp;(objectclass=user)(samAccountName=%s))', $visitorUsername);\n        $collection = $ldap-&gt;search($filter, null, Ldap::SEARCH_SCOPE_SUB, ['displayname']);\n\n        if ($collection-&gt;count() &gt;= 1) {\n            $result = $collection-&gt;getFirst();\n            \/\/do something with the result...\n        }\n    }\n}\n<\/code><\/pre>",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LdapVisitorInfo",
+  "displayName":"Ldap Visitor Info",
+  "owner":"ThaDafinser",
+  "description":"Piwik plugin to get visitor details (thumbnail, description) from LDAP",
+  "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo",
+  "createdDateTime":"2014-08-06 07:50:42",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo",
+  "lastUpdated":"2015-02-23 09:30:03",
+  "latestVersion":"1.0.0",
+  "numDownloads":4381,"screenshots":[],"previews":[],"activity":{"numCommits":"16",
+    "numContributors":"1",
+    "lastCommitDate":"2015-03-12 11:51:34"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-08-06 07:50:42",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":175,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.1.0"},{"name":"0.2.0",
+    "release":"2014-08-25 09:06:04",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":80,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.2.0"},{"name":"0.3.0",
+    "release":"2014-09-01 06:28:05",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":1089,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.3.0"},{"name":"0.3.1",
+    "release":"2015-01-29 07:20:14",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":239,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.5.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.3.1"},{"name":"1.0.0",
+    "release":"2015-02-23 09:30:03",
+    "requires":{"piwik":">=2.5.0",
+      "php":">=5.4.0"},"readme":"# Piwik LdapVisitorInfo Plugin\n\n## Description\n\nConfigurable piwik plugin to view a visitor thumbnail and description live from LDAP.\n\n***This plugin requires https:\/\/github.com\/ThaDafinser\/LdapConnection to work!***\n\n## FAQ\n\n__Why is PIWIK 2.5 required?__\n\nBecause the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890\n\n\n__What does this plugin do?__\n\nIt displays live a thumbnail and a description in the visitor detail page from LDAP\n\n\n__How to tell Piwik which user is currently using your website?__\n\nYou need so track a custom user (username, mail, ...) visitor variable, so this plugin know which user shall be fetched from LDAP.\nPlease see the official documentation: http:\/\/piwik.org\/docs\/custom-variables\/ or http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables\n\nExample:\n`_paq.push([\"setCustomVariable\", 1, \"username\", \"<?php echo $usenamer; ?>\", \"visit\"]);`\n\n__NEW: Use the userId from Piwik itself__\n\nNow you can use the piwik UserId: http:\/\/piwik.org\/docs\/user-id\/\nJust change the plugin settings to use the piwik UserId instead of a custom variable!\n",
+    "numDownloads":2798,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Configurable piwik plugin to view a visitor thumbnail and description live from LDAP.<\/p>\n\n<p><strong><em>This plugin requires https:\/\/github.com\/ThaDafinser\/LdapConnection to work!<\/em><\/strong><\/p>\n\n",
+      "faq":"<p><strong>Why is PIWIK 2.5 required?<\/strong><\/p>\n\n<p>Because the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890<\/p>\n\n<p><strong>What does this plugin do?<\/strong><\/p>\n\n<p>It displays live a thumbnail and a description in the visitor detail page from LDAP<\/p>\n\n<p><strong>How to tell Piwik which user is currently using your website?<\/strong><\/p>\n\n<p>You need so track a custom user (username, mail, ...) visitor variable, so this plugin know which user shall be fetched from LDAP.\nPlease see the official documentation: http:\/\/piwik.org\/docs\/custom-variables\/ or http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables<\/p>\n\n<p>Example:\n<code>_paq.push([\"setCustomVariable\", 1, \"username\", \"&lt;?php echo $usenamer; ?&gt;\", \"visit\"]);<\/code><\/p>\n\n<p><strong>NEW: Use the userId from Piwik itself<\/strong><\/p>\n\n<p>Now you can use the piwik UserId: http:\/\/piwik.org\/docs\/user-id\/\nJust change the plugin settings to use the piwik UserId instead of a custom variable!<\/p>",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/1.0.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LiveTab",
+  "displayName":"Live Tab",
+  "owner":"tsteur",
+  "description":"Keep an eye on the number of live visitors in the browser tab. It displays the number of visitors in the last 30 minutes in the browser tab.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 00:38:34",
+  "donate":{"paypal":"test1@example.com",
+    "flattr":"https:\/\/flattr.com\/profile\/steurth",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":["live",
+    "tab"],"basePrice":0,"authors":[{"name":"Thomas Steur",
+    "email":"test10@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin",
+  "lastUpdated":"2014-12-23 01:01:50",
+  "latestVersion":"1.0.8",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/LiveTab\/images\/Browser_Tab.png"],"previews":[],"activity":{"numCommits":"54",
+    "numContributors":"1",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+    "release":"2014-12-23 00:38:34",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/0.1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0"},{"name":"1.0.1",
+    "release":"2014-12-23 00:38:48",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/v1.0.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.1"},{"name":"1.0.2",
+    "release":"2014-12-23 00:39:02",
+    "requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/v1.0.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.2"},{"name":"1.0.3",
+    "release":"2014-12-23 00:40:08",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/v1.0.3b",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.3"},{"name":"1.0.8",
+    "release":"2014-12-23 01:01:50",
+    "requires":{"piwik":">=2.0.0"},"readme":"# Piwik LiveTab Plugin \n\n[![Build Status](https:\/\/travis-ci.org\/tsteur\/piwik-livetab-plugin.png?branch=master)](https:\/\/travis-ci.org\/tsteur\/piwik-livetab-plugin)\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform [Piwik](http:\/\/piwik.org). It allows you to keep an eye on the number of live visitors in the browser tab. It displays the number of visits, actions, unique visitors or converted goals in the last X minutes in the browser tab. The number will be updated every minute.\n\nFor better and faster readability the value will be shortened when greater than 1000. For instance to 3.12K or 3.43M.\n\n![Screenshot](https:\/\/raw.github.com\/tsteur\/piwik-livetab-plugin\/master\/screenshots\/Browser_Tab.png)\n\n## Installation\n\nSee http:\/\/piwik.org\/faq\/plugins\/#faq_21\n\n## FAQ\n\n__Is it possible to configure the displayed metric?__\n\nYes, you can choose between Visits, Actions, Converted Visits and Visitors.\n\n__Is it possible to configure the displayed metric per user?__\n\nYes, this is also possible. Each user can configure the plugin differently.\n\n\n## Changelog\n\n__1.0.2__\n* Compatible with Piwik 2.0\n\n__1.0.0__\n* Initial release\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease direct any feedback to: \n\n* [https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/issues](https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/issues)\n* [https:\/\/www.twitter.com\/tsteur](https:\/\/www.twitter.com\/tsteur)\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/1.0.8",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform <a href=\"http:\/\/piwik.org\">Piwik<\/a>. It allows you to keep an eye on the number of live visitors in the browser tab. It displays the number of visits, actions, unique visitors or converted goals in the last X minutes in the browser tab. The number will be updated every minute.<\/p>\n\n<p>For better and faster readability the value will be shortened when greater than 1000. For instance to 3.12K or 3.43M.<\/p>\n\n<p><img src=\"https:\/\/raw.github.com\/tsteur\/piwik-livetab-plugin\/master\/screenshots\/Browser_Tab.png\" alt=\"Browser_Tab.png\" \/><\/p>\n\n",
+      "faq":"<p><strong>Is it possible to configure the displayed metric?<\/strong><\/p>\n\n<p>Yes, you can choose between Visits, Actions, Converted Visits and Visitors.<\/p>\n\n<p><strong>Is it possible to configure the displayed metric per user?<\/strong><\/p>\n\n<p>Yes, this is also possible. Each user can configure the plugin differently.<\/p>",
+      "documentation":"",
+      "changelog":"<p><strong>1.0.2<\/strong>\n* Compatible with Piwik 2.0<\/p>\n\n<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.8"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LoginHttpAuth",
+  "displayName":"Login Http Auth",
+  "owner":"piwik",
+  "description":"This plugin lets you connect to Piwik using HTTP Auth protocol instead of the standard Login mechanism",
+  "homepage":"http:\/\/plugins.piwik.org\/LoginHttpAuth",
+  "createdDateTime":"2014-12-23 01:16:17",
+  "donate":{},"support":[],"isTheme":false,"keywords":["authentication",
+    "httpAuth",
+    "login"],"basePrice":0,"authors":[{"name":"Piwik",
+    "email":"test1@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth",
+  "lastUpdated":"2014-12-23 01:16:33",
+  "latestVersion":"1.0.1",
+  "numDownloads":0,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.loginhttpauth.org"}],"activity":{"numCommits":"34",
+    "numContributors":"4",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+    "release":"2014-12-23 01:16:17",
+    "requires":{"piwik":">=2.0.4-b12"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/commits\/1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LoginHttpAuth\/download\/1.0"},{"name":"1.0.1",
+    "release":"2014-12-23 01:16:33",
+    "requires":{"piwik":">=2.0.4-b12"},"readme":"# Piwik LoginHttpAuth Plugin\n\n## Description\n\nThis plugin extends the standard Piwik authentication to use Basic HTTP Authentication.\nIt lets you login to Piwik using the HTTP Auth mechanism.\n\nHow do I setup HTTP Auth using Piwik?\n\n* Login your Piwik as Super User. Click Settings, then click Marketplace.\n* Install the LoginHttpAuth plugin, then click Activate.\n* Click Settings, then click Users.\n    * Check that there is a user in Piwik for each person that should have access to Piwik.\n* Enable HTTP Auth on the Piwik on your web server.\n\n    For example, if you are using Apache webserver:\n\n    * generate a .htpasswd file with your encrypted logins and passwords\n    * [copy this example .htaccess file](https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/blob\/master\/TemplateHtaccess\/.htaccess) in the root directory of Piwik, and set the path to your .htpasswd file\n* When you go to Piwik, you will see the Authentication window.\n  Congratulations! You are now using HTTP Auth to protect Piwik.\n\n## Changelog\n\n * 1.0 - First public release [compatible with Piwik 2](http:\/\/piwik.org\/blog\/2013\/12\/piwik-2-0-release-announced-biggest-best-release-yet\/)\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Report bugs for LoginHttpAuth in [our Github issues tracker](https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/issues)\n* Please direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n\n\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/commits\/1.0.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin extends the standard Piwik authentication to use Basic HTTP Authentication.\nIt lets you login to Piwik using the HTTP Auth mechanism.<\/p>\n\n<p>How do I setup HTTP Auth using Piwik?<\/p>\n\n<ul><li>Login your Piwik as Super User. Click Settings, then click Marketplace.<\/li>\n<li>Install the LoginHttpAuth plugin, then click Activate.<\/li>\n<li>Click Settings, then click Users.\n\n<ul><li>Check that there is a user in Piwik for each person that should have access to Piwik.<\/li>\n<\/ul><\/li>\n<li><p>Enable HTTP Auth on the Piwik on your web server.<\/p>\n\n<p>For example, if you are using Apache webserver:<\/p>\n\n<ul><li>generate a .htpasswd file with your encrypted logins and passwords<\/li>\n<li><a href=\"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/blob\/master\/TemplateHtaccess\/.htaccess\">copy this example .htaccess file<\/a> in the root directory of Piwik, and set the path to your .htpasswd file<\/li>\n<\/ul><\/li>\n<li>When you go to Piwik, you will see the Authentication window.\nCongratulations! You are now using HTTP Auth to protect Piwik.<\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>1.0 - First public release <a href=\"http:\/\/piwik.org\/blog\/2013\/12\/piwik-2-0-release-announced-biggest-best-release-yet\/\">compatible with Piwik 2<\/a><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/LoginHttpAuth\/download\/1.0.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LoginRevokable",
+  "displayName":"Login Revokable",
+  "owner":"torosian",
+  "description":"An Authentication plugin that allows a user to log into multiple locations, however remotely logs out of all locations when any of the locations log o",
+  "homepage":"https:\/\/github.com\/torosian\/LoginRevokable",
+  "createdDateTime":"2015-03-06 16:52:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/torosian\/LoginRevokable",
+  "lastUpdated":"2015-03-06 16:52:03",
+  "latestVersion":"0.1.4",
+  "numDownloads":2310,"screenshots":[],"previews":[],"activity":{"numCommits":"10",
+    "numContributors":"1",
+    "lastCommitDate":"2015-03-09 18:52:53"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.4",
+    "release":"2015-03-06 16:52:03",
+    "requires":{"piwik":">=2.11.2-b1"},"readme":"# Piwik LoginRevokable Plugin\n\n## Description\n\nA plugin for Piwik that allows multiple logins by the same user, but remotely terminates sessions when any of them log out. This replaces the existing core Login plugin.\n\n## FAQ\n\n## Changelog\n\nInitial Commit, adding first version\n\n## Support\n\nPlease direct any feedback to https:\/\/github.com\/torosian\/LoginRevokable\/issues",
+    "numDownloads":2310,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/torosian\/LoginRevokable\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>A plugin for Piwik that allows multiple logins by the same user, but remotely terminates sessions when any of them log out. This replaces the existing core Login plugin.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>Initial Commit, adding first version<\/p>"},"download":"\/api\/2.0\/plugins\/LoginRevokable\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LogViewer",
+  "displayName":"Log Viewer",
+  "owner":"piwik",
+  "description":"View log messages logged by Piwik",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-09-22 09:26:18",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer",
+  "lastUpdated":"2015-10-21 23:28:03",
+  "latestVersion":"0.2.0",
+  "numDownloads":2414,"screenshots":[],"previews":[],"activity":{"numCommits":"34",
+    "numContributors":"4",
+    "lastCommitDate":"2016-06-02 07:53:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-09-22 09:26:18",
+    "requires":{"piwik":">=2.15.0-b4"},"readme":"",
+    "numDownloads":115,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/commits\/0.1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LogViewer\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-10-02 11:18:04",
+    "requires":{"piwik":">=2.15.0-b4"},"readme":"",
+    "numDownloads":159,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/commits\/0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/LogViewer\/download\/0.1.1"},{"name":"0.2.0",
+    "release":"2015-10-21 23:28:03",
+    "requires":{"piwik":">=2.15.0-rc4"},"readme":"# Piwik LogViewer Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-LogViewer.svg)](https:\/\/travis-ci.org\/piwik\/plugin-LogViewer)\n\n## Description\n\nView log messages that were logged by Piwik via the Piwik UI or HTTP Reporting API.\n\n## FAQ\n\n__I want to see more than 100 log messages, is it possible?__\n\nYes, there is a `limit` URL parameter that you can change to any number.\n\n__Can I use regular expressions in the search field?__\n\nYes, you can enable regular expressions next to the search field.\n\n__Is the search field case insensitive?__\n\nYes.\n\n__How is a Piwik log line formatted by default?__\n\n`'$severity $tag[$datetime] [$requestId] $message` eg `WARNING Piwik\\Common[2015-01-01 01:02:03] [cf27] The log message`\n\n__Is the search pattern applied to the whole log line?__\n\nYes, this means a search for `WARNING Piwik\\Common` would deliver you all warnings triggered by `Piwik\\Common`.\n\n__How do I find all messages that belong to a certain request?__\n\nEach log message shows a \"Request Id\". By clicking on this Id it selects all log messages of the same request.\nAlternatively you can search for the expression `\\[1234\\]` where `1234` need to be replaced by a Request Id.\n\n__How do I find messages that belong to the same day?__\n\nEither click on a date field or search for it, eg `2012-12-12`.\n\n__What are the known issues?__\n\n* If there are messages being logged while viewing the log messages, the paging might not work 100% correctly.\n* There seems to be a problem when searching for a single quotation mark \"'\".\n\n## Changelog\n\n* 0.2.0 Compatibility w\/ Piwik 2.15.\n* 0.1.1 Fix for IE8\n* 0.1.0 Initial Release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n",
+    "numDownloads":2140,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>View log messages that were logged by Piwik via the Piwik UI or HTTP Reporting API.<\/p>\n\n",
+      "faq":"<p><strong>I want to see more than 100 log messages, is it possible?<\/strong><\/p>\n\n<p>Yes, there is a <code>limit<\/code> URL parameter that you can change to any number.<\/p>\n\n<p><strong>Can I use regular expressions in the search field?<\/strong><\/p>\n\n<p>Yes, you can enable regular expressions next to the search field.<\/p>\n\n<p><strong>Is the search field case insensitive?<\/strong><\/p>\n\n<p>Yes.<\/p>\n\n<p><strong>How is a Piwik log line formatted by default?<\/strong><\/p>\n\n<p><code>'$severity $tag[$datetime] [$requestId] $message<\/code> eg <code>WARNING Piwik\\Common[2015-01-01 01:02:03] [cf27] The log message<\/code><\/p>\n\n<p><strong>Is the search pattern applied to the whole log line?<\/strong><\/p>\n\n<p>Yes, this means a search for <code>WARNING Piwik\\Common<\/code> would deliver you all warnings triggered by <code>Piwik\\Common<\/code>.<\/p>\n\n<p><strong>How do I find all messages that belong to a certain request?<\/strong><\/p>\n\n<p>Each log message shows a \"Request Id\". By clicking on this Id it selects all log messages of the same request.\nAlternatively you can search for the expression <code>\\[1234\\]<\/code> where <code>1234<\/code> need to be replaced by a Request Id.<\/p>\n\n<p><strong>How do I find messages that belong to the same day?<\/strong><\/p>\n\n<p>Either click on a date field or search for it, eg <code>2012-12-12<\/code>.<\/p>\n\n<p><strong>What are the known issues?<\/strong><\/p>\n\n<ul><li>If there are messages being logged while viewing the log messages, the paging might not work 100% correctly.<\/li>\n<li>There seems to be a problem when searching for a single quotation mark \"'\".<\/li>\n<\/ul>",
+      "documentation":"",
+      "changelog":"<ul><li>0.2.0 Compatibility w\/ Piwik 2.15.<\/li>\n<li>0.1.1 Fix for IE8<\/li>\n<li>0.1.0 Initial Release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/LogViewer\/download\/0.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"page2images-visual-link",
+  "displayName":"page 2images-visual-link",
+  "owner":"SuzhouKada",
+  "description":"This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a previe",
+  "homepage":"http:\/\/www.page2images.com",
+  "createdDateTime":"2014-12-23 01:19:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":["page2images",
+    "website",
+    "screenshot"],"basePrice":0,"authors":[{"name":"SuzhouKada",
+    "email":"test5@example.com",
+    "homepage":"http:\/\/www.page2images.com"}],"repositoryUrl":"https:\/\/github.com\/SuzhouKada\/piwik",
+  "lastUpdated":"2014-12-23 01:19:04",
+  "latestVersion":"1.0.3",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/page2images-visual-link\/images\/visual-link-screenshot-on-domz.png",
+    "https:\/\/plugins.piwik.org\/page2images-visual-link\/images\/visual-link-screenshot-on-domz_02.png",
+    "https:\/\/plugins.piwik.org\/page2images-visual-link\/images\/visual-link-screenshot-on-domz_03.png"],"previews":[],"activity":{"numCommits":"8",
+    "numContributors":"1",
+    "lastCommitDate":"1970-01-01 00:33:34"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.3",
+    "release":"2014-12-23 01:19:04",
+    "requires":{},"readme":"# Page2Images Visual Link Plugin\n\n## Description\n\nThis plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.\n\n![Screenshot](https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png)\n\n## Installation\n\nJust download the plugin and copy it to the plugin directory.\nIf you need change the default behavior, you can open the js file and change the value as needed.\nEnable preload mode - p2iQuery().run(\"Free\", true, false);\nEnable preload mode & inner link mode - p2iQuery().run(\"Free\", true, true);\n\n## FAQ\n\nWho need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https. \n\n\n## Changelog\n\n__1.0.0__\n* Initial release\n\n## License\n\nGPL v2 or later\n\n## Support\n\nPlease direct any feedback to: \n\n* [https:\/\/github.com\/SuzhouKada\/piwik\/issues](https:\/\/github.com\/SuzhouKada\/piwik\/issues)\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/SuzhouKada\/piwik\/commits\/1.0.3",
+    "readmeHtml":{"description":"\n\n<p>This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.<\/p>\n\n<p><img src=\"https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png\" alt=\"visual-link-screenshot-on-domz.png\" \/><\/p>\n\n",
+      "faq":"<p>Who need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https.<\/p>",
+      "documentation":"",
+      "changelog":"<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/page2images-visual-link\/download\/1.0.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+    "key":"docs",
+    "value":"https:\/\/paidplugin1.org\/docs\/",
+    "type":"url"},{"name":"Wiki",
+    "key":"wiki",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+    "type":"url"},{"name":"Forum",
+    "key":"forum",
+    "value":"https:\/\/forum.paidplugin1.org",
+    "type":"url"},{"name":"Email",
+    "key":"email",
+    "value":"paidplugin1@example.com",
+    "type":"email"},{"name":"IRC",
+    "key":"irc",
+    "value":"irc:\/\/freenode\/paidplugin1",
+    "type":"text"},{"name":"Issues \/ Bugs",
+    "key":"issues",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+    "type":"url"},{"name":"Source",
+    "key":"source",
+    "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+    "type":"url"},{"name":"RSS",
+    "key":"rss",
+    "value":"https:\/\/paidplugin1.org\/feed\/",
+    "type":"url"}],"isTheme":false,"keywords":["cache",
+    "delete",
+    "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+    "email":"test3@example.com",
+    "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+    "provider":"link",
+    "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+    "variations":[{"price":"150",
+      "prettyPrice":"150\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+      "prettyPrice":"$175",
+      "currency":"USD",
+      "period":"year",
+      "name":"Up to 4 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+      "prettyPrice":"300\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+      "prettyPrice":"$345",
+      "currency":"USD",
+      "period":"year",
+      "name":"5 to 15 users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+      "prettyPrice":"600\u20ac",
+      "currency":"EUR",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+      "prettyPrice":"$690",
+      "currency":"USD",
+      "period":"year",
+      "name":"Unlimited users",
+      "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+      "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+      "height":200}},"versions":[{"name":"1.1",
+    "release":null,"requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"readme":"# Piwik cacheBuster Plugin\n\n## Description\n\nThis plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally\n\n## Changelog\n~2014~\n\n2014-02-21 - Update some more code, added in notification area but it's not quite working yet (TODO - make it work)\n\n2014-02-21 - Rebranded to cacheBuster and set version to 1.0, updated code to use a better check for directory seperator\n\n2014-02-20 - v2.0\n    - Updated plugin to work with Piwik 2.0.3\n\n~2013~\n    Inital creation of plugin at http:\/\/www.spherexx.com under the name ClearCache\n\n## Support\nPlease direct any feedback to john.deery@gmail.com",
+    "numDownloads":null,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":null,"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PerformanceInfo",
+  "displayName":"Performance Info",
+  "owner":"ThaDafinser",
+  "description":"Piwik plugin to check if the settings are good for security\/performance",
+  "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo",
+  "createdDateTime":"2015-03-31 10:38:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo",
+  "lastUpdated":"2015-10-14 07:16:03",
+  "latestVersion":"v0.2.2",
+  "numDownloads":3314,"screenshots":[],"previews":[],"activity":{"numCommits":"18",
+    "numContributors":"1",
+    "lastCommitDate":"2015-10-14 07:15:10"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-03-31 10:38:03",
+    "requires":{"piwik":">=2.10.0",
+      "php":">=5.5.0"},"readme":"",
+    "numDownloads":106,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-04-07 06:42:03",
+    "requires":{"piwik":">=2.14.0",
+      "php":">=5.5.0"},"readme":"",
+    "numDownloads":156,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/0.1.1"},{"name":"0.2.0",
+    "release":"2015-04-27 06:04:03",
+    "requires":{"piwik":">=2.13.0",
+      "php":">=5.5.0"},"readme":"",
+    "numDownloads":2,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/0.2.0"},{"name":"v0.2.1",
+    "release":"2015-04-27 06:06:03",
+    "requires":{"piwik":">=2.13.0",
+      "php":">=5.5.0"},"readme":"",
+    "numDownloads":1139,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/v0.2.1"},{"name":"v0.2.2",
+    "release":"2015-10-14 07:16:03",
+    "requires":{"piwik":">=2.13.0",
+      "php":">=5.5.0"},"readme":"# Piwik ConfigurationInfo Plugin\n\n## Description\n\nThis plugin checks your configuration and compare it with some best practice settings.\n- Security\n- Performance\n- other\n\n## FAQ\n\n__Why does this plugin needs PHP 5.5?__\n\nYou look at this plugin because you care about security or performance? Then why you dont upgrade to the latest PHP version?\n",
+    "numDownloads":1911,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/0.1.2",
+    "readmeHtml":{"description":"\n\n<p>This plugin checks your configuration and compare it with some best practice settings.\n- Security\n- Performance\n- other<\/p>\n\n",
+      "faq":"<p><strong>Why does this plugin needs PHP 5.5?<\/strong><\/p>\n\n<p>You look at this plugin because you care about security or performance? Then why you dont upgrade to the latest PHP version?<\/p>",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/v0.2.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"PerformanceMonitor",
+  "displayName":"Performance Monitor",
+  "owner":"chanzler",
+  "description":"Displays the performance index of a site as a widget and adds an performance overview page to the top navigation. The index is calculated by the numbe",
+  "homepage":"http:\/\/github.com\/chanzler\/piwik-performance-monitor",
+  "createdDateTime":"2014-08-16 19:40:04",
+  "donate":{"paypal":"paypal@familiekanzler.de",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor",
+  "lastUpdated":"2014-11-08 20:20:03",
+  "latestVersion":"0.2.5",
+  "numDownloads":8174,"screenshots":[],"previews":[],"activity":{"numCommits":"13",
+    "numContributors":"1",
+    "lastCommitDate":"2014-11-10 16:18:43"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-08-16 19:40:04",
+    "requires":{},"readme":"",
+    "numDownloads":883,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.1.0"},{"name":"0.2.0",
+    "release":"2014-10-12 19:44:03",
+    "requires":{"piwik":">=2.7.0"},"readme":"",
+    "numDownloads":468,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2014-11-03 10:32:03",
+    "requires":{"piwik":">=2.0.0"},"readme":"",
+    "numDownloads":124,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.1"},{"name":"0.2.2",
+    "release":"2014-11-04 18:18:04",
+    "requires":{"piwik":">=2.0.0"},"readme":"",
+    "numDownloads":3,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.2"},{"name":"0.2.3",
+    "release":"2014-11-04 18:54:04",
+    "requires":{"piwik":">=2.0.0"},"readme":"",
+    "numDownloads":6,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.3"},{"name":"0.2.4",
+    "release":"2014-11-04 20:32:03",
+    "requires":{"piwik":">=2.0.0"},"readme":"",
+    "numDownloads":128,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.4"},{"name":"0.2.5",
+    "release":"2014-11-08 20:20:03",
+    "requires":{"piwik":">=2.0.0"},"readme":"# Piwik PerformanceMonitor Plugin\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard and a new link in the top navigation.\n\nThe widget will show the performance index of a site that auto-refreshes every 30 seconds. It shows the number of visitors or visit time in a 30 minute period compared to the maximum number of visitors in any 30 minute period of the last 30 days.\n\nThis plugin is inspired by the [piwik barometer plugin](https:\/\/github.com\/halfdan\/piwik-barometer-plugin) and uses a lightly modified jQuery-Dynameter (original by [Tzechiu Lei](http:\/\/tze1.com\/dynameter\/).\n\n**This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 5 million visits per day.**\n\n(Tested with piwik 2.7.0, but supposed to run with older versions)\n\n## Installation\n\nInstall it via Piwik Marketplace OR install manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n   ```\n   cd plugins\/\n   git clone https:\/\/github.com\/chanzler\/piwik-performance-monitor.git PerformanceMonitor\n   ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You will now find the widget under the Live! section.\n\n4. When you update: As there have been made several changes in v0.2.0 you might have to clear your cache (console core:clear-caches) \n\n## FAQ\n\n###Features\nHere is a list of features that are included in this project:\n\n* Live widget (\"Performance Monitor\") with key performance indices\n* Add an item to the top navigation (\"Performance overview\") which displays the performance monitor widget for all your sites (configurable).\n\n###Configuration\n*Refresh interval*: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.\n\n*Measurement period*: Defines the measurement period in minutes. 5 minutes is a good value to choose.\n\n*Comparison period*: Defines the period (x * 24h) the last 30 minutes are compared to. A good value for small sites with more or less static content is 30. For sites with peak days on weekends for example 1 will be a good value. 1 is also a good value for very big sites with a lot of traffic. You will have to play around with this value a little bit and figure out whalt will fit your needs.\n\n*Sites in overview*: Defines which sites are displayed in the overview.  \n\n## Changelog\n\n### 0.2.5 Bugfix Release\n* fixed bug with timezones that match \/^UTC[+-]*\/\n\n### 0.2.4 Bugfix Release\n* reengineering of scheduled task\n\n### 0.2.3 Bugfix Release\n* fixed bug in scheduled task\n\n### 0.2.2 Bugfix Release\n* fixed an installation bug\n\n### 0.2.0 Second Beta\n* made the plugin configurable by settings\n* added more key performance indices\n* performance overview now links to the dashboards\n* fixed the timezone bug (configure timezone for each site properly)\n* fixed several minor bugs\n\n### 0.1.0 First Beta\n* initial release\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Please direct any feedback to [frank@intersolve.de](mailto:frank@intersolve.de)\n\n## Contribute\n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+    "numDownloads":6562,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard and a new link in the top navigation.<\/p>\n\n<p>The widget will show the performance index of a site that auto-refreshes every 30 seconds. It shows the number of visitors or visit time in a 30 minute period compared to the maximum number of visitors in any 30 minute period of the last 30 days.<\/p>\n\n<p>This plugin is inspired by the <a href=\"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\">piwik barometer plugin<\/a> and uses a lightly modified jQuery-Dynameter (original by <a href=\"http:\/\/tze1.com\/dynameter\/\">Tzechiu Lei<\/a>.<\/p>\n\n<p><strong>This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 5 million visits per day.<\/strong><\/p>\n\n<p>(Tested with piwik 2.7.0, but supposed to run with older versions)<\/p>\n\n",
+      "faq":"<h3>Features<\/h3>\n\n<p>Here is a list of features that are included in this project:<\/p>\n\n<ul><li>Live widget (\"Performance Monitor\") with key performance indices<\/li>\n<li>Add an item to the top navigation (\"Performance overview\") which displays the performance monitor widget for all your sites (configurable).<\/li>\n<\/ul><h3>Configuration<\/h3>\n\n<p><em>Refresh interval<\/em>: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.<\/p>\n\n<p><em>Measurement period<\/em>: Defines the measurement period in minutes. 5 minutes is a good value to choose.<\/p>\n\n<p><em>Comparison period<\/em>: Defines the period (x * 24h) the last 30 minutes are compared to. A good value for small sites with more or less static content is 30. For sites with peak days on weekends for example 1 will be a good value. 1 is also a good value for very big sites with a lot of traffic. You will have to play around with this value a little bit and figure out whalt will fit your needs.<\/p>\n\n<p><em>Sites in overview<\/em>: Defines which sites are displayed in the overview.<\/p>",
+      "documentation":"",
+      "changelog":"<h3>0.2.5 Bugfix Release<\/h3>\n\n<ul><li>fixed bug with timezones that match \/^UTC[+-]*\/<\/li>\n<\/ul><h3>0.2.4 Bugfix Release<\/h3>\n\n<ul><li>reengineering of scheduled task<\/li>\n<\/ul><h3>0.2.3 Bugfix Release<\/h3>\n\n<ul><li>fixed bug in scheduled task<\/li>\n<\/ul><h3>0.2.2 Bugfix Release<\/h3>\n\n<ul><li>fixed an installation bug<\/li>\n<\/ul><h3>0.2.0 Second Beta<\/h3>\n\n<ul><li>made the plugin configurable by settings<\/li>\n<li>added more key performance indices<\/li>\n<li>performance overview now links to the dashboards<\/li>\n<li>fixed the timezone bug (configure timezone for each site properly)<\/li>\n<li>fixed several minor bugs<\/li>\n<\/ul><h3>0.1.0 First Beta<\/h3>\n\n<ul><li>initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.5"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"PlatformsReport",
+  "displayName":"Platforms Report",
+  "owner":"PiwikPRO",
+  "description":"New report in Visitors > Platforms that aggregates visits based on device type, OS version & browser version.",
+  "homepage":"http:\/\/piwik.pro",
+  "createdDateTime":"2015-10-27 02:06:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport",
+  "lastUpdated":"2016-01-04 08:42:03",
+  "latestVersion":"1.0.4",
+  "numDownloads":2347,"screenshots":[],"previews":[],"activity":{"numCommits":"24",
+    "numContributors":"3",
+    "lastCommitDate":"2016-03-15 04:25:00"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+    "release":"2015-10-27 02:06:03",
+    "requires":{"piwik":">=2.14.3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.0"},{"name":"1.0.1",
+    "release":"2015-10-27 02:14:03",
+    "requires":{"piwik":">=2.14.3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.1"},{"name":"1.0.2",
+    "release":"2015-10-27 02:30:04",
+    "requires":{"piwik":">=2.14.3"},"readme":"",
+    "numDownloads":100,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.2"},{"name":"1.0.3",
+    "release":"2015-10-29 23:52:03",
+    "requires":{"piwik":">=2.14.3"},"readme":"",
+    "numDownloads":777,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.3"},{"name":"1.0.4",
+    "release":"2016-01-04 08:42:03",
+    "requires":{"piwik":">=2.14.3"},"readme":"# Piwik PlatformReports Plugin\n\n## Description\n\nIncludes two new reports: Platforms and Platforms With Versions. \n\nThe **Platforms** report displays visitors by their device type, OS and browser.\n\nThe **Platforms With Versions** report displays the same information, but includes OS version & browser version information.\n\nThe new reports are available via the Visitors > Platforms menu.\n\n## Changelog\n\n- 1.0.3\n  * Moved sub-menu entry after 'Software'\n- 1.0.2\n  * Initial release on Marketplace.\n- 1.0.0\n  * Initial release.\n",
+    "numDownloads":1470,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/1.0.1",
+    "readmeHtml":{"description":"\n\n<p>Includes two new reports: Platforms and Platforms With Versions.<\/p>\n\n<p>The <strong>Platforms<\/strong> report displays visitors by their device type, OS and browser.<\/p>\n\n<p>The <strong>Platforms With Versions<\/strong> report displays the same information, but includes OS version &amp; browser version information.<\/p>\n\n<p>The new reports are available via the Visitors &gt; Platforms menu.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>1.0.3\n\n<ul><li>Moved sub-menu entry after 'Software'<\/li>\n<\/ul><\/li>\n<li>1.0.2\n\n<ul><li>Initial release on Marketplace.<\/li>\n<\/ul><\/li>\n<li>1.0.0\n\n<ul><li>Initial release.<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"QueuedTracking",
+  "displayName":"Queued Tracking",
+  "owner":"piwik",
+  "description":"Scale your large traffic Piwik service by queuing tracking requests in Redis for better performance. ",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2015-01-05 23:28:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking",
+  "lastUpdated":"2016-04-19 02:26:04",
+  "latestVersion":"0.3.1",
+  "numDownloads":5296,"screenshots":[],"previews":[],"activity":{"numCommits":"115",
+    "numContributors":"4",
+    "lastCommitDate":"2016-06-02 09:32:10"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-01-05 23:28:05",
+    "requires":{"piwik":">=2.10.0-b10"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.7",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-01-06 00:48:04",
+    "requires":{"piwik":">=2.10.0-b10"},"readme":"",
+    "numDownloads":487,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.7",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2015-03-09 05:56:04",
+    "requires":{"piwik":">=2.10.0"},"readme":"",
+    "numDownloads":221,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2015-03-31 21:44:04",
+    "requires":{"piwik":">=2.10.0"},"readme":"",
+    "numDownloads":611,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2015-06-09 21:38:04",
+    "requires":{"piwik":">=2.13.0"},"readme":"",
+    "numDownloads":80,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.4"},{"name":"0.1.5",
+    "release":"2015-06-11 21:56:04",
+    "requires":{"piwik":">=2.13.0"},"readme":"",
+    "numDownloads":163,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.5"},{"name":"0.1.6",
+    "release":"2015-06-22 01:00:05",
+    "requires":{"piwik":">=2.13.0"},"readme":"",
+    "numDownloads":328,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.6"},{"name":"0.1.7",
+    "release":"2015-07-24 12:44:05",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":26,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.7"},{"name":"0.1.8",
+    "release":"2015-07-25 08:08:04",
+    "requires":{"piwik":">=2.14.2"},"readme":"",
+    "numDownloads":736,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.8"},{"name":"0.2.0",
+    "release":"2015-10-21 22:36:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":481,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2015-12-14 20:46:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/0.44",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.1"},{"name":"0.2.2",
+    "release":"2015-12-14 21:02:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":31,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.2"},{"name":"0.2.3",
+    "release":"2015-12-15 21:06:05",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":5,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.3"},{"name":"0.2.4",
+    "release":"2015-12-15 21:58:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":350,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.4",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.4"},{"name":"0.2.5",
+    "release":"2016-01-13 19:58:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":480,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.5"},{"name":"0.2.6",
+    "release":"2016-02-16 16:06:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":426,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.6"},{"name":"0.3.0",
+    "release":"2016-03-14 19:00:04",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":404,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/0.6.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.3.0"},{"name":"0.3.1",
+    "release":"2016-04-19 02:26:04",
+    "requires":{"piwik":">=2.16.0"},"readme":"# Piwik QueuedTracking Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-QueuedTracking.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-QueuedTracking)\n\n## Description\n\nThis plugin writes all tracking requests into a [Redis](http:\/\/redis.io\/) instance instead of directly into the database.\nThis is useful if you have too many requests per second and your server cannot handle all of them directly (eg too many connections in nginx or MySQL).\nIt is also useful if you experience peaks sometimes. Those peaks can be handled much better by using this queue.\nWriting a tracking request into the queue is very fast (a tracking request takes in total a few milliseconds) compared to a regular tracking request (that takes multiple hundreds of milliseconds). The queue makes sure to process the tracking requests whenever possible even if it takes a while to process all requests after there was a peak.\n\n*This plugin is currently BETA and there might be issues causing not tracked requests, wrongly tracked requests or duplicated tracked requests.*\n\nHave a look at the FAQ for more information.\n\n## FAQ\n\n__What are the requirements for this plugin?__\n\n* [Redis server 2.8+](http:\/\/redis.io\/) - [Redis quickstart](http:\/\/redis.io\/topics\/quickstart)\n* [phpredis PHP extension](https:\/\/github.com\/nicolasff\/phpredis) - [Install](https:\/\/github.com\/nicolasff\/phpredis#installingconfiguring)\n* Transactions are used and must be supported by the SQL database.\n\n__Where can I configure and enable the queue?__\n\nIn your Piwik instance go to \"Settings => Plugin Settings\". There is a config section for this plugin.\n\n__When will a queued tracking request be processed?__\n\nFirst you should know that multiple tracking requests will be inserted into the database at once using\n[bulk tracking](http:\/\/developer.piwik.org\/api-reference\/tracking-api#bulk-tracking) as soon as a configurable number\nof requests is queued. By default we will check whether enough requests are queued during a regular tracking request\nand start processing them right after sending a response to the browser to make sure a user won't have to wait until\nthe queue has finished to process all requests. Have a look at this graph to see how it works:\n\n![How it works](https:\/\/raw.githubusercontent.com\/piwik\/plugin-QueuedTracking\/master\/docs\/How_it_works.png)\n\n__I do not want to process queued requests within a tracking request, what shall I do?__\n\nDon't worry, if this solution doesn't work out for you for some reason you can disable it and process all queued\nrequests using the [Piwik console](http:\/\/developer.piwik.org\/guides\/piwik-on-the-command-line). Just follow these steps:\n\n* Disable the setting \"Process during tracking request\" in the Piwik UI under \"Settings => Plugin Settings\"\n* Setup a cronjob that executes the command `.\/console queuedtracking:process` for instance every minute\n* That's it\n\nThe `queuedtracking:process` command will make sure to process all queued tracking requests whenever possible and the\ncommand will exit as soon as there are not enough requests queued anymore. That's why you should setup a cronjob to start\nthe command every minute as it will just start processing again as soon as there are enough requests. Be aware that it won't\nspeed up processing queued requests when starting this command multiple times. Only one process will actually replay\nqueued requests at a time.\n\nExample crontab entry that starts the processor every minute:\n\n`* * * * * cd \/piwik && .\/console queuedtracking:process >\/dev\/null 2>&1`\n\n__Can I keep track of the state of the queue?__\n\nYes, you can. Just execute the command `.\/console queuedtracking:monitor`. This will show the current state of the queue.\n\n__Can I improve the speed of inserting requests from the Redis queue to the database?__\n\nYes, you can by adding more workers. By default only one worker is activated at a time and only one worker processes tracking requests from Redis to the database. When inserting tracking requests into the database, at time of writing this, about 80% of the time is spent in PHP and the database might be rather bored. If you have multiple CPUs available on your server you can add more workers. You can do this by going in the Piwik Admin interface to \"Plugin Settings\". There will be a setting \"Number of queue workers\". Increase this number to the number of CPUs you want to dedeciate for processing requests. Best practice is to add more workers step by step. So first increase this number to 2 and check if the tracking request insertions is fast enough for you. If not and you have more CPUs available, increase the number again.\n\nWhen using multiple workers it might be worth to lower the number of \"Number of requests to process\" to eg 15 in \"Plugin Settings\". By default 25 requests are inserted in one step by using transactions. This means different workers might have to wait for each other. By lowering that number each worker will block the DB for less time.\n\nIf you process requests from the command line via `.\/console queuedtracking:process` make sure to always start enough workers. Each time you execute this command one worker will be started. If already enough workers are in process no new worker will be started and the command just finishes immediately.\n\n__How fast are the requests inserted from Redis to the Database?__\n\nThis very much depends on your setup and hardware. With fast CPUs you can achive up to 250req\/s with 1 worker, 400req\/s with 2 workers and 1500req\/s with 8 workers (tested on a AWS c3.x2large instance).\n\n__How should the redis server be configured?__\n\nMake sure to have enough memory to save all tracking requests in the queue. One tracking request in the queue takes about 2KB,\n20.000 tracking requests take about 50MB. All tracking requests of all websites are stored in the same queue.\nThere should be only one Redis server to make sure the data will be replayed in the same order as they were recorded.\nIf you want to configure Redis HA (High Availability) it is possible to use Redis Sentinel see further down.\nWe currently write into the Redis default database by default but you can configure to use a different one.\n\n__Why do some tests fail on my local Piwik instance?__\n\nMake sure the requirements mentioned above are met and Redis needs to run on 127.0.0.1:6379 with no password for the\nintegration tests to work. It will use the database \"15\" and the tests may flush all data it contains. Make sure\nit does not contain any important data.\n\n__What if I want to disable the queue?__\n\nYou might want to disable the queue at some point but there are still some pending requests in the queue. We recommend to\nchange the \"Number of requests to process\" in plugin settings to \"1\" and process all requests using the command\n`.\/console queuedtracking:process` shortly before disabling the queue and directly afterwards. It is still possible to\nprocess remaining request once the queue is disabled but new tracking requests won't be written into the queue.\n\n__How can I access Redis data?__\n\nYou can either acccess data on the command line via `redis-cli` or use a Redis monitor like [phpRedisAdmin](https:\/\/github.com\/ErikDubbelboer\/phpRedisAdmin).\nIn case you are using something like a Redis monitor make sure it is not accessible by everyone.\n\n__The processor won't start processing again as it things another processor is processing the data already, what can I do?__\n\nFirst make sure there is actually no processor processing any requests. For example by executing the command\n`.\/console queuedtracking:monitor`. In case you are using the command line to process tracking requests make sure there\nis no processer running using the Linux command `ps`. If you are sure there is no process running you can release the lock\nby executing the command `.\/console queuedtracking:lock-status`. This will output more information which locks are in use and how to unlock them. Afterwards everything should work as normal again.\nYou should actually never have to do this as a lock automatically expires after a while. It just may take a while depending\non the amount of requests you are importing.\n\n__How can I test my Redis \/ QueuedTracking setup in case I'm getting errors?__\n\nThere is a command to test some the connection to Redis as well as some needed features: `.\/console queuedtracking:test`.\n\nIt might directly give you an error message if something goes wrong that helps you to resolve the issue. If your queue\nis always locked you might be as well interested in executing `.console queuedtracking:lock-status`.\n\n__How can I debug in case something goes wrong?__\n\n* Use the command `.\/console queuedtracking:monitor` to view the current state of all workers\n* Use the command `.\/console queuedtracking:lock-status` to view the current state of all locks\n* Set the option `-vvv` when processing via `.\/console queuedtracking:process -vvv` to enable the tracker debug mode for this run. This will print detailed information to screen.\n* Enable tracker mode in `config.ini.php` via `[Tracker] debug=1` if processing requests during tracking is enabled.\n* Use the command `.\/console queuedtracking:print-queued-requests` to view the next requests to process in each queue. If you execute this command twice within 1-10 minutes, and it outputs the same, the queue is not being processed most likely indicating a problem.\n\n__I am using the Log Importer in combination with Queued Tracking, is there something to consider?__\n\nYes, we recommend to set the \"Number of requests to process\" to `1` as the log importer usually sends multiple requests at once using bulk tracking already.\n\n__How can I configure the QueuedTracking plugin to use Redis Sentinel?__\n\nYou can enable the Sentinel in the plugin settings. Make sure to specify the correct Sentinel \"master\" name.\n\nWhen using Sentinel, the `phpredis` extension is not needed as it uses a PHP class to connect to your Redis. Please note that calls to Redis might be a little bit slower.\n\n__Can I configure multiple Sentinel servers?__\n\nYes, once Sentinel is enabled you can configure multiple servers by specifying multiple hosts and ports comma separated via the UI.\n\n__Are there any known issues?__\n\n* In case you are using bulk tracking the bulk tracking response varies compared to the regular one. We will always return\n either an image or a 204 HTTP response code in case the parameter `send_image=0` is sent.\n* Anything related with Cookies won't work\n* By design this plugin can delay the insertion of tracking requests causing real time plugins to not show the actual data since\n under load tracking requests may take a while until they are replayed.\n\n## Changelog\n\n0.3.1\n\n- Fixed Redis Sentinel was not working properly. Sentinel can be now configured via the UI and not via config. Also\n  multiple servers can be configured now.\n\n0.3.0\n\n- Added support to use Redis Sentinel for automatic failover\n\n0.2.6\n\n- When a request takes more than 2 seconds and debug tracker mode is enabled, log information about the request.\n\n0.2.5\n\n- Use a better random number generator if available on the system to more evenly process queues.\n\n0.2.4\n\n- The command `queuedtracking:monitor` will now work even when the queue is disabled\n\n0.2.3\n\n- Added more tests and information to the `queuedtracking:test` command\n- It is now possible to configure up to 16 workers\n\n0.2.2\n\n- Improved output for the new `test` command\n- New FAQ entries\n\n0.2.1\n\n- Added a new command to test the connection to Redis. To test yor connection use `.\/console queuedtracking:test`\n\n0.2.0\n\n- Compatibility w\/ Piwik 2.15.\n\n0.1.6\n \n- For bulk requests we do no longer skip all tracking requests after a tracking request that has an invalid `idSite` set. The same behaviour was changed in Piwik 2.14 for regular bulk requests.\n\n0.1.5\n\n- Fixed a notice in case an incompatible Redis version is used.\n\n0.1.4\n\n- It is now possible to start multiple workers for faster insertion from Redis to the database. This can be configured in the \"Plugin Settings\"\n- Monitor does now output information whether a processor is currently processing the queue.\n- Added a new command `queuedtracking:lock-status` that outputs the status of each queue lock. This command can also unlock a queue by using the option `--unlock`.\n- Added a new command `queuedtracking:print-queued-requests` that outputs the next requests to process in each queue.\n- If someone passes the option `-vvv` to `.\/console queuedtracking:process` the Tracker debug mode will be enabled and additional information will be printed to the screen.\n\n0.1.2\n\n- Updated description on Marketplace\n\n0.1.0\n\n- Initial Release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org). In case of any issues with the plugin or\nfeature wishes create a new issues here: https:\/\/github.com\/piwik\/plugin-QueuedTracking\/issues . In case you experience\nany problems please post the output of `.\/console queuedtracking:test` in the issue.\n\n## TODO\n\nFor usage with multiple redis servers we should lock differently:\nhttp:\/\/redis.io\/topics\/distlock eg using https:\/\/github.com\/ronnylt\/redlock-php\n",
+    "numDownloads":466,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin writes all tracking requests into a <a href=\"http:\/\/redis.io\/\">Redis<\/a> instance instead of directly into the database.\nThis is useful if you have too many requests per second and your server cannot handle all of them directly (eg too many connections in nginx or MySQL).\nIt is also useful if you experience peaks sometimes. Those peaks can be handled much better by using this queue.\nWriting a tracking request into the queue is very fast (a tracking request takes in total a few milliseconds) compared to a regular tracking request (that takes multiple hundreds of milliseconds). The queue makes sure to process the tracking requests whenever possible even if it takes a while to process all requests after there was a peak.<\/p>\n\n<p><em>This plugin is currently BETA and there might be issues causing not tracked requests, wrongly tracked requests or duplicated tracked requests.<\/em><\/p>\n\n<p>Have a look at the FAQ for more information.<\/p>\n\n",
+      "faq":"<p><strong>What are the requirements for this plugin?<\/strong><\/p>\n\n<ul><li><a href=\"http:\/\/redis.io\/\">Redis server 2.8+<\/a> - <a href=\"http:\/\/redis.io\/topics\/quickstart\">Redis quickstart<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nicolasff\/phpredis\">phpredis PHP extension<\/a> - <a href=\"https:\/\/github.com\/nicolasff\/phpredis#installingconfiguring\">Install<\/a><\/li>\n<li>Transactions are used and must be supported by the SQL database.<\/li>\n<\/ul><p><strong>Where can I configure and enable the queue?<\/strong><\/p>\n\n<p>In your Piwik instance go to \"Settings =&gt; Plugin Settings\". There is a config section for this plugin.<\/p>\n\n<p><strong>When will a queued tracking request be processed?<\/strong><\/p>\n\n<p>First you should know that multiple tracking requests will be inserted into the database at once using\n<a href=\"http:\/\/developer.piwik.org\/api-reference\/tracking-api#bulk-tracking\">bulk tracking<\/a> as soon as a configurable number\nof requests is queued. By default we will check whether enough requests are queued during a regular tracking request\nand start processing them right after sending a response to the browser to make sure a user won't have to wait until\nthe queue has finished to process all requests. Have a look at this graph to see how it works:<\/p>\n\n<p><img src=\"https:\/\/raw.githubusercontent.com\/piwik\/plugin-QueuedTracking\/master\/docs\/How_it_works.png\" alt=\"How_it_works.png\" \/><\/p>\n\n<p><strong>I do not want to process queued requests within a tracking request, what shall I do?<\/strong><\/p>\n\n<p>Don't worry, if this solution doesn't work out for you for some reason you can disable it and process all queued\nrequests using the <a href=\"http:\/\/developer.piwik.org\/guides\/piwik-on-the-command-line\">Piwik console<\/a>. Just follow these steps:<\/p>\n\n<ul><li>Disable the setting \"Process during tracking request\" in the Piwik UI under \"Settings =&gt; Plugin Settings\"<\/li>\n<li>Setup a cronjob that executes the command <code>.\/console queuedtracking:process<\/code> for instance every minute<\/li>\n<li>That's it<\/li>\n<\/ul><p>The <code>queuedtracking:process<\/code> command will make sure to process all queued tracking requests whenever possible and the\ncommand will exit as soon as there are not enough requests queued anymore. That's why you should setup a cronjob to start\nthe command every minute as it will just start processing again as soon as there are enough requests. Be aware that it won't\nspeed up processing queued requests when starting this command multiple times. Only one process will actually replay\nqueued requests at a time.<\/p>\n\n<p>Example crontab entry that starts the processor every minute:<\/p>\n\n<p><code>* * * * * cd \/piwik &amp;&amp; .\/console queuedtracking:process &gt;\/dev\/null 2&gt;&amp;1<\/code><\/p>\n\n<p><strong>Can I keep track of the state of the queue?<\/strong><\/p>\n\n<p>Yes, you can. Just execute the command <code>.\/console queuedtracking:monitor<\/code>. This will show the current state of the queue.<\/p>\n\n<p><strong>Can I improve the speed of inserting requests from the Redis queue to the database?<\/strong><\/p>\n\n<p>Yes, you can by adding more workers. By default only one worker is activated at a time and only one worker processes tracking requests from Redis to the database. When inserting tracking requests into the database, at time of writing this, about 80% of the time is spent in PHP and the database might be rather bored. If you have multiple CPUs available on your server you can add more workers. You can do this by going in the Piwik Admin interface to \"Plugin Settings\". There will be a setting \"Number of queue workers\". Increase this number to the number of CPUs you want to dedeciate for processing requests. Best practice is to add more workers step by step. So first increase this number to 2 and check if the tracking request insertions is fast enough for you. If not and you have more CPUs available, increase the number again.<\/p>\n\n<p>When using multiple workers it might be worth to lower the number of \"Number of requests to process\" to eg 15 in \"Plugin Settings\". By default 25 requests are inserted in one step by using transactions. This means different workers might have to wait for each other. By lowering that number each worker will block the DB for less time.<\/p>\n\n<p>If you process requests from the command line via <code>.\/console queuedtracking:process<\/code> make sure to always start enough workers. Each time you execute this command one worker will be started. If already enough workers are in process no new worker will be started and the command just finishes immediately.<\/p>\n\n<p><strong>How fast are the requests inserted from Redis to the Database?<\/strong><\/p>\n\n<p>This very much depends on your setup and hardware. With fast CPUs you can achive up to 250req\/s with 1 worker, 400req\/s with 2 workers and 1500req\/s with 8 workers (tested on a AWS c3.x2large instance).<\/p>\n\n<p><strong>How should the redis server be configured?<\/strong><\/p>\n\n<p>Make sure to have enough memory to save all tracking requests in the queue. One tracking request in the queue takes about 2KB,\n20.000 tracking requests take about 50MB. All tracking requests of all websites are stored in the same queue.\nThere should be only one Redis server to make sure the data will be replayed in the same order as they were recorded.\nIf you want to configure Redis HA (High Availability) it is possible to use Redis Sentinel see further down.\nWe currently write into the Redis default database by default but you can configure to use a different one.<\/p>\n\n<p><strong>Why do some tests fail on my local Piwik instance?<\/strong><\/p>\n\n<p>Make sure the requirements mentioned above are met and Redis needs to run on 127.0.0.1:6379 with no password for the\nintegration tests to work. It will use the database \"15\" and the tests may flush all data it contains. Make sure\nit does not contain any important data.<\/p>\n\n<p><strong>What if I want to disable the queue?<\/strong><\/p>\n\n<p>You might want to disable the queue at some point but there are still some pending requests in the queue. We recommend to\nchange the \"Number of requests to process\" in plugin settings to \"1\" and process all requests using the command\n<code>.\/console queuedtracking:process<\/code> shortly before disabling the queue and directly afterwards. It is still possible to\nprocess remaining request once the queue is disabled but new tracking requests won't be written into the queue.<\/p>\n\n<p><strong>How can I access Redis data?<\/strong><\/p>\n\n<p>You can either acccess data on the command line via <code>redis-cli<\/code> or use a Redis monitor like <a href=\"https:\/\/github.com\/ErikDubbelboer\/phpRedisAdmin\">phpRedisAdmin<\/a>.\nIn case you are using something like a Redis monitor make sure it is not accessible by everyone.<\/p>\n\n<p><strong>The processor won't start processing again as it things another processor is processing the data already, what can I do?<\/strong><\/p>\n\n<p>First make sure there is actually no processor processing any requests. For example by executing the command\n<code>.\/console queuedtracking:monitor<\/code>. In case you are using the command line to process tracking requests make sure there\nis no processer running using the Linux command <code>ps<\/code>. If you are sure there is no process running you can release the lock\nby executing the command <code>.\/console queuedtracking:lock-status<\/code>. This will output more information which locks are in use and how to unlock them. Afterwards everything should work as normal again.\nYou should actually never have to do this as a lock automatically expires after a while. It just may take a while depending\non the amount of requests you are importing.<\/p>\n\n<p><strong>How can I test my Redis \/ QueuedTracking setup in case I'm getting errors?<\/strong><\/p>\n\n<p>There is a command to test some the connection to Redis as well as some needed features: <code>.\/console queuedtracking:test<\/code>.<\/p>\n\n<p>It might directly give you an error message if something goes wrong that helps you to resolve the issue. If your queue\nis always locked you might be as well interested in executing <code>.console queuedtracking:lock-status<\/code>.<\/p>\n\n<p><strong>How can I debug in case something goes wrong?<\/strong><\/p>\n\n<ul><li>Use the command <code>.\/console queuedtracking:monitor<\/code> to view the current state of all workers<\/li>\n<li>Use the command <code>.\/console queuedtracking:lock-status<\/code> to view the current state of all locks<\/li>\n<li>Set the option <code>-vvv<\/code> when processing via <code>.\/console queuedtracking:process -vvv<\/code> to enable the tracker debug mode for this run. This will print detailed information to screen.<\/li>\n<li>Enable tracker mode in <code>config.ini.php<\/code> via <code>[Tracker] debug=1<\/code> if processing requests during tracking is enabled.<\/li>\n<li>Use the command <code>.\/console queuedtracking:print-queued-requests<\/code> to view the next requests to process in each queue. If you execute this command twice within 1-10 minutes, and it outputs the same, the queue is not being processed most likely indicating a problem.<\/li>\n<\/ul><p><strong>I am using the Log Importer in combination with Queued Tracking, is there something to consider?<\/strong><\/p>\n\n<p>Yes, we recommend to set the \"Number of requests to process\" to <code>1<\/code> as the log importer usually sends multiple requests at once using bulk tracking already.<\/p>\n\n<p><strong>How can I configure the QueuedTracking plugin to use Redis Sentinel?<\/strong><\/p>\n\n<p>You can enable the Sentinel in the plugin settings. Make sure to specify the correct Sentinel \"master\" name.<\/p>\n\n<p>When using Sentinel, the <code>phpredis<\/code> extension is not needed as it uses a PHP class to connect to your Redis. Please note that calls to Redis might be a little bit slower.<\/p>\n\n<p><strong>Can I configure multiple Sentinel servers?<\/strong><\/p>\n\n<p>Yes, once Sentinel is enabled you can configure multiple servers by specifying multiple hosts and ports comma separated via the UI.<\/p>\n\n<p><strong>Are there any known issues?<\/strong><\/p>\n\n<ul><li>In case you are using bulk tracking the bulk tracking response varies compared to the regular one. We will always return\neither an image or a 204 HTTP response code in case the parameter <code>send_image=0<\/code> is sent.<\/li>\n<li>Anything related with Cookies won't work<\/li>\n<li>By design this plugin can delay the insertion of tracking requests causing real time plugins to not show the actual data since\nunder load tracking requests may take a while until they are replayed.<\/li>\n<\/ul>",
+      "documentation":"",
+      "changelog":"<p>0.3.1<\/p>\n\n<ul><li>Fixed Redis Sentinel was not working properly. Sentinel can be now configured via the UI and not via config. Also\nmultiple servers can be configured now.<\/li>\n<\/ul><p>0.3.0<\/p>\n\n<ul><li>Added support to use Redis Sentinel for automatic failover<\/li>\n<\/ul><p>0.2.6<\/p>\n\n<ul><li>When a request takes more than 2 seconds and debug tracker mode is enabled, log information about the request.<\/li>\n<\/ul><p>0.2.5<\/p>\n\n<ul><li>Use a better random number generator if available on the system to more evenly process queues.<\/li>\n<\/ul><p>0.2.4<\/p>\n\n<ul><li>The command <code>queuedtracking:monitor<\/code> will now work even when the queue is disabled<\/li>\n<\/ul><p>0.2.3<\/p>\n\n<ul><li>Added more tests and information to the <code>queuedtracking:test<\/code> command<\/li>\n<li>It is now possible to configure up to 16 workers<\/li>\n<\/ul><p>0.2.2<\/p>\n\n<ul><li>Improved output for the new <code>test<\/code> command<\/li>\n<li>New FAQ entries<\/li>\n<\/ul><p>0.2.1<\/p>\n\n<ul><li>Added a new command to test the connection to Redis. To test yor connection use <code>.\/console queuedtracking:test<\/code><\/li>\n<\/ul><p>0.2.0<\/p>\n\n<ul><li>Compatibility w\/ Piwik 2.15.<\/li>\n<\/ul><p>0.1.6<\/p>\n\n<ul><li>For bulk requests we do no longer skip all tracking requests after a tracking request that has an invalid <code>idSite<\/code> set. The same behaviour was changed in Piwik 2.14 for regular bulk requests.<\/li>\n<\/ul><p>0.1.5<\/p>\n\n<ul><li>Fixed a notice in case an incompatible Redis version is used.<\/li>\n<\/ul><p>0.1.4<\/p>\n\n<ul><li>It is now possible to start multiple workers for faster insertion from Redis to the database. This can be configured in the \"Plugin Settings\"<\/li>\n<li>Monitor does now output information whether a processor is currently processing the queue.<\/li>\n<li>Added a new command <code>queuedtracking:lock-status<\/code> that outputs the status of each queue lock. This command can also unlock a queue by using the option <code>--unlock<\/code>.<\/li>\n<li>Added a new command <code>queuedtracking:print-queued-requests<\/code> that outputs the next requests to process in each queue.<\/li>\n<li>If someone passes the option <code>-vvv<\/code> to <code>.\/console queuedtracking:process<\/code> the Tracker debug mode will be enabled and additional information will be printed to the screen.<\/li>\n<\/ul><p>0.1.2<\/p>\n\n<ul><li>Updated description on Marketplace<\/li>\n<\/ul><p>0.1.0<\/p>\n\n<ul><li>Initial Release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ReferrersManager",
+  "displayName":"Referrers Manager",
+  "owner":"sgiehl",
+  "description":"This plugin allows to view and manage search engines and social networks that are recognized with piwik.",
+  "homepage":"http:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager",
+  "createdDateTime":"2014-12-23 01:14:53",
+  "donate":{"paypal":"test3@example.com",
+    "flattr":null,"bitcoin":null},"support":[],"isTheme":false,"keywords":["referrer",
+    "search",
+    "engine",
+    "social"],"basePrice":0,"authors":[{"name":"Stefan Giehl",
+    "email":"test9@example.com",
+    "homepage":"http:\/\/github.com\/sgiehl"}],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager",
+  "lastUpdated":"2014-12-23 01:15:17",
+  "latestVersion":"1.1",
+  "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"72",
+    "numContributors":"1",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+    "release":"2014-12-23 01:14:53",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager\/commits\/v1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ReferrersManager\/download\/1.0"},{"name":"1.1",
+    "release":"2014-12-23 01:15:17",
+    "requires":{"piwik":">=2.0.4",
+      "php":">=5.3.0"},"readme":"# Piwik Referrers Manager Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ReferrersManager.png?branch=master)](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ReferrersManager) [![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager&title=Piwik Plugin Referrers Manager&language=&tags=github&category=software) \n\n\n## Description\n\nThis plugin allows to view and manage custom search engines and social networks that are recognized with piwik.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.0.4 or higher is required.\n\n### Features\n\n- Shows a list of all search engines and social networks defined in Piwik core.\n- Abillity to manage custom search engines and social networks\n- Abillity to disable\/enable Piwik's default social network list\n\n## Changelog\n\n- 1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager\/commits\/v1.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin allows to view and manage custom search engines and social networks that are recognized with piwik.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.0.4 or higher is required.<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Shows a list of all search engines and social networks defined in Piwik core.<\/li>\n<li>Abillity to manage custom search engines and social networks<\/li>\n<li>Abillity to disable\/enable Piwik's default social network list<\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ReferrersManager\/download\/1.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"RerUserDates",
+  "displayName":"Rer User Dates",
+  "owner":"RegioneER",
+  "description":"Hide custom date range selection from calendar, avoid users to set ranges in their default profile",
+  "homepage":"https:\/\/RegioneER.github.io\/projects\/",
+  "createdDateTime":"2014-05-13 11:40:04",
+  "donate":{"paypal":"supporters@piwik.org",
+    "flattr":"https:\/\/flattr.com\/thing\/131552\/Piwik-Web-Analytics-Open-Source",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/RegioneER\/RerUserDates",
+  "lastUpdated":"2015-02-05 09:36:03",
+  "latestVersion":"1.3.0",
+  "numDownloads":4930,"screenshots":[],"previews":[],"activity":{"numCommits":"28",
+    "numContributors":"3",
+    "lastCommitDate":"2015-02-05 09:35:05"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.1",
+    "release":"2014-05-13 11:40:04",
+    "requires":{"piwik":">=2.2.3b4"},"readme":"",
+    "numDownloads":30,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.0.1"},{"name":"1.0.2",
+    "release":"2014-05-14 14:14:07",
+    "requires":{"piwik":">=2.2.3b4"},"readme":"",
+    "numDownloads":53,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.0.2"},{"name":"1.1.0",
+    "release":"2014-05-16 13:12:05",
+    "requires":{"piwik":">=2.2.3b4"},"readme":"",
+    "numDownloads":72,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.1.0"},{"name":"1.1.1a",
+    "release":"2014-05-19 07:32:03",
+    "requires":{"piwik":">=2.2.3b4"},"readme":"",
+    "numDownloads":125,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.1.1a"},{"name":"1.2.0",
+    "release":"2014-05-29 15:46:04",
+    "requires":{"piwik":">=2.2.3-b4"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.0"},{"name":"1.2.1",
+    "release":"2014-05-29 16:00:04",
+    "requires":{"piwik":">=2.2.3-b4"},"readme":"",
+    "numDownloads":150,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.1"},{"name":"1.2.2",
+    "release":"2014-06-17 14:28:05",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":9,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.2"},{"name":"1.2.3",
+    "release":"2014-06-17 14:50:05",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":20,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.3"},{"name":"1.2.4",
+    "release":"2014-06-18 14:36:05",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":171,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.4"},{"name":"1.2.5",
+    "release":"2014-07-08 07:20:05",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":1664,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.5"},{"name":"1.2.6",
+    "release":"2015-01-29 13:50:04",
+    "requires":{"piwik":">=2.3.0"},"readme":"",
+    "numDownloads":78,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/2.0.5",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.6"},{"name":"1.3.0",
+    "release":"2015-02-05 09:36:03",
+    "requires":{"piwik":">=2.8.0"},"readme":"# Piwik RerUserDates Plugin\n\n## Description\n\nThis [Piwik](http:\/\/piwik.org) Plugin lets you hide custom date range selection from calendar for regular users,\nalso lets you avoid users setting ranges as default value in their profile.\n\nEach time users asks for ranged date reports, Piwik builds it on the fly during user's browsing.\nThis slows down your server when there is a load of visits and a large number of tracked websites.\nAs you can see this action is resource intensive so when it happens, live websites tracking may become slow or inaccurate.\n\nInstalling this plugin you remove choices in the field _\"Report date to load by default\"_ in _User Settings page_ for all regular users.\nSuperadmin users setting page remains untouched and administrators will see only a notification about plugin's current behavior.\n\nAnother plugin's feature is regular users can't select any more a custom range in the calendar but Superadmins still can build reports.\n\nYou can enable or disable the two features independently by clicking checkboxes in the plugin's configuration page available in the super admin user interface.\n\nThis plugin is translated in: English, Italian and French (just send a pull request to include your favourite language, see _Can I contribute_ f.a.q.)\n\n## Installation\n\nPlease, read official [Piwik's documentation](http:\/\/piwik.org\/faq\/plugins\/#faq_21) about it.\n\n## FAQ\n\n__I would like to see a demonstration...__\nJust take a look at _screenshots_ .\n\n__Can I donate to you?__\nThanks but we can't accept money donations because we're a Government Organization.\nAll donation are linked to official Piwik project's accounts, simply help them to help us.\n\n__Can I contribute on development?__\nSure, you're welcome! Just send a [pull request on Github](https:\/\/github.com\/RegioneER\/RerNewSite\/issues)\n\n## Changelog\n\n### v1.0\n\n - First release and Marketplace integration\n - User Manager screen shot and better readme documentation\n\n### v1.1\n\n- Custom date range selection is disabled in the calendar only for regular users. A shorts jQuery snippet hides radio input and submit button.\n- Regular users who chose a range date as their default are now forced to _yesterday_ report just visiting the index page with a warning notification.\n- New French translation by @gaumondp\n\n### v.1.2\n\n- New plugin settings user interface for super admins, some better improvement and few bugs solved.\n- Solved a regression due to a lack of Settings Feature in Piwik's versions below 2.4.0\n- Merged French translation \n- Fixed Piwik compatibility with 2.10 from 2.7 by @ThaDafinser in PR #6\n\n### v.1.3\n\n- Settings environment breaks compatibility with Piwik versions < 2.8.0, thanks to @ThaDafinser.\n\n## License\n\n[GPL v3](http:\/\/www.gnu.org\/licenses\/gpl-3.0-standalone.html) or later\n\n## Support\n\nYou can ask for support and your feedback is appreciated at plugin's [issue center on Github](https:\/\/github.com\/RegioneER\/RerUserDates\/issues).\n",
+    "numDownloads":2558,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This <a href=\"http:\/\/piwik.org\">Piwik<\/a> Plugin lets you hide custom date range selection from calendar for regular users,\nalso lets you avoid users setting ranges as default value in their profile.<\/p>\n\n<p>Each time users asks for ranged date reports, Piwik builds it on the fly during user's browsing.\nThis slows down your server when there is a load of visits and a large number of tracked websites.\nAs you can see this action is resource intensive so when it happens, live websites tracking may become slow or inaccurate.<\/p>\n\n<p>Installing this plugin you remove choices in the field <em>\"Report date to load by default\"<\/em> in <em>User Settings page<\/em> for all regular users.\nSuperadmin users setting page remains untouched and administrators will see only a notification about plugin's current behavior.<\/p>\n\n<p>Another plugin's feature is regular users can't select any more a custom range in the calendar but Superadmins still can build reports.<\/p>\n\n<p>You can enable or disable the two features independently by clicking checkboxes in the plugin's configuration page available in the super admin user interface.<\/p>\n\n<p>This plugin is translated in: English, Italian and French (just send a pull request to include your favourite language, see <em>Can I contribute<\/em> f.a.q.)<\/p>\n\n",
+      "faq":"<p><strong>I would like to see a demonstration...<\/strong>\nJust take a look at <em>screenshots<\/em> .<\/p>\n\n<p><strong>Can I donate to you?<\/strong>\nThanks but we can't accept money donations because we're a Government Organization.\nAll donation are linked to official Piwik project's accounts, simply help them to help us.<\/p>\n\n<p><strong>Can I contribute on development?<\/strong>\nSure, you're welcome! Just send a <a href=\"https:\/\/github.com\/RegioneER\/RerNewSite\/issues\">pull request on Github<\/a><\/p>",
+      "documentation":"",
+      "changelog":"<h3>v1.0<\/h3>\n\n<ul><li>First release and Marketplace integration<\/li>\n<li>User Manager screen shot and better readme documentation<\/li>\n<\/ul><h3>v1.1<\/h3>\n\n<ul><li>Custom date range selection is disabled in the calendar only for regular users. A shorts jQuery snippet hides radio input and submit button.<\/li>\n<li>Regular users who chose a range date as their default are now forced to <em>yesterday<\/em> report just visiting the index page with a warning notification.<\/li>\n<li>New French translation by @gaumondp<\/li>\n<\/ul><h3>v.1.2<\/h3>\n\n<ul><li>New plugin settings user interface for super admins, some better improvement and few bugs solved.<\/li>\n<li>Solved a regression due to a lack of Settings Feature in Piwik's versions below 2.4.0<\/li>\n<li>Merged French translation <\/li>\n<li>Fixed Piwik compatibility with 2.10 from 2.7 by @ThaDafinser in PR #6<\/li>\n<\/ul><h3>v.1.3<\/h3>\n\n<ul><li>Settings environment breaks compatibility with Piwik versions &lt; 2.8.0, thanks to @ThaDafinser.<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.3.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SecurityInfo",
+  "displayName":"Security Info",
+  "owner":"piwik",
+  "description":"Provides security information about your PHP environment and offers suggestions based on PhpSecInfo from the PHP Security Consortium.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 01:17:19",
+  "donate":{},"support":[],"isTheme":false,"keywords":["security",
+    "phpsec"],"basePrice":0,"authors":[{"name":"Piwik",
+    "email":"test1@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo",
+  "lastUpdated":"2014-12-23 01:18:41",
+  "latestVersion":"1.0.4",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/SecurityInfo\/images\/Security_Info.png"],"previews":[],"activity":{"numCommits":"150",
+    "numContributors":"7",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":true,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.3",
+    "release":"2014-12-23 01:17:21",
+    "requires":{"piwik":">=2.0.4-b5",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo\/commits\/1.0.3",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SecurityInfo\/download\/1.0.3"},{"name":"1.0.4",
+    "release":"2014-12-23 01:18:41",
+    "requires":{"piwik":">=2.0.4-b5",
+      "php":">=5.3.0"},"readme":"# Piwik SecurityInfo Plugin\n\n## Description\n\nWe highly recommend that all Piwik administrators enable the SecurityInfo plugin, and then view the Settings. The plugin is a tool in a multilayered security approach.\n\nPerformed checks include for instance usage of latest PHP version, usage of latest Piwik version, usage of PHP ini settings like magic_quotes_gpc and more. \n\n## FAQ\n\n__Does the plugin replace secure development practices or audit the code\/application?__\n\nNo, it doesn't. It just gives you some information based on PhpSecInfo from the PHP Security Consortium.\n\n## Changelog\n\n1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo\/commits\/1.0.4",
+    "readmeHtml":{"description":"\n\n<p>We highly recommend that all Piwik administrators enable the SecurityInfo plugin, and then view the Settings. The plugin is a tool in a multilayered security approach.<\/p>\n\n<p>Performed checks include for instance usage of latest PHP version, usage of latest Piwik version, usage of PHP ini settings like magic_quotes_gpc and more.<\/p>\n\n",
+      "faq":"<p><strong>Does the plugin replace secure development practices or audit the code\/application?<\/strong><\/p>\n\n<p>No, it doesn't. It just gives you some information based on PhpSecInfo from the PHP Security Consortium.<\/p>",
+      "documentation":"",
+      "changelog":"<p>1.0 Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/SecurityInfo\/download\/1.0.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ServerMonitor",
+  "displayName":"Server Monitor",
+  "owner":"Invision-Technology-Soultions",
+  "description":"Use Piwik as a front-end application to the Munin server monitoring tool. This is a Piwik plugin that reads the raw RRD data files from your Munin mas",
+  "homepage":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor",
+  "createdDateTime":"2015-07-13 06:44:04",
+  "donate":{"paypal":"support@invisionit.com.au",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor",
+  "lastUpdated":"2015-08-08 07:10:03",
+  "latestVersion":"0.1.1",
+  "numDownloads":2514,"screenshots":[],"previews":[],"activity":{"numCommits":"12",
+    "numContributors":"1",
+    "lastCommitDate":"2015-08-08 07:09:13"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-07-13 06:44:04",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":312,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ServerMonitor\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-08-08 07:10:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"# Piwik ServerMonitor Plugin\n\n## Description\n\nUse [Piwik](http:\/\/piwik.org\/) as your analytics platform for statistics collected by [Munin server monitoring](http:\/\/munin-monitoring.org\/) tool. \n\nThis is a [Piwik](http:\/\/piwik.org\/) plugin that reads the raw RRD files from your Munin master server. \n\nThis enhances the Munin functionality by providing all the great benefits of Piwik, such as\n \n* Real time data\n* Customizable Dashboards\n* Enhanced Graphing\n* Access Munin data using Piwik API\n* TODO: Access Munin data using Piwik Mobile\n* TODO: Scheduled reports \n* TODO: Custom alerts for Server Monitoring - using [Piwik CustomAlerts plugin](https:\/\/github.com\/piwik\/plugin-CustomAlerts) \n\n## Screenshots\n\nThe following screenshots show how Munin is integrated with Piwik Analytics platform.\n\n__Piwik Menu__\n\nThe Piwik Menu is automatically populated based on the Munin configuration.\n\n![Piwik Menu](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/menu.png)\n\nYou can filter results based on Munin node server.\n\n![Server Filter](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/serverfilter.png)\n\n__Piwik Graphs__\n\nBelow are some example graphs that are created based on Munin data.\n\n![Bind monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/bind.png)\n![Ngnix monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/nginx.png)\n![CPU monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/cpu.png)\n![Memory monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/memory.png)\n\n__Piwik Dashboard Widgets__\n\nAll Munin metrics are available as dashboard widgets, allowing you to create custom dashboards for Server Monitoring.\n\n![Widgets](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/widgets.png)\n\n![Custom Dashboard](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/dashboard.png)\n\n## Requirements\n\n* Requires [Piwik](http:\/\/piwik.org\/) (Tested >=2.13) and [Munin server monitoring](http:\/\/guide.munin-monitoring.org\/en\/latest\/master\/) (Tested 1.4.6) installed on same server.\n* [PHP RRD Functions](http:\/\/php.net\/manual\/en\/book.rrd.php) (Tested 1.1.3)\n* Piwik requires read-only access to Munin datafile and RRD files located in: \/var\/lib\/munin\/ \n\n## Installation\n\n* Ensure you meet the above requirements\n* Install via Piwik Marketplace\n\n## Roadmap\n \n* Integration with Piwik Scheduled reports\n* Integration with Piwik Custom Alerts\n* Integration with Piwik Mobile App\n* Support data collection from remote Munin master\n* Store Munin RRD data in Piwik database for historical statistics \n\n## Changelog\n\n* 0.1.0 - First beta\n* 0.1.5 - Tested Munin v2.25, Support Piwik Periods: Week, Month, Year\n\n## License\n\nGPL v3 or later\n\n## Support\n\nIf you require proffesional services, please contact us at [support@invisionit.com.au](mailto:support@invisionit.com.au)",
+    "numDownloads":2202,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Use <a href=\"http:\/\/piwik.org\/\">Piwik<\/a> as your analytics platform for statistics collected by <a href=\"http:\/\/munin-monitoring.org\/\">Munin server monitoring<\/a> tool.<\/p>\n\n<p>This is a <a href=\"http:\/\/piwik.org\/\">Piwik<\/a> plugin that reads the raw RRD files from your Munin master server.<\/p>\n\n<p>This enhances the Munin functionality by providing all the great benefits of Piwik, such as<\/p>\n\n<ul><li>Real time data<\/li>\n<li>Customizable Dashboards<\/li>\n<li>Enhanced Graphing<\/li>\n<li>Access Munin data using Piwik API<\/li>\n<li>TODO: Access Munin data using Piwik Mobile<\/li>\n<li>TODO: Scheduled reports <\/li>\n<li>TODO: Custom alerts for Server Monitoring - using <a href=\"https:\/\/github.com\/piwik\/plugin-CustomAlerts\">Piwik CustomAlerts plugin<\/a> <\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0 - First beta<\/li>\n<li>0.1.5 - Tested Munin v2.25, Support Piwik Periods: Week, Month, Year<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ServerMonitor\/download\/0.1.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ShibbolethLogin",
+  "displayName":"Shibboleth Login",
+  "owner":"pouyana",
+  "description":"Shibboleth Login Plugin for Piwik",
+  "homepage":"https:\/\/github.com\/pouyana\/LoginShibboleth",
+  "createdDateTime":"2015-08-10 12:00:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth",
+  "lastUpdated":"2015-09-07 08:10:03",
+  "latestVersion":"1.1.4",
+  "numDownloads":1603,"screenshots":[],"previews":[],"activity":{"numCommits":"10",
+    "numContributors":"1",
+    "lastCommitDate":"2015-09-07 08:18:19"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.1.2",
+    "release":"2015-08-10 12:00:03",
+    "requires":{"piwik":">=2.2.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ShibbolethLogin\/download\/1.1.2"},{"name":"1.1.3",
+    "release":"2015-08-10 12:10:02",
+    "requires":{"piwik":">=2.2.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":187,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ShibbolethLogin\/download\/1.1.3"},{"name":"1.1.4",
+    "release":"2015-09-07 08:10:03",
+    "requires":{"piwik":">=2.2.0",
+      "php":">=5.3.0"},"readme":"# Login Shibboleth\nLogin Shibboleth replaces the default Piwik Login plug-in and offers the user a way to incorporate existing Shibboleth with Piwik.\n\n# Pre-Requirement\nTo use this plug-in you should have the following pre-requirements set:\n- Your Shibboleth system is up and running and is connected to apache.\n- You can access some data from $\\_SERVER so, you can read user data from $\\_SERVER.\n- If you want to combine Shibboleth with LDAP, you should have php5-ldap or your distribution version of php-ldap installed.\n- You are familiar with PHP coding, so you can change the custom parameters and function to suite your system.\n- You follow the same user Model as Piwik. If you change the user Model to contain some extra informations, you should also change this plug-in's handling on the way users are created.\n- This plug-in supports the following user informations retrieval:\n  - username (login)\n  - email\n  - alias (name or fullname)\n  - token (random string length 32chars)\n  - websites (access_level and websites id)\n\n# Configuration\nFor the configuration following settings should be set in config\/config.ini.php\n\n## Datasource:\n\n```\n[datasource]  \ndatasource[\"alias\"] = \"shib\"  \ndatasource[\"login\"] = \"shib\"\ndatasource[\"email\"] = \"shib\"\ndatasource[\"websites\"] = \"shib, ldap\"\ndatasource[\"superuser\"] = \"shib\"\n```\n\nThe datasource helps you to change the way this plug-in accesses the information needed to generate or add users to Piwik. Normally Shibboleth (shib) should suffice. The software will look at the options in config.ini.php as it is ordered. If you want Shibboleth to prevail, add it first. If your first choice for an option is LDAP add (ldap) first. The MySQL database will automatically comes to help if none of the options give a valid result, which is most of the time unlikely. if your User Model is different, you can set other options here. If you use other resources than this tree, you can also define it here and the use the AuthLib class as parent class and extend it to your own Model.\n\n## Shib:\n\n```\n[shib]\nshib[\"login\"] = \"uid\"\nshib[\"alias\"] = \"fullName\"\nshib[\"email\"] = \"mail\"\nshib[\"superuser\"] = \"groupMembership\"\nshib[\"superuser_type\"] = \"string\"\nshib[\"superuser_param\"] = \"cn=RZ-Piwik-Admin\"\nshib[\"to_get_view\"] = \"groupMembership\"\nshib[\"to_get_view_type\"] = \"string\"\nshib[\"to_get_view_param\"] = \"cn=RZ-Piwik-View\"\nshib[\"to_get_admin\"] = \"groupMembership\"\nshib[\"to_get_admin_type\"] = \"string\"\nshib[\"to_get_admin_param\"] = \"cn=RZ-Piwik-View\"\n```\n\nIn shib you can set the Shibboleth parameter in which user data is caught. if you have some other settings it is possible to set them here. The information would be available in Shibboleth class.\n\n## LDAP:\n\n```\n[ldap]\nldap[\"host\"] = \"ldaphost\"\nldap[\"port\"] = 636\nldap[\"user\"] = \"binduser\"\nldap[\"password\"] = \"bindpassword\"\nldap[\"dn\"] = \"binddn\"\nldap[\"to_filter_view\"] = \"(userfilter)\"\nldap[\"to_get_view\"] = \"website attr\"\nldap[\"to_get_type_view\"] = \"string\"\nldap[\"to_filter_admin\"] = \"\"\nldap[\"to_get_admin\"] = \"\"\nldap[\"to_get_type_admin\"] = \"\"\n```\n\nThe same applies here just like the Shibboleth settings above.\n\n## Apache Settings\nTo exclude the public part of piwik, mainly the tracker and piwik.php from the Shibboleth Auth, the following settings have been set in apache VirtualHost.\n\n###Apache 2.2\n```\n<LocationMatch \"^\/(?!piwik.js|piwik.php|opt_out.php)\">\n        AuthType shibboleth\n        ShibRequireSession On\n        require shibboleth\n        require valid-user\n        satisfy any\n<\/LocationMatch>\n```\n\n###Apache 2.4\n```\n<LocationMatch \"^\/(?!piwik.js|piwik.php|opt_out.php)\">\n        AuthType Shibboleth\n        ShibrequestSetting requireSession 1\n        Require valid-user\n        satisfy all\n<\/LocationMatch>\n```\n\n# License\n> The MIT License (MIT)\n\n> Copyright (c) 2015 Pouyan Azari  \n> Copyright (c) 2015 University of W\u00fcrzburg\n\n> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+    "numDownloads":1415,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth\/commits\/0.1.3",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/ShibbolethLogin\/download\/1.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ShortcodeTracker",
+  "displayName":"Shortcode Tracker",
+  "owner":"mgazdzik",
+  "description":"Plugin allowing user to create shortcodes and track their usage within Piwik. Also integrates with UI to deliver user-friendly interaction.",
+  "homepage":"http:\/\/mgazdzik.pl\/shortcodetracker",
+  "createdDateTime":"2015-11-11 12:46:02",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker",
+  "lastUpdated":"2015-12-12 16:54:03",
+  "latestVersion":"0.6.2",
+  "numDownloads":1454,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2015-12-20 11:58:06"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.4.3",
+    "release":"2015-11-11 12:46:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.1.8",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.4.3"},{"name":"0.4.5",
+    "release":"2015-11-11 12:52:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":214,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.1.9",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.4.5"},{"name":"0.5.0",
+    "release":"2015-12-10 21:22:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":46,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/1.0.3",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.5.0"},{"name":"0.6.0",
+    "release":"2015-12-12 16:48:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.0.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.6.0"},{"name":"0.6.2",
+    "release":"2015-12-12 16:54:03",
+    "requires":{"piwik":">=2.14.0"},"readme":"# ShortcodeTracker Plugin\n\n| Branch | Status |\n| --- | --- |\n| Master | [![Build Status](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker.svg?branch=master)](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker) |\n| Develop | [![Build Status](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker.svg?branch=develop)](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker) |\n\n## Description\n\nPlugin allows to turn Piwik instance into URL Shortener.\n\nBasic features:\n\n* easily create shortcode from any page you track in Piwik (integration with Actions report UI),\n* create shortcode for any custom URL you want,\n* perform redirects using your Piwik instance,\n* get usage statistics for shortcodes handled by your instance\n    * get best performing URL's on websites you track,\n    * external URLs redirect statistics,\n* see which URLs are being shortened and visited most often - also for external URLs not tracked in your Piwik.\n\nGoodness coming:\n\n* for redirect performance improvement, store your shortcodes in storage like Memcache or Redis,\n* attributing shortcode redirects with actual visits on your page,\n* more advanced reports,\n\nBefore using, please read content in [`Setup`](https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker#setup) section \nas it contains steps required to make plugin work with your Piwik instance!\n\n## Usage\n\nAfter correctly setting up this plugin (please see section below), you are ready for shortening your Urls.\n\nThere is one new section in top reporting menu called \"Shortcodes\".\n\nThis view gives you possibility to shorten any URL you want and operate with shortcode retrieved.\n\nAdditionally this plugin integrates with Page URL's report - hover over URL you want to shorten and click scissors icon.\n\nThis will call popup with appropriate shortcode, so you don't need to manually shorten any URL you already track with your\nPiwik instance.\n\nEnjoy!\n\n## Setup\n\n### Webserver\nBesides of functional Piwik instance with this plugin enabled you will also need special configuration for your webserver.\n\nIt's purpose is to redirect any short url hitting your server to proper API method doing the magic.\n\nBelow you can find example configurations\n\n* [for NGINX webserver vhost](docs\/nginx_config.md)\n* [for Apache2 webserver .htaccess file](docs\/apache_config.md)\n\n**Please be aware that in your case this configuration may be different, so please contact your system\/webserver\nadmin for advisory!**\n\n\n### Plugin\n\nBefore you can start shortening your URLs you need to perform following steps:\n\n* go to Administration -> Plugins,\n* find \"ShortcodeTracker\" plugin and click `enable`,\n\nAfter you confirm that plugin has been enabled:\n* go to Administration -> Plugin Settings,\n* go to ShortcodeTracker section,\n* fill in Shortener URL input,\n* if you want to track external sites, you need to decide to which Piwik page those actions will be attributed (see\nExternal redirects tracking section below),\n* click 'save',\n* **additionally you have to make Shortener URL a trusted host for Piwik by entering it in settings section**,\n\nThis is necessary to perform, as otherwise you will not be able to generate shortened URLs or use them with Piwik.\n\n### External redirects tracking\n\nIt is possible to also track redirect actions for external URLs (i.e. which URL doesn't match any page tracked within\nyour Piwik instance). However, it is required to decide to which site this traffic will be attributed to.\n\nIt is recommended to create a separate Website in Piwik instance only dedicated to this traffic, so that other websites\nreports won't be affected by redirect events.\n\nTo select which site should collect redirects:\n\n* go to `Plugin Settings` section,\n* from dropdown you can select site for external redirects,\n* alternatively you can select not to track external redirects by setting `Do not collect external shortcode redirects`,\n* click save\n\n## Changelog\n\n* 0.6.2\n    * Sort out mistakenly pushed tag\n\n\n* 0.6.0\n    * Shortcode usage report added link to shortened page to for easier recognition of what is being shortened and used most,\n    * Display summarized report displaying which URLs were visited most via shortcode redirects,\n\n\n* 0.5.0\n    * Add statistics collection for redirects to pages not tracked with Piwik (external pages)\n         * collect redirect statistics into Site you choose in interface,\n         * aggregate and display report for external shortcodes in separate view\n\n\n* 0.4.5\n    * fix README formating for sake of Plugin market\n    \n    \n* 0.4.4\n    * add license to plugin.json\n    \n    \n* 0.4.3\n    * fix plugin.json structure for Plugin market\n\n\n* 0.4.2\n    * Added missing changelog\n\n\n* 0.4.0\n    * Piwik Plugin market release\n\n\n* 0.3.0\n    * Tuned travis build file\n    * Mark Shortcodes as internal during creating\n    * Track custom event with \"redirect\" category upon each redirect for internal Shortcode\n    * Secure API methods from anonymous user usage\n    * Add shortcode report for internally tracked URLs:\n        * Create new visit during redirect (store referrer)\n        * Add Shortcode usage report based on Custom Events plugin API\n\n\n* 0.2.0\n    * added Travis build badges for master and develop branches\n    * fixed existing unit tests\n    * slight refactor in terms of class naming\n    * added integration test for API methods\n\n\n* 0.1.0\n    * API allowing to create and retrieve shortcodes,\n    * basic storage in MySQL, but possible to add other caching layers - for ex. Memcache, Redis,\n    * unit tests covering core logic,\n    * redirect API method that will preform appropriate redirects for incoming shortcode requests,\n    * basic setup guide involving Apache2 and Nginx configs,\n    * settings section allowing user to configure Shortener base URL (which may and should be different than Piwik instance)\n\n## Backlog\n\n\n\n* Migrate plugin to work with Piwik 2.15 LTS version,\n* Add advanced report for each shortcode\n    * stitch every redirect event with following action,\n    * add new referrer type (shortcode),\n    * aggregate statistics,\n    * add segment for referrer,\n* Refactor plugin so it's possible to cover Model.php with tests,\n* Add queue system for tracking redirect events to improve performance of redirect feature,\n* Add integration test for redirect tracking,\n* Add support for at least one caching system (redis\/memcache),\n* Improve HTML elements designs\/styles,\n* Throw exception\/signal in UI in case Shortener URL is not changed,\n* Introduce Shortener base URL validation (in Settings section),\n* introduce value object to store Shortcode,\n* handle case when given idsite has multiple domains assigned (currently it's only for main domain URL),\n\n\n## Support\n\nPlease direct any feedback regarding plugin to Github repository issue tracker available at\n[https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/issues](https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/issues).\n\n\n## Credits\nScissors icon visible in Actions report is originating from\n[https:\/\/icons8.com\/](https:\/\/icons8.com\/).\n",
+    "numDownloads":1193,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.43b",
+    "readmeHtml":{"description":"\n\n<p>Plugin allows to turn Piwik instance into URL Shortener.<\/p>\n\n<p>Basic features:<\/p>\n\n<ul><li>easily create shortcode from any page you track in Piwik (integration with Actions report UI),<\/li>\n<li>create shortcode for any custom URL you want,<\/li>\n<li>perform redirects using your Piwik instance,<\/li>\n<li>get usage statistics for shortcodes handled by your instance\n\n<ul><li>get best performing URL's on websites you track,<\/li>\n<li>external URLs redirect statistics,<\/li>\n<\/ul><\/li>\n<li>see which URLs are being shortened and visited most often - also for external URLs not tracked in your Piwik.<\/li>\n<\/ul><p>Goodness coming:<\/p>\n\n<ul><li>for redirect performance improvement, store your shortcodes in storage like Memcache or Redis,<\/li>\n<li>attributing shortcode redirects with actual visits on your page,<\/li>\n<li>more advanced reports,<\/li>\n<\/ul><p>Before using, please read content in <a href=\"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker#setup\"><code>Setup<\/code><\/a> section \nas it contains steps required to make plugin work with your Piwik instance!<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<ul><li><p>0.6.2<\/p>\n\n<ul><li>Sort out mistakenly pushed tag<\/li>\n<\/ul><\/li>\n<li><p>0.6.0<\/p>\n\n<ul><li>Shortcode usage report added link to shortened page to for easier recognition of what is being shortened and used most,<\/li>\n<li>Display summarized report displaying which URLs were visited most via shortcode redirects,<\/li>\n<\/ul><\/li>\n<li><p>0.5.0<\/p>\n\n<ul><li>Add statistics collection for redirects to pages not tracked with Piwik (external pages)\n\n<ul><li>collect redirect statistics into Site you choose in interface,<\/li>\n<li>aggregate and display report for external shortcodes in separate view<\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<li><p>0.4.5<\/p>\n\n<ul><li>fix README formating for sake of Plugin market<\/li>\n<\/ul><\/li>\n<li><p>0.4.4<\/p>\n\n<ul><li>add license to plugin.json<\/li>\n<\/ul><\/li>\n<li><p>0.4.3<\/p>\n\n<ul><li>fix plugin.json structure for Plugin market<\/li>\n<\/ul><\/li>\n<li><p>0.4.2<\/p>\n\n<ul><li>Added missing changelog<\/li>\n<\/ul><\/li>\n<li><p>0.4.0<\/p>\n\n<ul><li>Piwik Plugin market release<\/li>\n<\/ul><\/li>\n<li><p>0.3.0<\/p>\n\n<ul><li>Tuned travis build file<\/li>\n<li>Mark Shortcodes as internal during creating<\/li>\n<li>Track custom event with \"redirect\" category upon each redirect for internal Shortcode<\/li>\n<li>Secure API methods from anonymous user usage<\/li>\n<li>Add shortcode report for internally tracked URLs:\n\n<ul><li>Create new visit during redirect (store referrer)<\/li>\n<li>Add Shortcode usage report based on Custom Events plugin API<\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<li><p>0.2.0<\/p>\n\n<ul><li>added Travis build badges for master and develop branches<\/li>\n<li>fixed existing unit tests<\/li>\n<li>slight refactor in terms of class naming<\/li>\n<li>added integration test for API methods<\/li>\n<\/ul><\/li>\n<li><p>0.1.0<\/p>\n\n<ul><li>API allowing to create and retrieve shortcodes,<\/li>\n<li>basic storage in MySQL, but possible to add other caching layers - for ex. Memcache, Redis,<\/li>\n<li>unit tests covering core logic,<\/li>\n<li>redirect API method that will preform appropriate redirects for incoming shortcode requests,<\/li>\n<li>basic setup guide involving Apache2 and Nginx configs,<\/li>\n<li>settings section allowing user to configure Shortener base URL (which may and should be different than Piwik instance)<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.6.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SimplePageBuilder",
+  "displayName":"Simple Page Builder",
+  "owner":"PiwikPRO",
+  "description":"Lets you add a custom page to Piwik. The page will be visible to all users in the top menu.",
+  "homepage":"https:\/\/github.com\/PiwikPRO\/SimplePageBuilder",
+  "createdDateTime":"2014-12-08 04:50:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder",
+  "lastUpdated":"2016-03-08 12:08:04",
+  "latestVersion":"1.2.0",
+  "numDownloads":3892,"screenshots":[],"previews":[],"activity":{"numCommits":"38",
+    "numContributors":"5",
+    "lastCommitDate":"2016-04-15 22:58:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.1",
+    "release":"2014-12-08 04:50:03",
+    "requires":{"piwik":">=2.10.0-b2"},"readme":"",
+    "numDownloads":14,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.1"},{"name":"1.0.2",
+    "release":"2014-12-09 02:18:04",
+    "requires":{"piwik":">=2.10.0-b2"},"readme":"",
+    "numDownloads":52,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.2"},{"name":"1.0.3",
+    "release":"2014-12-12 14:08:03",
+    "requires":{"piwik":">=2.10.0-b2"},"readme":"",
+    "numDownloads":289,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.3"},{"name":"1.0.4",
+    "release":"2015-01-19 14:28:03",
+    "requires":{"piwik":">=2.9.0"},"readme":"",
+    "numDownloads":1234,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.4"},{"name":"1.0.5",
+    "release":"2015-07-28 10:00:03",
+    "requires":{"piwik":">=2.9.0"},"readme":"",
+    "numDownloads":557,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.5"},{"name":"1.1.0",
+    "release":"2015-10-21 22:20:03",
+    "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+    "numDownloads":1124,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.1.0"},{"name":"1.2.0",
+    "release":"2016-03-08 12:08:04",
+    "requires":{"piwik":">=2.16.0"},"readme":"# Piwik CustomPage Plugin\n\nMaster [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder)\nDevelop [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder)\n\n## Description\n\nThis plugin lets you add a page with custom HTML content to Piwik. The page will be linked in the top menu and can be edited by the super user.\n\n## Changelog\n\n**1.2.0**\n\n- PPCDEV-2609 Compatibility with Piwik 2.16.0\n\n**1.1.0**\n\n- Compatibility with Piwik 2.15.\n\n**1.0.3**\n\n- added composer.json\n\n**1.0.2**\n\n- Correctly replace {date} when period is range.\n- In example use H2 in the sample text for the custom page title\n\n**1.0.0**\n\n- First stable version\n\n## Support\n\nPlease direct any feedback to [SimplePageBuilder issues on GitHub](https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/issues).\n",
+    "numDownloads":622,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.2",
+    "readmeHtml":{"description":"\n\n<p>This plugin lets you add a page with custom HTML content to Piwik. The page will be linked in the top menu and can be edited by the super user.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p><strong>1.2.0<\/strong><\/p>\n\n<ul><li>PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<\/ul><p><strong>1.1.0<\/strong><\/p>\n\n<ul><li>Compatibility with Piwik 2.15.<\/li>\n<\/ul><p><strong>1.0.3<\/strong><\/p>\n\n<ul><li>added composer.json<\/li>\n<\/ul><p><strong>1.0.2<\/strong><\/p>\n\n<ul><li>Correctly replace {date} when period is range.<\/li>\n<li>In example use H2 in the sample text for the custom page title<\/li>\n<\/ul><p><strong>1.0.0<\/strong><\/p>\n\n<ul><li>First stable version<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SimpleSysMon",
+  "displayName":"Simple Sys Mon",
+  "owner":"job963",
+  "description":"Simple System Monitor for visualizing system data like cpu load, memory use or network traffic",
+  "homepage":"https:\/\/github.com\/job963\/SimpleSysMon",
+  "createdDateTime":"2014-09-16 07:38:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/job963\/SimpleSysMon",
+  "lastUpdated":"2015-03-15 14:34:04",
+  "latestVersion":"0.3.1",
+  "numDownloads":6929,"screenshots":[],"previews":[],"activity":{"numCommits":"25",
+    "numContributors":"2",
+    "lastCommitDate":"2015-03-15 14:33:05"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-09-16 07:38:04",
+    "requires":{},"readme":"",
+    "numDownloads":53,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-09-17 18:30:04",
+    "requires":{},"readme":"",
+    "numDownloads":3,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.1.1"},{"name":"0.1.3",
+    "release":"2014-09-17 18:50:03",
+    "requires":{},"readme":"",
+    "numDownloads":1108,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.1.3"},{"name":"0.2",
+    "release":"2014-12-09 20:36:03",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.2"},{"name":"0.2.1",
+    "release":"2014-12-09 20:40:04",
+    "requires":{},"readme":"",
+    "numDownloads":936,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.2.1"},{"name":"0.3",
+    "release":"2015-03-01 11:36:04",
+    "requires":{},"readme":"",
+    "numDownloads":339,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.3"},{"name":"0.3.1",
+    "release":"2015-03-15 14:34:04",
+    "requires":{},"readme":"# Piwik Simple System Monitor Plugin\n\n## Description\n\nThis plugin shows how much load your webserver does have, where Piwik (and maybe your main website) is running. Additionally the free or the used memory will be displayed.\n\nThe display will be refreshed automatically as often as you like. This can be setup by yourself in the plugin settings.\n\n\n## Screenshots\n**Table Widget**  \n![](https:\/\/github.com\/job963\/SimpleSysMon\/raw\/master\/screenshots\/widgetLiveSysLoad-EN.png)\n\n**Graph Widget**  \n![](https:\/\/github.com\/job963\/SimpleSysMon\/raw\/master\/screenshots\/widgetLiveSysLoadBars-EN.png)\n\n**Plugin Settings**  \n![](https:\/\/github.com\/job963\/SimpleSysMon\/raw\/master\/screenshots\/settingLiveSysLoad-EN.png)\n\n\n## Installation\n\nInstall it via [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\nOR \n\nInstall manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n   ```\n   cd plugins\/\n   git clone https:\/\/github.com\/job963\/SimpleSysMon.git SimpleSysMon\n   ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. Goto Settings -> Plugin Settings an setup the values for the widget.\n\n4. You will now find the widget under the Simple System Monitor -> Live System Load.\n\n## Changelog\n\n* **0.1.0 Initial release**\n  * Display of CPU load\n  * Display of free or used memory    \n\n* **0.1.1 Initial release**\n  * Corrections and error trapping for shared websites where the some values aren't accessible \n  \n* **0.2.0 Graphical display**\n  * Display as bar chart for system load and memory use added \n  \n* **0.2.1 Hungarian language**\n  * Hungarian language added \n  \n* **0.3.0 Bar charts for network and disk**\n  * Two new bars for displaying network traffic (upload and download) and disk usage added\n  * Additional to the percentage values, the real values are display on hover \n\n\n## FAQ\n\n**How is the CPU load calculated?**  \nFor the CPU load the PHP function sys_getloadavg() is used and divided by the number of cores.\n  \n**Why is there a difference between free and used memory?**  \nThere are three \"memory parts\" under Linux:   \n\n* Used memory\n* Cache\n* Free memory\n  \nThe sum of these three parts will be equal to the total memory. But only `used memory` and `free memory` are available as options (in settings).\n  \n**What is the value for 100% network traffic**  \nYou can setup the value for the maximum network traffic in the plugin system settings. The value there must be specified in kB\/s (kilobyte per second). This value is used as 100% network traffic.\n  \n**Does the plugin work on a shared webspace?**  \nIn the most cases a shared webspace doesn't have access to system information. Therefore in these cases, the plugin cannot be used. The pseudo file system \/proc must be accessible.\n  \n**Does the plugin work on Windows system?**  \nIf the server where Piwik is running is using Windows as OS, the plugin doesn't work yet.  \nIf just your browser is running under Windows (and the server runs under Linux) this plugin works well.\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease report any issues directly in [Github](https:\/\/github.com\/job963\/SimpleSysMon\/issues). \n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+    "numDownloads":4490,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin shows how much load your webserver does have, where Piwik (and maybe your main website) is running. Additionally the free or the used memory will be displayed.<\/p>\n\n<p>The display will be refreshed automatically as often as you like. This can be setup by yourself in the plugin settings.<\/p>\n\n",
+      "faq":"<p><strong>How is the CPU load calculated?<\/strong>\nFor the CPU load the PHP function sys_getloadavg() is used and divided by the number of cores.<\/p>\n\n<p><strong>Why is there a difference between free and used memory?<\/strong>\nThere are three \"memory parts\" under Linux:<\/p>\n\n<ul><li>Used memory<\/li>\n<li>Cache<\/li>\n<li>Free memory<\/li>\n<\/ul><p>The sum of these three parts will be equal to the total memory. But only <code>used memory<\/code> and <code>free memory<\/code> are available as options (in settings).<\/p>\n\n<p><strong>What is the value for 100% network traffic<\/strong>\nYou can setup the value for the maximum network traffic in the plugin system settings. The value there must be specified in kB\/s (kilobyte per second). This value is used as 100% network traffic.<\/p>\n\n<p><strong>Does the plugin work on a shared webspace?<\/strong>\nIn the most cases a shared webspace doesn't have access to system information. Therefore in these cases, the plugin cannot be used. The pseudo file system \/proc must be accessible.<\/p>\n\n<p><strong>Does the plugin work on Windows system?<\/strong>\nIf the server where Piwik is running is using Windows as OS, the plugin doesn't work yet.\nIf just your browser is running under Windows (and the server runs under Linux) this plugin works well.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li><p><strong>0.1.0 Initial release<\/strong><\/p>\n\n<ul><li>Display of CPU load<\/li>\n<li>Display of free or used memory    <\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.1 Initial release<\/strong><\/p>\n\n<ul><li>Corrections and error trapping for shared websites where the some values aren't accessible <\/li>\n<\/ul><\/li>\n<li><p><strong>0.2.0 Graphical display<\/strong><\/p>\n\n<ul><li>Display as bar chart for system load and memory use added <\/li>\n<\/ul><\/li>\n<li><p><strong>0.2.1 Hungarian language<\/strong><\/p>\n\n<ul><li>Hungarian language added <\/li>\n<\/ul><\/li>\n<li><p><strong>0.3.0 Bar charts for network and disk<\/strong><\/p>\n\n<ul><li>Two new bars for displaying network traffic (upload and download) and disk usage added<\/li>\n<li>Additional to the percentage values, the real values are display on hover <\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SiteMigration",
+  "displayName":"Site Migration",
+  "owner":"PiwikPRO",
+  "description":"Migrate your website and all website data between two Piwik installations.",
+  "homepage":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration",
+  "createdDateTime":"2014-11-11 21:28:05",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration",
+  "lastUpdated":"2015-11-27 02:46:04",
+  "latestVersion":"1.0.8",
+  "numDownloads":5191,"screenshots":[],"previews":[],"activity":{"numCommits":"70",
+    "numContributors":"7",
+    "lastCommitDate":"2016-05-11 09:27:40"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+    "release":"2014-11-11 21:28:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.0-b9"},"readme":"",
+    "numDownloads":77,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.0"},{"name":"1.0.1",
+    "release":"2014-11-12 23:34:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.0-b9"},"readme":"",
+    "numDownloads":127,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.1"},{"name":"1.0.2",
+    "release":"2014-11-17 00:04:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.0-b9"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.2"},{"name":"1.0.3",
+    "release":"2014-11-17 00:06:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.0-b9"},"readme":"",
+    "numDownloads":19,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.3"},{"name":"1.0.4",
+    "release":"2014-11-17 11:06:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.1"},"readme":"",
+    "numDownloads":202,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.4"},{"name":"1.0.5",
+    "release":"2014-11-26 21:26:06",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.1"},"readme":"",
+    "numDownloads":130,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.5"},{"name":"1.0.6",
+    "release":"2014-12-03 03:34:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.9.1"},"readme":"",
+    "numDownloads":174,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.6"},{"name":"1.0.7",
+    "release":"2014-12-21 22:04:05",
+    "requires":{"php":">=5.3.0",
+      "piwik":">=2.10.0-b10"},"readme":"",
+    "numDownloads":2669,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.7"},{"name":"1.0.8",
+    "release":"2015-11-27 02:46:04",
+    "requires":{"php":">=5.3.3",
+      "piwik":">=2.11.0"},"readme":"# Piwik SiteMigration Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SiteMigration.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SiteMigration)\n\n## Description\n\nMigrate websites, and all the tracking data between two Piwik installations. \n\nThis tool is useful in case you want to merge two Piwik installations, or if you want to move one or several websites to another Piwik server.\n\n### Requirements\n\nTo migrate data from one Piwik server to another server, you must:\n\n * First make sure that both Piwik servers are using the latest Piwik version.\n * You must be able to connect to the Mysql server of the Target Piwik Server.\n * You must run the console command on the Piwik Server that data will be copied from.\n  \n### Migrating the data\n\nStart the migration by calling from the command line CLI the following command:\n\n    .\/console migration:site idSite --db-prefix piwik_\n    \nThe command will ask for the credentials to the target database.\n \nIt will then migrate the data from the current Piwik to the target Piwik.\n\n### Options\n\nRun `.\/console migration:site --help` to get a full list of options.\n \n## FAQ\n\n**How do I migrate site data between two dates only?**\n\nYou can use command options: `--date-from` and `--date-to`.\n\n**How do I migrate tracking log data only, and skip migrating archived data?**\n\nJust add the `--skip-archive-data` option.\n\n\n**How do I migrate the archived data and skip the tracking data?**\n\nJust add the `--skip-log-data` option.\n\n**Can I run the command on the Target Piwik server (where data will be imported)?**\n\nNo, you must run the command from the source Piwik server (the server which contains the data you want to migrate).\n\n## Changelog\n\n**v1.0.7**\n\n- Updated the plugin for compatibility with Piwik 2.10.\n\n**v1.0.6**\n\n- [#6](https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/6): fixed a PHP 5.3 incompatibility\n\n**v1.0.5**\n\n- [#5](https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/5): fixed `Integrity constraint violation: 1048 Column 'idaction_url' cannot be null`\n\n**v1.0.4**\n\n- [#3](https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/3): fixed `--db-prefix` option\n\n**v1.0.3**\n\n- Documentation update\n\n**v1.0.2**\n\n- Documentation update & fixed bug when archive_blob tables are not found \n\n**v1.0.1**\n\n- Documentation update\n\n**v1.0.0**\n\n- First stable release\n- Bugfixes\n\n**v0.1.1**\n\n- Changed license to free plugin\n- Changed name to SiteMigration\n\n**v0.1.0**\n\n- Initial release\n\n## Credits\n\nCreated by [Piwik PRO](http:\/\/piwik.pro\/)\n",
+    "numDownloads":1793,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v1.0.0",
+    "readmeHtml":{"description":"\n\n<p>Migrate websites, and all the tracking data between two Piwik installations.<\/p>\n\n<p>This tool is useful in case you want to merge two Piwik installations, or if you want to move one or several websites to another Piwik server.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p>To migrate data from one Piwik server to another server, you must:<\/p>\n\n<ul><li>First make sure that both Piwik servers are using the latest Piwik version.<\/li>\n<li>You must be able to connect to the Mysql server of the Target Piwik Server.<\/li>\n<li>You must run the console command on the Piwik Server that data will be copied from.<\/li>\n<\/ul><h3>Migrating the data<\/h3>\n\n<p>Start the migration by calling from the command line CLI the following command:<\/p>\n\n<pre><code>.\/console migration:site idSite --db-prefix piwik_\n<\/code><\/pre>\n\n<p>The command will ask for the credentials to the target database.<\/p>\n\n<p>It will then migrate the data from the current Piwik to the target Piwik.<\/p>\n\n<h3>Options<\/h3>\n\n<p>Run <code>.\/console migration:site --help<\/code> to get a full list of options.<\/p>\n\n",
+      "faq":"<p><strong>How do I migrate site data between two dates only?<\/strong><\/p>\n\n<p>You can use command options: <code>--date-from<\/code> and <code>--date-to<\/code>.<\/p>\n\n<p><strong>How do I migrate tracking log data only, and skip migrating archived data?<\/strong><\/p>\n\n<p>Just add the <code>--skip-archive-data<\/code> option.<\/p>\n\n<p><strong>How do I migrate the archived data and skip the tracking data?<\/strong><\/p>\n\n<p>Just add the <code>--skip-log-data<\/code> option.<\/p>\n\n<p><strong>Can I run the command on the Target Piwik server (where data will be imported)?<\/strong><\/p>\n\n<p>No, you must run the command from the source Piwik server (the server which contains the data you want to migrate).<\/p>",
+      "documentation":"",
+      "changelog":"<p><strong>v1.0.7<\/strong><\/p>\n\n<ul><li>Updated the plugin for compatibility with Piwik 2.10.<\/li>\n<\/ul><p><strong>v1.0.6<\/strong><\/p>\n\n<ul><li><a href=\"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/6\">#6<\/a>: fixed a PHP 5.3 incompatibility<\/li>\n<\/ul><p><strong>v1.0.5<\/strong><\/p>\n\n<ul><li><a href=\"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/5\">#5<\/a>: fixed <code>Integrity constraint violation: 1048 Column 'idaction_url' cannot be null<\/code><\/li>\n<\/ul><p><strong>v1.0.4<\/strong><\/p>\n\n<ul><li><a href=\"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/3\">#3<\/a>: fixed <code>--db-prefix<\/code> option<\/li>\n<\/ul><p><strong>v1.0.3<\/strong><\/p>\n\n<ul><li>Documentation update<\/li>\n<\/ul><p><strong>v1.0.2<\/strong><\/p>\n\n<ul><li>Documentation update &amp; fixed bug when archive_blob tables are not found <\/li>\n<\/ul><p><strong>v1.0.1<\/strong><\/p>\n\n<ul><li>Documentation update<\/li>\n<\/ul><p><strong>v1.0.0<\/strong><\/p>\n\n<ul><li>First stable release<\/li>\n<li>Bugfixes<\/li>\n<\/ul><p><strong>v0.1.1<\/strong><\/p>\n\n<ul><li>Changed license to free plugin<\/li>\n<li>Changed name to SiteMigration<\/li>\n<\/ul><p><strong>v0.1.0<\/strong><\/p>\n\n<ul><li>Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.8"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SnoopyBehavioralScoring",
+  "displayName":"Snoopy Behavioral Scoring",
+  "owner":"spletnik",
+  "description":"User behaviour scoring plugin for piwik. It allows you to score your visitors depending on goals reached, pages visited, email campaigns opened and ot",
+  "homepage":"http:\/\/spletnik.si\/",
+  "createdDateTime":"2015-12-08 20:52:03",
+  "donate":{"paypal":"srle@spletnik.si",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring",
+  "lastUpdated":"2016-01-27 08:50:04",
+  "latestVersion":"0.1.2",
+  "numDownloads":1211,"screenshots":[],"previews":[],"activity":{"numCommits":"18",
+    "numContributors":"1",
+    "lastCommitDate":"2016-01-27 08:49:31"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-12-08 20:52:03",
+    "requires":{"piwik":">=2.15.0",
+      "php":">=5.4.0"},"readme":"",
+    "numDownloads":428,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/commits\/v1.0.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/SnoopyBehavioralScoring\/download\/0.1.0"},{"name":"0.1.2",
+    "release":"2016-01-27 08:50:04",
+    "requires":{"piwik":">=2.15.0",
+      "php":">=5.4.0"},"readme":"# Piwik Snoopy Plugin\n\n## Description\n\nSnoopy is a User behaviour scoring plugin for piwik. It allows you to score your visitors depending on goals reached, pages visited, email campaigns opened and other factors. In other words this plugin enables you to score your visitors based on actions they do on your website. It has a robust scoring methodology for heating and cooling visitor score.\n\nSnoopy also provides some basic API functions to integrate it with third party applications souch as your CRM or lead management system. More information about the API can be found on [github wiki](https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/wiki\/API).\n\n## Installation\n### Automatic\nInstall it via Piwik Marketplace and [configure](#configuration) plugin.\n### Manual installation\n1. Download whole repository as ZIP.\n2. Go to your piwik Administration => Marketplace and click on \"upload a plugin in .zip format.\"\n3. After plugin is upladed press \"Activate plugin\"\n\nIf you did everything correct and you have sufficient permissions on folder plugins, Snoopy should be successfully installed.\n\nNow all you need to do is to set your configuration and create a cron that calculates visitors scores.\n\n## Configuration\n\n### Required\nBefore Snoopy starts scoring visitors you first have to tweak some configuration to match your needs.\n\n1. Matching site:\nYou have to select for which site your Snoopy scores visitors. For now only one website property tracking is available.\n\n2. Matching goal:\nSnoopy will start scoring only when specific goal is achieved. You can choose one or more goals as entry point to start .ing.\n\n3. Cooling factor:\nCooling factor is number that tells you how fast visitors will loose their score.\n\nHere is example simulation for factor 1.1\n\n|Number of inactive days|Current penalty|Penalty since beginning|Visitor scores\t|\n|-----------------------|---------------|-----------------------|---------------|\n|\t\t\t\t\t\t|\t\t\t\t|\t\t\t\t\t\t|\t100\t\t  \t|\n|\t1\t\t\t\t\t|\t1\t\t\t|\t1\t\t\t\t\t|\t99\t\t  \t|\n|\t2\t\t\t\t\t|\t1.1\t\t\t|\t2.1\t\t\t\t\t|\t97.9\t\t|\n|\t3\t\t\t\t\t|\t1.21\t\t|\t3.31\t\t\t\t|\t96.69\t\t|\n|\t4\t\t\t\t\t|\t1.331\t\t|\t4.641\t\t\t\t|\t95.359\t\t|\n|\t5\t\t\t\t\t|\t1.4641\t\t|\t6.1051\t\t\t\t|\t93.8949\t\t|\n|\t6\t\t\t\t\t|\t1.61051\t\t|\t7.71561\t\t\t\t|\t92.28439\t|\n|\t7\t\t\t\t\t|\t1.771561\t|\t9.487171\t\t\t|\t90.512829\t|\n|\t8\t\t\t\t\t|\t1.9487171\t|\t11.4358881\t\t\t|\t88.5641119\t|\n|\t9\t\t\t\t\t|\t2.14358881\t|\t13.57947691\t\t\t|\t86.42052309\t|\n|\t10\t\t\t\t\t|\t2.357947691\t|\t15.9374246\t\t\t|\t84.0625754\t|\n\nFrom the table you can see that on first inactive day you loose 1 point, \non the  second inactive day you loose 1*factor point\non third inactive day you loose second_day*factor point etc.\n\nThose configuration parameters are mandatory for Snoopy to score propperly. \n\nWhen you are finished with configuration you just need to put this comand as your cronjob and Snoopy will start to calculate your score (This will recalcualte score hourly):\n\n**0 * * * * \/piwik_root\/console snoopybehavioralscoring:recalculate-score**\n\nAdditionally you can pipe log to file:\n\n**0 * * * * \/piwik_root\/console snoopybehavioralscoring:recalculate-score >> \/var\/log\/snoopy.log**\n\n### Optional\n- Enable console full debug\n\nWhen running recalculate-score some additional info is printed, that could be usefull when debuging why score is not calculated properly.\n\n- Campaign entry bonus\n\nBonus score that is added when visitor visits your webpage trough campaign (Google Analytics campaign parameters are set)\n- Special URL's\n\nURL;SCORE pairs that make some of your URL's worth more score points. \n\nFor example:\n\nhttp:\/\/example.com\/contact;3\n\nHere contact page is worth 3 points instead just one.\n## FAQ\n\n__When does my visitors gets scored.__\n\nWhen they reach specified goal in plugin settings.\n\n## Changelog\n0.1.2 - Bugfix for settings + Fixed fatal error on first calculation + Fixed permissions problems\n0.1.1 - Readme changes + minor fixes\n0.1.0 - Initial version\n\n## Support\n\nPlease direct any feedback to info@spletnik.si\n",
+    "numDownloads":783,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Snoopy is a User behaviour scoring plugin for piwik. It allows you to score your visitors depending on goals reached, pages visited, email campaigns opened and other factors. In other words this plugin enables you to score your visitors based on actions they do on your website. It has a robust scoring methodology for heating and cooling visitor score.<\/p>\n\n<p>Snoopy also provides some basic API functions to integrate it with third party applications souch as your CRM or lead management system. More information about the API can be found on <a href=\"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/wiki\/API\">github wiki<\/a>.<\/p>\n\n",
+      "faq":"<p><strong>When does my visitors gets scored.<\/strong><\/p>\n\n<p>When they reach specified goal in plugin settings.<\/p>",
+      "documentation":"",
+      "changelog":"<p>0.1.2 - Bugfix for settings + Fixed fatal error on first calculation + Fixed permissions problems\n0.1.1 - Readme changes + minor fixes\n0.1.0 - Initial version<\/p>"},"download":"\/api\/2.0\/plugins\/SnoopyBehavioralScoring\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TasksTimetable",
+  "displayName":"Tasks Timetable",
+  "owner":"piwik",
+  "description":"Plugin to list all scheduled tasks: Name of the tasks and next execution time displayed in a table.",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 01:09:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":["monitoring",
+    "tasks",
+    "scheduled",
+    "timetable"],"basePrice":0,"authors":[{"name":"Megan Liang",
+    "email":null,"homepage":null},{"name":"Jay Deshpande",
+    "email":null,"homepage":null},{"name":"Piwik",
+    "email":"test1@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable",
+  "lastUpdated":"2014-12-23 01:14:35",
+  "latestVersion":"0.1.3",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/TasksTimetable\/images\/Timetable.png"],"previews":[],"activity":{"numCommits":"64",
+    "numContributors":"6",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-12-23 01:09:03",
+    "requires":{"piwik":">=2.0.4-b1"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPL v3",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-12-23 01:09:21",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPL v3",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-12-23 01:13:01",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPL v3",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2014-12-23 01:14:35",
+    "requires":{"piwik":">=2.0.4-b5"},"readme":"# Piwik TasksTimetable Plugin\n\n## Description\n\nPlugin to list all scheduled tasks: Name of the tasks and next execution time displayed in a table. \n\n## FAQ\n\n__Where can I find the timetable?__\n\nIt is located as a menu item \"Scheduled Tasks\" under diagnostics on the settings page.\n\n## Changelog\n\n* 0.1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.3",
+    "readmeHtml":{"description":"\n\n<p>Plugin to list all scheduled tasks: Name of the tasks and next execution time displayed in a table.<\/p>\n\n",
+      "faq":"<p><strong>Where can I find the timetable?<\/strong><\/p>\n\n<p>It is located as a menu item \"Scheduled Tasks\" under diagnostics on the settings page.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TopPagesByActions",
+  "displayName":"Top Pages By Actions",
+  "owner":"chanzler",
+  "description":"Live widget that displays the top pages by actions in a 20 minute timespan. Auto-refresh interval can be configured.",
+  "homepage":"http:\/\/github.com\/chanzler\/piwik-top-pages-by-actions",
+  "createdDateTime":"2014-11-03 15:20:05",
+  "donate":{"paypal":"paypal@familiekanzler.de",
+    "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions",
+  "lastUpdated":"2014-11-11 10:32:03",
+  "latestVersion":"0.1.3",
+  "numDownloads":4124,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2014-11-11 10:30:36"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+    "release":"2014-11-03 15:20:05",
+    "requires":{"piwik":">=2.0.0"},"readme":"",
+    "numDownloads":112,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TopPagesByActions\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2014-11-08 20:26:03",
+    "requires":{"piwik":">=2.0.0"},"readme":"",
+    "numDownloads":60,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TopPagesByActions\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2014-11-11 10:32:03",
+    "requires":{"piwik":">=2.0.0"},"readme":"# Piwik TopPagesByActions Plugin\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard.\n\nThe widget will show the top performing pages of a site that auto-refreshes every x seconds. It shows the number of actions and the title of the page. It is auto-sorting the entries.\n\n**This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 10 million visits per day.**\n\n(Tested with piwik 2.8.3, but supposed to run with older versions)\n\n## Installation\n\nInstall it via Piwik Marketplace OR install manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n   ```\n   cd plugins\/\n   git clone https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions.git TopPagesByActions\n   ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You will now find the widget under the Live! section.\n\n## FAQ\n\n###Features\nHere is a list of features that are included in this project:\n\n* Live widget (\"Bestperforming pages\") with key performance indices\n\n###Configuration\n*Refresh interval*: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.\n\n*Number of entries*: Defines the number of entries to show in the widget.\n\n## Changelog\n\n### 0.1.3 Bugfix Release\n* fixed english translation of table headers\n\n### 0.1.2 Bugfix Release\n* removed javascript console log\n* fixed bug with timezones that match \/^UTC[+-]*\/\n\n### 0.1.1 Bugfix Release\n* fixed css bug in internet explorer\n\n### 0.1.0 First Beta\n* initial release\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Please direct any feedback to [frank@intersolve.de](mailto:frank@intersolve.de)\n\n## Contribute\n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+    "numDownloads":3952,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard.<\/p>\n\n<p>The widget will show the top performing pages of a site that auto-refreshes every x seconds. It shows the number of actions and the title of the page. It is auto-sorting the entries.<\/p>\n\n<p><strong>This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 10 million visits per day.<\/strong><\/p>\n\n<p>(Tested with piwik 2.8.3, but supposed to run with older versions)<\/p>\n\n",
+      "faq":"<h3>Features<\/h3>\n\n<p>Here is a list of features that are included in this project:<\/p>\n\n<ul><li>Live widget (\"Bestperforming pages\") with key performance indices<\/li>\n<\/ul><h3>Configuration<\/h3>\n\n<p><em>Refresh interval<\/em>: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.<\/p>\n\n<p><em>Number of entries<\/em>: Defines the number of entries to show in the widget.<\/p>",
+      "documentation":"",
+      "changelog":"<h3>0.1.3 Bugfix Release<\/h3>\n\n<ul><li>fixed english translation of table headers<\/li>\n<\/ul><h3>0.1.2 Bugfix Release<\/h3>\n\n<ul><li>removed javascript console log<\/li>\n<li>fixed bug with timezones that match \/^UTC[+-]*\/<\/li>\n<\/ul><h3>0.1.1 Bugfix Release<\/h3>\n\n<ul><li>fixed css bug in internet explorer<\/li>\n<\/ul><h3>0.1.0 First Beta<\/h3>\n\n<ul><li>initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/TopPagesByActions\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TrackingCodeCustomizer",
+  "displayName":"Tracking Code Customizer",
+  "owner":"jbrule",
+  "description":"Allows Piwik admininstrators to customize the tracking code that is autogenerated for users. This is useful for directing requests to the correct serv",
+  "homepage":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer",
+  "createdDateTime":"2015-04-20 16:28:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer",
+  "lastUpdated":"2015-11-20 19:16:09",
+  "latestVersion":"0.1.2",
+  "numDownloads":2647,"screenshots":[],"previews":[],"activity":{"numCommits":"5",
+    "numContributors":"1",
+    "lastCommitDate":"2016-04-26 07:22:01"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2015-04-20 16:28:03",
+    "requires":{"piwik":">=v2.9.0"},"readme":"",
+    "numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TrackingCodeCustomizer\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2015-04-20 16:30:04",
+    "requires":{"piwik":">=v2.9.0"},"readme":"",
+    "numDownloads":1298,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TrackingCodeCustomizer\/download\/0.1.1"},{"name":"0.1.2",
+    "release":"2015-11-20 19:16:09",
+    "requires":{"piwik":">=v2.12.0"},"readme":"# Piwik TrackingCodeCustomizer Plugin\nTracking Code Customizer plugin for the Piwik Web Analytics software package\n\n##Description\nAllows Piwik admininstrators to customize the tracking code that is autogenerated for users. This is useful for directing requests to the correct servers in a multi-server setup, include additional parameters in default tracking, or to perform conditional checks before initiating a tracking call. \n\n##Instructions\nThe easiest way to install is to find the plugin in the [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\n##Usage\n\nSet additional default OPTIONS for tracking. The follwing is entered into the \"options\" field.\n\n```javascript\nif (typeof(hash) !== 'undefined'){_paq.push(['setCustomVariable','1','U',hash,'visit']); _paq.push(['setUserId',hash]);};\n```\nResultant tracking code\n```javascript\n<!-- Piwik -->\n<script type=\"text\/javascript\">\n  var _paq = _paq || [];\n  if (typeof(hash) !== 'undefined'){_paq.push(['setCustomVariable','1','U',hash,'visit']); _paq.push(['setUserId',hash]);};\n  _paq.push(['trackPageView']);\n  _paq.push(['enableLinkTracking']);\n  var u=\"\/\/webanalytics-tracker.XXXX.XXX\/\";\n_paq.push(['setTrackerUrl', u+'piwik.php']);\n    _paq.push(['setSiteId', 1]);\n    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n    g.type='text\/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);\n  })();\n<\/script>\n<noscript><p><img src=\"\/\/webanalytics-tracker.XXXX.XXX\/piwik.php?idsite=1\" style=\"border:0;\" alt=\"\" \/><\/p><\/noscript>\n<!-- End Piwik Code -->\n```\n\n##Changelog\n0.1.2 Updated for compatibility with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Version bump to activation Marketplace hook\n0.1.0 Initial Release\n\n##License\nGPL v3 \/ fair use\n\n## Support\nPlease [report any issues](https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/issues). Pull requests welcome.\n",
+    "numDownloads":1348,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/commits\/v1.1",
+    "readmeHtml":{"description":"\n\n<p>Allows Piwik admininstrators to customize the tracking code that is autogenerated for users. This is useful for directing requests to the correct servers in a multi-server setup, include additional parameters in default tracking, or to perform conditional checks before initiating a tracking call.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>0.1.2 Updated for compatibility with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Version bump to activation Marketplace hook\n0.1.0 Initial Release<\/p>"},"download":"\/api\/2.0\/plugins\/TrackingCodeCustomizer\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TreemapVisualization",
+  "displayName":"Treemap Visualization",
+  "owner":"piwik",
+  "description":"This Piwik plugin adds a new report visualization: the treemap. With this plugin you can view your data as a graph that displays rows with rectangles ",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 00:37:31",
+  "donate":{},"support":[],"isTheme":false,"keywords":["treemap",
+    "graph",
+    "visualization",
+    "infovis",
+    "jit"],"basePrice":0,"authors":[{"name":"Piwik",
+    "email":"test1@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization",
+  "lastUpdated":"2014-12-23 00:38:05",
+  "latestVersion":"1.0.1",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/Treemap.png",
+    "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/screen-resolution-treemap.png",
+    "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/social-network-treemap.png"],"previews":[],"activity":{"numCommits":"106",
+    "numContributors":"6",
+    "lastCommitDate":"1970-01-01 00:33:35"},"featured":true,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+    "release":"2014-12-23 00:37:32",
+    "requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0"},{"name":"1.0.1",
+    "release":"2014-12-23 00:38:05",
+    "requires":{"piwik":">=2.0.0",
+      "php":">=5.3.0"},"readme":"# Description\n\nTreemapVisualization is a Piwik plugin that provides the treemap report visualization. \n\n## Features\n\nThe treemap visualization will show rows of data tables as squares whose size correspond to the metric of the row. For example, if you're looking at visits, the row with the most visits will take up the most space. Just like the other graph visualizations, you can use it to easily see which rows have the largest values. The treemap differs from other graphs though, in that it shows much more rows.\n\nThe treemap visualization will also show you one thing that no other visualization included with Piwik does: the evolution of each row. You can hover over a treemap square to see how much the row changed from the last period. Each treemap square is also colored based on the evolution. A red square means the change is negative; a green square means the change is positive. The more green the bigger the change; the more red the smaller the change.\n\n## Limitations\n\nCurrently there is one known limitation:\n\n* Treemaps will not work with flattened tables. Currently, if a table is flattened, the treemap icon will be removed.\n",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":"http:\/\/plugins.piwik.org\/TreemapVisualization\/1.0.1\/license"},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"UptimeRobotMonitor",
+  "displayName":"Uptime Robot Monitor",
+  "owner":"job963",
+  "description":"Plugin for displaying UptimeRobot data in Piwik",
+  "homepage":"https:\/\/github.com\/job963\/UptimeRobot-Monitor",
+  "createdDateTime":"2014-10-26 13:14:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor",
+  "lastUpdated":"2014-12-04 20:20:04",
+  "latestVersion":"0.2",
+  "numDownloads":4572,"screenshots":[],"previews":[],"activity":{"numCommits":"9",
+    "numContributors":"2",
+    "lastCommitDate":"2016-02-12 19:01:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-10-26 13:14:03",
+    "requires":{},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.1.0"},{"name":"0.1.1",
+    "release":"2014-10-26 13:24:04",
+    "requires":{},"readme":"",
+    "numDownloads":440,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.1.1"},{"name":"0.1.3",
+    "release":"2014-11-26 06:38:03",
+    "requires":{},"readme":"",
+    "numDownloads":152,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.1.3"},{"name":"0.2",
+    "release":"2014-12-04 20:20:04",
+    "requires":{},"readme":"# UptimeRobot Monitor Plugin\n\n## Description\n\nThis plugin shows data, collected by UptimeRobot, in Piwik. This helps you to see all information about your website in one system without having the need to login into several systems.\n\nThe access to UptimeRobot will be managed by an individual monitor API key, which you have to create in UptimeRobot (see FAQ).\n\n\n## Screenshots\n**LogList Widget**  \n![](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/raw\/master\/screenshots\/widgetLogList.png)\n\n**TimeBar Widget**  \n![](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/raw\/master\/screenshots\/widgetTimeBar.png)\n\n**Plugin Settings**  \n![](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/raw\/master\/screenshots\/SettingsDE.png)\n\n\n## Installation\n\nInstall it via [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\nOR \n\nInstall manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n   ```\n   cd plugins\/\n   git clone https:\/\/github.com\/job963\/UptimeRobot-Monitor.git UptimeRobotMonitor\n   ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. Goto Settings -> Plugin Settings an setup the values for the widget.\n\n4. You will now find the widget under the UptimeRobotMonitor -> UptimeRobot - Latest Events.\n\n## Changelog\n\n* **0.1.0 Initial release**\n  * Widget for latest events\n  * Setting for monitor API key\n\n* **0.1.1 Small corrections**\n  * Small correction in README\n\n* **0.1.2 New Language added**\n  * Now usable in hungarian language (thanks to sagikazarmark)\n\n* **0.1.3 Readme updated**\n  * New version description added\n\n* **0.2 Timebar widget added**\n  * New widget for displaying the log as a time bar\n  * Support of multiple servers\n\n## FAQ\n\n**Where do I get the API key?**  \n\nGo in UptimeRoboto to \"My Settings\" and click in the paragraph \"Monitor-specific API Keys\" on \"Show\/hide it\". Search as next for the name of the desired website. Now you will see the API key for monitoring this website.  \nThis API key you have to enter in the plugin settings of _UptimeRobotMonitor_.\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease report any issues directly in [Github](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/issues). \n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+    "numDownloads":3980,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>This plugin shows data, collected by UptimeRobot, in Piwik. This helps you to see all information about your website in one system without having the need to login into several systems.<\/p>\n\n<p>The access to UptimeRobot will be managed by an individual monitor API key, which you have to create in UptimeRobot (see FAQ).<\/p>\n\n",
+      "faq":"<p><strong>Where do I get the API key?<\/strong><\/p>\n\n<p>Go in UptimeRoboto to \"My Settings\" and click in the paragraph \"Monitor-specific API Keys\" on \"Show\/hide it\". Search as next for the name of the desired website. Now you will see the API key for monitoring this website.\nThis API key you have to enter in the plugin settings of <em>UptimeRobotMonitor<\/em>.<\/p>",
+      "documentation":"",
+      "changelog":"<ul><li><p><strong>0.1.0 Initial release<\/strong><\/p>\n\n<ul><li>Widget for latest events<\/li>\n<li>Setting for monitor API key<\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.1 Small corrections<\/strong><\/p>\n\n<ul><li>Small correction in README<\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.2 New Language added<\/strong><\/p>\n\n<ul><li>Now usable in hungarian language (thanks to sagikazarmark)<\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.3 Readme updated<\/strong><\/p>\n\n<ul><li>New version description added<\/li>\n<\/ul><\/li>\n<li><p><strong>0.2 Timebar widget added<\/strong><\/p>\n\n<ul><li>New widget for displaying the log as a time bar<\/li>\n<li>Support of multiple servers<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"VisitorAvatar",
+  "displayName":"Visitor Avatar",
+  "owner":"surenjie",
+  "description":"Custom display visitors avatar(URL) and description(Title & Alt)",
+  "homepage":"http:\/\/plugins.piwik.org\/VisitorAvatar",
+  "createdDateTime":"2014-11-06 11:42:04",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar",
+  "lastUpdated":"2014-11-18 06:08:04",
+  "latestVersion":"0.2.2",
+  "numDownloads":3871,"screenshots":[],"previews":[],"activity":{"numCommits":"14",
+    "numContributors":"1",
+    "lastCommitDate":"2014-11-18 06:08:02"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-11-06 11:42:04",
+    "requires":{"piwik":">=2.8.3"},"readme":"",
+    "numDownloads":110,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.1.0"},{"name":"0.2.0",
+    "release":"2014-11-13 08:36:03",
+    "requires":{"piwik":">=2.8.3"},"readme":"",
+    "numDownloads":0,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.2.0"},{"name":"0.2.1",
+    "release":"2014-11-13 09:34:03",
+    "requires":{"piwik":">=2.8.3"},"readme":"",
+    "numDownloads":120,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.2.1"},{"name":"0.2.2",
+    "release":"2014-11-18 06:08:04",
+    "requires":{"piwik":">=2.5.0"},"readme":"# Piwik VisitorAvatar Plugin\n\nCustom display visitors avatar(URL) and description(Title & Alt)\n\nhttp:\/\/plugins.piwik.org\/VisitorAvatar\n\n## Description\n\n  * Step1 Tracking Code\n\n    Reference:\n      \n      http:\/\/piwik.org\/docs\/custom-variables\/#track-a-custom-variable-in-javascript\n    \n      http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables\n\n    Example:\n\n    ```JavaScript\n    \/\/ you can set up to 5 custom variables for each visitor\n    _paq.push([\n        \"setCustomVariable\", \n        1, \n        \"RTX\", \n        document.cookie.match(new RegExp(\"(^| )_login_name=([^;]*)(;|$)\"))[2], \n        \"visit\"\n    ]);\n    ```\n\n  * Step2 Plugin Settings\n\n    1. Name of the custom variable : \n      \n      \"RTX\" (Previous set of custom variable names, no default)\n\n    2. Visitor avatar url rules : \n      \n      \"\/\/rtx.oa.com\/avatars\/%s\/profile.jpg\" (The default is \"plugins\/VisitorAvatar\/images\/default_avatar.gif\")\n\n    3. Visitor description text rules : \n      \n      \"my rtx is %s\" (The default is \"%s\")\n\n\n  * Step3 Visitor Profile\n\n    _View Visitors custom avatar and description_\n\n## Tutorial\n\n![Step1 Tracking Code](https:\/\/raw.githubusercontent.com\/surenjie\/VisitorAvatar\/master\/screenshots\/Step1_Tracking_Code.png \"Step1 Tracking Code\")\n\n![Step2 Plugin Settings](https:\/\/raw.githubusercontent.com\/surenjie\/VisitorAvatar\/master\/screenshots\/Step2_Plugin_Settings.png \"Step2 Plugin Settings\")\n\n![Step3 Visitor Profile](https:\/\/raw.githubusercontent.com\/surenjie\/VisitorAvatar\/master\/screenshots\/Step3_Visitor_Profile.png \"Step3 Visitor Profile\")\n\n## Support\n\nPlease direct any feedback to i@renjie.me\n\nIf you experience any issues feel free to file an issue at https:\/\/github.com\/surenjie\/VisitorAvatar\/issues",
+    "numDownloads":3641,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<ul><li><p>Step1 Tracking Code<\/p>\n\n<p>Reference:<\/p>\n\n<p>http:\/\/piwik.org\/docs\/custom-variables\/#track-a-custom-variable-in-javascript<\/p>\n\n<p>http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables<\/p>\n\n<p>Example:<\/p>\n\n<pre><code>\/\/ you can set up to 5 custom variables for each visitor\n_paq.push([\n    \"setCustomVariable\", \n    1, \n    \"RTX\", \n    document.cookie.match(new RegExp(\"(^| )_login_name=([^;]*)(;|$)\"))[2], \n    \"visit\"\n]);\n<\/code><\/pre><\/li>\n<li><p>Step2 Plugin Settings<\/p>\n\n<ol><li><p>Name of the custom variable :<\/p>\n\n<p>\"RTX\" (Previous set of custom variable names, no default)<\/p><\/li>\n<li><p>Visitor avatar url rules :<\/p>\n\n<p>\"\/\/rtx.oa.com\/avatars\/%s\/profile.jpg\" (The default is \"plugins\/VisitorAvatar\/images\/default_avatar.gif\")<\/p><\/li>\n<li><p>Visitor description text rules :<\/p>\n\n<p>\"my rtx is %s\" (The default is \"%s\")<\/p><\/li>\n<\/ol><\/li>\n<li><p>Step3 Visitor Profile<\/p>\n\n<p><em>View Visitors custom avatar and description<\/em><\/p><\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.2.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"WebsiteGroups",
+  "displayName":"Website Groups",
+  "owner":"PiwikPRO",
+  "description":"Assign websites to groups in your 'All Websites' dashboard. Useful to get a view by client or category.",
+  "homepage":"http:\/\/piwik.pro",
+  "createdDateTime":"2014-11-07 03:14:03",
+  "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups",
+  "lastUpdated":"2016-03-09 18:04:03",
+  "latestVersion":"0.3.0",
+  "numDownloads":5489,"screenshots":[],"previews":[],"activity":{"numCommits":"70",
+    "numContributors":"6",
+    "lastCommitDate":"2016-04-15 22:56:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.2",
+    "release":"2014-11-07 03:14:03",
+    "requires":{"piwik":">=2.1.1-b1"},"readme":"",
+    "numDownloads":3,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.1.2"},{"name":"0.1.3",
+    "release":"2014-11-07 03:18:03",
+    "requires":{"piwik":">=2.1.1-b1"},"readme":"",
+    "numDownloads":2156,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2015-07-28 14:50:03",
+    "requires":{"piwik":">=2.1.1-b1"},"readme":"",
+    "numDownloads":992,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.1.4"},{"name":"0.2.0",
+    "release":"2015-11-11 14:48:03",
+    "requires":{"piwik":">=2.15.0"},"readme":"",
+    "numDownloads":1320,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/0.1.3",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.2.0"},{"name":"0.3.0",
+    "release":"2016-03-09 18:04:03",
+    "requires":{"piwik":">=2.16.0"},"readme":"# Piwik WebsiteGroups Plugin\n\nMaster [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups)\nDevelop [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups)\n\n## Description\n\nFeatures of this plugin:\n\n * Users can assign websites to groups in the UI\n * 'All Websites' dashboard shows websites grouped by Group, and for each group it shows the sum of visits\/actions\/revenue for websites within this group\n * In the 'All Websites' dashboard, the Super User can see an aggregated number of visits\/pages for the group. Websites appear below their group row\n * A user can set the groups within the 'All Websites' dashboard\n * The website selector shows the website groups prefixed with the group name\n * The website selector allows you to search for groups\n\n## Changelog\n\n__v.0.3.0__\n- PPCDEV-2609 Compatibility with Piwik 2.16.0\n\n__v.0.2.0__\n- compatibility with Piwik 2.15.0\n\n## Support\n\nPlease direct any feedback to [contact@piwik.pro](mailto:contact@piwik.pro)\n\nIf you experience any issues feel free to file an issue at [https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/issues](https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/issues)\n",
+    "numDownloads":1018,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Features of this plugin:<\/p>\n\n<ul><li>Users can assign websites to groups in the UI<\/li>\n<li>'All Websites' dashboard shows websites grouped by Group, and for each group it shows the sum of visits\/actions\/revenue for websites within this group<\/li>\n<li>In the 'All Websites' dashboard, the Super User can see an aggregated number of visits\/pages for the group. Websites appear below their group row<\/li>\n<li>A user can set the groups within the 'All Websites' dashboard<\/li>\n<li>The website selector shows the website groups prefixed with the group name<\/li>\n<li>The website selector allows you to search for groups<\/li>\n<\/ul>",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p><strong>v.0.3.0<\/strong>\n- PPCDEV-2609 Compatibility with Piwik 2.16.0<\/p>\n\n<p><strong>v.0.2.0<\/strong>\n- compatibility with Piwik 2.15.0<\/p>"},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.3.0"}],"isDownloadable":true,"consumer":{"license":null}}]}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json b/plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json
new file mode 100644
index 0000000000000000000000000000000000000000..d63cce22ec9824693de52d07def5d673c3d70dee
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json
@@ -0,0 +1,57 @@
+{"name":"Barometer",
+  "displayName":"Barometer",
+  "owner":"halfdan",
+  "description":"Live Plugin that shows the current number of visitors on the page.",
+  "homepage":"http:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+  "createdDateTime":"2014-12-23 00:38:20",
+  "donate":{"flattr":"https:\/\/flattr.com\/profile\/test1",
+    "bitcoin":null},"support":[{"name":"Documentation",
+  "key":"docs",
+  "value":"https:\/\/barometer.org\/docs\/",
+  "type":"url"},{"name":"Wiki",
+  "key":"wiki",
+  "value":"https:\/\/github.com\/barometer\/piwik\/wiki",
+  "type":"url"},{"name":"Forum",
+  "key":"forum",
+  "value":"https:\/\/baromter.forum.org",
+  "type":"url"},{"name":"Email",
+  "key":"email",
+  "value":"barometer@example.com",
+  "type":"email"},{"name":"IRC",
+  "key":"irc",
+  "value":"irc:\/\/freenode\/baromter",
+  "type":"text"},{"name":"Issues \/ Bugs",
+  "key":"issues",
+  "value":"https:\/\/github.com\/barometer\/issues",
+  "type":"url"},{"name":"Source",
+  "key":"source",
+  "value":"https:\/\/github.com\/barometer\/piwik\/",
+  "type":"url"},{"name":"RSS",
+  "key":"rss",
+  "value":"https:\/\/barometer.org\/feed\/",
+  "type":"url"}],"isTheme":false,"keywords":["barometer",
+  "live"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+  "email":"test8@example.com",
+  "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+  "lastUpdated":"2014-12-23 00:41:21",
+  "latestVersion":"0.5.0",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/Barometer\/images\/0.5.0\/piwik-barometer-01.png",
+  "https:\/\/plugins.piwik.org\/Barometer\/images\/0.5.0\/piwik-barometer-02.png"],"previews":[{"type":"demo",
+  "provider":"link",
+  "url":"https:\/\/demo.piwik.org"}],"activity":{"numCommits":"31",
+  "numContributors":"3",
+  "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+  "release":"2014-12-23 00:38:20",
+  "requires":{"piwik":">=1.10.0"},"numDownloads":0,"license":{"name":"GPLv3+",
+    "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.1.1",
+  "readmeHtml":{"description":"",
+    "faq":"",
+    "changelog":"",
+    "documentation":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.1.1"},{"name":"0.5.0",
+  "release":"2014-12-23 00:41:21",
+  "requires":{},"numDownloads":0,"license":{"name":"GPLv3+",
+    "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.5.0",
+  "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a two new widgets that you can add to your dashboard.<\/p>\n\n<p>The widgets will show a Visitor Barometer and a Visit Time Barometer that auto-refresh every 5 seconds. It shows the number of visitors or visit time in a N minute period compared to the maximum number of visitors\/average visit time in any N minute period of the last 30 days.<\/p>\n\n<p>The idea for this plugin came from <a href=\"http:\/\/github.com\/muesli\">@muesli<\/a> who suggested it on #piwik in IRC.<\/p>\n\n",
+    "faq":"",
+    "documentation":"",
+    "changelog":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.5.0"}],"isDownloadable":true,"consumer":{"license":null}}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json
new file mode 100644
index 0000000000000000000000000000000000000000..df7f985b9c146aea6c1767891ae62caeea9f21b2
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json
@@ -0,0 +1 @@
+{"error":"Requested plugin does not exist."}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json
new file mode 100644
index 0000000000000000000000000000000000000000..0415fa3320ce1bd04fbb84d0ff1b0a57244e01e4
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json
@@ -0,0 +1,90 @@
+{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+  "key":"docs",
+  "value":"https:\/\/paidplugin1.org\/docs\/",
+  "type":"url"},{"name":"Wiki",
+  "key":"wiki",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+  "type":"url"},{"name":"Forum",
+  "key":"forum",
+  "value":"https:\/\/forum.paidplugin1.org",
+  "type":"url"},{"name":"Email",
+  "key":"email",
+  "value":"paidplugin1@example.com",
+  "type":"email"},{"name":"IRC",
+  "key":"irc",
+  "value":"irc:\/\/freenode\/paidplugin1",
+  "type":"text"},{"name":"Issues \/ Bugs",
+  "key":"issues",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+  "type":"url"},{"name":"Source",
+  "key":"source",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+  "type":"url"},{"name":"RSS",
+  "key":"rss",
+  "value":"https:\/\/paidplugin1.org\/feed\/",
+  "type":"url"}],"isTheme":false,"keywords":["cache",
+  "delete",
+  "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+  "email":"test3@example.com",
+  "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":"2014-12-23 01:18:20",
+  "latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+  "provider":"link",
+  "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+  "variations":[{"price":"150",
+    "prettyPrice":"150\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"Up to 4 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+    "prettyPrice":"$175",
+    "currency":"USD",
+    "period":"year",
+    "name":"Up to 4 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+    "prettyPrice":"300\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"5 to 15 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+    "prettyPrice":"$345",
+    "currency":"USD",
+    "period":"year",
+    "name":"5 to 15 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+    "prettyPrice":"600\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"Unlimited users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+    "prettyPrice":"$690",
+    "currency":"USD",
+    "period":"year",
+    "name":"Unlimited users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+    "height":200}},"versions":[{"name":"1.1",
+  "release":"2014-12-23 01:18:20",
+  "requires":{"piwik":">=2.0.0",
+    "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+    "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+    "faq":"",
+    "documentation":"",
+    "changelog":"<p>~2014~<\/p>\n\n<p>2014-02-21 - Update some more code, added in notification area but it's not quite working yet (TODO - make it work)<\/p>\n\n<p>2014-02-21 - Rebranded to cacheBuster and set version to 1.0, updated code to use a better check for directory seperator<\/p>\n\n<p>2014-02-20 - v2.0\n    - Updated plugin to work with Piwik 2.0.3<\/p>\n\n<p>~2013~\n    Inital creation of plugin at http:\/\/www.spherexx.com under the name ClearCache<\/p>"},"download":"\/api\/2.0\/plugins\/PaidPlugin1\/download\/1.1"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-22 04:46:05",
+  "endDate":"2030-05-29 11:03:06",
+  "nextPaymentDate":"2030-05-29 11:03:06",
+  "status":"Active",
+  "productType":"Unlimited users",
+  "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000000000000000000000000000000000..79ba7be9072d1e4aaf0299a3d144b3417869bcd9
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
@@ -0,0 +1,90 @@
+{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+  "key":"docs",
+  "value":"https:\/\/paidplugin1.org\/docs\/",
+  "type":"url"},{"name":"Wiki",
+  "key":"wiki",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+  "type":"url"},{"name":"Forum",
+  "key":"forum",
+  "value":"https:\/\/forum.paidplugin1.org",
+  "type":"url"},{"name":"Email",
+  "key":"email",
+  "value":"paidplugin1@example.com",
+  "type":"email"},{"name":"IRC",
+  "key":"irc",
+  "value":"irc:\/\/freenode\/paidplugin1",
+  "type":"text"},{"name":"Issues \/ Bugs",
+  "key":"issues",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+  "type":"url"},{"name":"Source",
+  "key":"source",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+  "type":"url"},{"name":"RSS",
+  "key":"rss",
+  "value":"https:\/\/paidplugin1.org\/feed\/",
+  "type":"url"}],"isTheme":false,"keywords":["cache",
+  "delete",
+  "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+  "email":"test3@example.com",
+  "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+  "provider":"link",
+  "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+  "variations":[{"price":"150",
+    "prettyPrice":"150\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"Up to 4 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+    "prettyPrice":"$175",
+    "currency":"USD",
+    "period":"year",
+    "name":"Up to 4 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD",
+    "cheapest":true,"recommended":false},{"price":"300",
+    "prettyPrice":"300\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"5 to 15 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+    "prettyPrice":"$345",
+    "currency":"USD",
+    "period":"year",
+    "name":"5 to 15 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD",
+    "cheapest":false,"recommended":false},{"price":"600",
+    "prettyPrice":"600\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"Unlimited users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+    "prettyPrice":"$690",
+    "currency":"USD",
+    "period":"year",
+    "name":"Unlimited users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD",
+    "cheapest":false,"recommended":true}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+    "height":200}},"versions":[{"name":"1.1",
+  "release":null,"requires":{"piwik":">=2.0.0",
+    "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+    "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+    "faq":"",
+    "documentation":"",
+    "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-21 04:46:05",
+  "endDate":"2029-05-27 11:03:06",
+  "nextPaymentDate":null,"status":"Pending cancellation",
+  "productType":"Up to 4 users",
+  "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json
new file mode 100644
index 0000000000000000000000000000000000000000..80711e4ae53b27d339550f1c121a21c2baa09afb
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json
@@ -0,0 +1,83 @@
+{"name":"PaidPlugin1",
+  "displayName":"Paid Plugin 1",
+  "owner":"TestVendor",
+  "description":"Clears all temporary cache files",
+  "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+  "createdDateTime":"2014-12-23 01:18:01",
+  "donate":{},"support":[{"name":"Documentation",
+  "key":"docs",
+  "value":"https:\/\/paidplugin1.org\/docs\/",
+  "type":"url"},{"name":"Wiki",
+  "key":"wiki",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+  "type":"url"},{"name":"Forum",
+  "key":"forum",
+  "value":"https:\/\/forum.paidplugin1.org",
+  "type":"url"},{"name":"Email",
+  "key":"email",
+  "value":"paidplugin1@example.com",
+  "type":"email"},{"name":"IRC",
+  "key":"irc",
+  "value":"irc:\/\/freenode\/paidplugin1",
+  "type":"text"},{"name":"Issues \/ Bugs",
+  "key":"issues",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+  "type":"url"},{"name":"Source",
+  "key":"source",
+  "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+  "type":"url"},{"name":"RSS",
+  "key":"rss",
+  "value":"https:\/\/paidplugin1.org\/feed\/",
+  "type":"url"}],"isTheme":false,"keywords":["cache",
+  "delete",
+  "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+  "email":"test3@example.com",
+  "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+  "lastUpdated":null,"latestVersion":"1.1",
+  "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+  "provider":"link",
+  "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+  "variations":[{"price":"150",
+    "prettyPrice":"150\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"Up to 4 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+    "prettyPrice":"$175",
+    "currency":"USD",
+    "period":"year",
+    "name":"Up to 4 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+    "prettyPrice":"300\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"5 to 15 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+    "prettyPrice":"$345",
+    "currency":"USD",
+    "period":"year",
+    "name":"5 to 15 users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+    "prettyPrice":"600\u20ac",
+    "currency":"EUR",
+    "period":"year",
+    "name":"Unlimited users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+    "prettyPrice":"$690",
+    "currency":"USD",
+    "period":"year",
+    "name":"Unlimited users",
+    "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+    "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+    "height":200}},"versions":[{"name":"1.1",
+  "release":null,"requires":{"piwik":">=2.0.0",
+    "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+    "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+    "faq":"",
+    "documentation":"",
+    "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":null,"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json b/plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json
new file mode 100644
index 0000000000000000000000000000000000000000..b36f0e8bcd9cb0660e0582eeaaf98425fbbb6d68
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json
@@ -0,0 +1,36 @@
+{"name":"TreemapVisualization",
+  "displayName":"Treemap Visualization",
+  "owner":"piwik",
+  "description":"This Piwik plugin adds a new report visualization: the treemap. With this plugin you can view your data as a graph that displays rows with rectangles ",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 00:37:31",
+  "donate":{},"support":[],"isTheme":false,"keywords":["treemap",
+  "graph",
+  "visualization",
+  "infovis",
+  "jit"],"basePrice":0,"authors":[{"name":"Piwik",
+  "email":"test1@example.com",
+  "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization",
+  "lastUpdated":"2014-12-23 00:38:05",
+  "latestVersion":"1.0.1",
+  "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/1.0.1\/Treemap.png",
+  "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/1.0.1\/screen-resolution-treemap.png",
+  "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/1.0.1\/social-network-treemap.png"],"previews":[],"activity":{"numCommits":"106",
+  "numContributors":"6",
+  "lastCommitDate":"1970-01-01 00:33:35"},"featured":true,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+  "release":"2014-12-23 00:37:32",
+  "requires":{"piwik":">=2.0.0",
+    "php":">=5.3.0"},"numDownloads":0,"license":{"name":"GPLv3+",
+    "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0",
+  "readmeHtml":{"description":"",
+    "faq":"",
+    "changelog":"",
+    "documentation":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0"},{"name":"1.0.1",
+  "release":"2014-12-23 00:38:05",
+  "requires":{"piwik":">=2.0.0",
+    "php":">=5.3.0"},"numDownloads":0,"license":{"name":"GPLv3+",
+    "url":"http:\/\/plugins.piwik.org\/TreemapVisualization\/1.0.1\/license"},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0.1",
+  "readmeHtml":{"description":"",
+    "faq":"",
+    "documentation":"",
+    "changelog":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0.1"}],"isDownloadable":true,"consumer":{"license":null}}
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json b/plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json
new file mode 100644
index 0000000000000000000000000000000000000000..57214819eb95548b003fd988e2c8590c308738e7
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json
@@ -0,0 +1,17 @@
+[{"name":"AnonymousPiwikUsageMeasurement",
+  "version":"0.2.1",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1"},{"name":"CustomAlerts",
+  "version":"0.1.12",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/compare\/0.0.1...0.1.12"},{"name":"CustomDimensions",
+  "version":"0.1.4",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/compare\/0.1.11...0.1.4"},{"name":"LogViewer",
+  "version":"0.2.0",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/compare\/0.1.0...v0.1.1"},{"name":"QueuedTracking",
+  "version":"0.3.1",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/compare\/1.0.7...v0.1.1"},{"name":"SecurityInfo",
+  "version":"1.0.4",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo\/commits\/1.0.4"},{"name":"TasksTimetable",
+  "version":"0.1.3",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/compare\/0.1.0...0.1.3"},{"name":"TreemapVisualization",
+  "version":"1.0.1",
+  "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0.1"}]
\ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_themes.json b/plugins/Marketplace/tests/resources/v2.0_themes.json
new file mode 100644
index 0000000000000000000000000000000000000000..62fc282a342807efe6784f1139c311d8d3da7f07
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_themes.json
@@ -0,0 +1,182 @@
+{"plugins":[{"name":"AnotherBlackTheme",
+  "displayName":"Another Black Theme",
+  "owner":"tsteur",
+  "description":"A black theme based on PleineLune",
+  "homepage":"http:\/\/piwik.org",
+  "createdDateTime":"2014-12-23 00:39:16",
+  "donate":{},"support":[],"isTheme":true,"keywords":["live",
+    "tab"],"basePrice":0,"authors":[{"name":"The Piwik Team",
+    "email":"test1@example.com",
+    "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/tsteur\/piwik-anotherblack-theme",
+  "lastUpdated":"2014-12-23 00:39:16",
+  "latestVersion":"0.1.0",
+  "numDownloads":0,"screenshots":["https:\/\/themes.piwik.org\/AnotherBlackTheme\/images\/0.1.0\/Admin.png",
+    "https:\/\/themes.piwik.org\/AnotherBlackTheme\/images\/0.1.0\/All_Websites_Dashboard.png",
+    "https:\/\/themes.piwik.org\/AnotherBlackTheme\/images\/0.1.0\/Report.png"],"previews":[],"activity":{"numCommits":"3",
+    "numContributors":"1",
+    "lastCommitDate":"1970-01-01 00:33:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2014-12-23 00:39:16",
+    "requires":{},"numDownloads":0,"license":{"name":"GPLv3+",
+      "url":"http:\/\/themes.piwik.org\/AnotherBlackTheme\/0.1.0\/license"},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-anotherblack-theme\/commits\/0.1.0",
+    "readmeHtml":{"description":"\n\n<p>A beautiful dark theme.<\/p>\n\n",
+      "faq":"<p><strong>Does it contain black?<\/strong>\nYes, it does.<\/p>\n\n<p><strong>Does it contain blue?<\/strong>\nYes, quite a lot.<\/p>",
+      "documentation":"",
+      "changelog":"<p><strong>0.1.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/AnotherBlackTheme\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Darkness",
+  "displayName":"Darkness",
+  "owner":"TheCrowsJoker",
+  "description":"A dark theme for piwik",
+  "homepage":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme",
+  "createdDateTime":"2015-01-14 01:32:03",
+  "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme",
+  "lastUpdated":"2015-01-15 21:18:04",
+  "latestVersion":"0.1.4",
+  "numDownloads":3624,"screenshots":[],"previews":[],"activity":{"numCommits":"6",
+    "numContributors":"1",
+    "lastCommitDate":"2015-01-15 21:17:10"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.3",
+    "release":"2015-01-14 01:32:04",
+    "requires":{"piwik":">=2.11.0-b2"},"numDownloads":18,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme\/commits\/v0.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Darkness\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2015-01-15 21:18:04",
+    "requires":{"piwik":">=2.11.0-b2"},"numDownloads":3606,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme\/commits\/0.1.0",
+    "readmeHtml":{"description":"\n\n<p>This is a dark theme for piwik. It is great for viewing your piwik dashboard after the sun has gone down or just for lovers of darkness.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>1.0 Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/Darkness\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Proteus_Bold",
+  "displayName":"Proteus_ Bold",
+  "owner":"ldidsbury",
+  "description":"The Proteus_Bold theme uses bold font that is easy-to-read with colors like that of the sea.",
+  "homepage":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme",
+  "createdDateTime":"2015-02-20 22:02:03",
+  "donate":{"paypal":"lawrence@winchesterresearch.it",
+    "bitcoin":null},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme",
+  "lastUpdated":"2015-02-21 02:48:03",
+  "latestVersion":"0.1.4",
+  "numDownloads":2838,"screenshots":[],"previews":[],"activity":{"numCommits":"8",
+    "numContributors":"1",
+    "lastCommitDate":"2015-09-15 19:11:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.3",
+    "release":"2015-02-20 22:02:03",
+    "requires":{},"numDownloads":10,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Proteus_Bold\/download\/0.1.3"},{"name":"0.1.4",
+    "release":"2015-02-21 02:48:03",
+    "requires":{},"numDownloads":2828,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Bold and easy-to-read...the Proteus_Bold theme for Piwik Analytics. Proteus was an early Greek god of the sea, capable of changing his appearance.  The Proteus_Bold theme uses bold font that is easy-to-read with calming colors like that of the sea.<\/p>\n\n",
+      "faq":"<p>Q.  Want to design a theme for Piwik? \nA.  Go to https:\/\/developer.piwik.org\/guides\/theming to learn how.<\/p>",
+      "documentation":"",
+      "changelog":"<p>Version 0.1.2 \n-Basic theme adjustments, testing the process.<\/p>\n\n<p>Version 0.1.3 \n-Updated version number and Changelog<\/p>\n\n<p>Version 0.1.4 \n-Updated version number in json, \n-Updated Changelog, and \n-Edited description text length for the Piwik marketplace viewing<\/p>"},"download":"\/api\/2.0\/plugins\/Proteus_Bold\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Terrano",
+  "displayName":"Terrano",
+  "owner":"nstallinger",
+  "description":"A neutral and natural theme made during the Catalyst Project Week.",
+  "homepage":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano",
+  "createdDateTime":"2016-01-20 20:14:03",
+  "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano",
+  "lastUpdated":"2016-01-20 20:58:02",
+  "latestVersion":"1.4.0",
+  "numDownloads":1014,"screenshots":[],"previews":[],"activity":{"numCommits":"9",
+    "numContributors":"1",
+    "lastCommitDate":"2016-01-20 20:57:44"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2016-01-20 20:14:03",
+    "requires":{},"numDownloads":2,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Terrano\/download\/0.1.0"},{"name":"1.4.0",
+    "release":"2016-01-20 20:58:02",
+    "requires":{},"numDownloads":1012,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>A neutral and natural theme made during the Catalyst Project Week.<\/p>",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/Terrano\/download\/1.4.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CoffeeCup",
+  "displayName":"Coffee Cup",
+  "owner":"RobotHoboDanceParty",
+  "description":"A shoothing background for those who missed their first cup of the day.",
+  "homepage":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme",
+  "createdDateTime":"2016-01-20 20:18:03",
+  "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme",
+  "lastUpdated":"2016-01-20 20:34:02",
+  "latestVersion":"0.1.3",
+  "numDownloads":961,"screenshots":[],"previews":[],"activity":{"numCommits":"6",
+    "numContributors":"1",
+    "lastCommitDate":"2016-01-20 20:33:03"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2016-01-20 20:18:03",
+    "requires":{},"numDownloads":1,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme\/commits\/v0.1.2",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/CoffeeCup\/download\/0.1.0"},{"name":"0.1.3",
+    "release":"2016-01-20 20:34:02",
+    "requires":{},"numDownloads":960,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>A soothing background for those who missed their first cup of the day.<\/p>",
+      "faq":"",
+      "documentation":"",
+      "changelog":""},"download":"\/api\/2.0\/plugins\/CoffeeCup\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Vale",
+  "displayName":"Vale",
+  "owner":"ashleighpearson",
+  "description":"A muted red, white, and blue theme",
+  "homepage":"https:\/\/github.com\/ashleighpearson\/apcustomthemes",
+  "createdDateTime":"2016-01-20 20:20:03",
+  "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ashleighpearson\/apcustomthemes",
+  "lastUpdated":"2016-01-20 21:08:03",
+  "latestVersion":"0.1.3",
+  "numDownloads":930,"screenshots":[],"previews":[],"activity":{"numCommits":"4",
+    "numContributors":"1",
+    "lastCommitDate":"2016-01-20 21:07:41"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2016-01-20 20:20:03",
+    "requires":{},"numDownloads":4,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ashleighpearson\/apcustomthemes\/commits\/v0.1.1",
+    "readmeHtml":{"description":"",
+      "faq":"",
+      "changelog":"",
+      "documentation":""},"download":"\/api\/2.0\/plugins\/Vale\/download\/0.1.0"},{"name":"0.1.3",
+    "release":"2016-01-20 21:08:03",
+    "requires":{},"numDownloads":926,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ashleighpearson\/apcustomthemes\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>A muted red, white, and blue theme, giving Piwik a cool, calm feel. Good colour contrast makes things easy to read, as well as creating an overall pleasant aesthetic. Created during the 2016 Catalyst Open Source Academy.<\/p>\n\n",
+      "faq":"",
+      "documentation":"",
+      "changelog":"<p>Version 0.1.0: First public release\nVersion 0.1.1: Minor code fixes\nVersion 0.1.2: Typo fixes\nVersion 0.1.3: Typo fixes, more screenshots<\/p>"},"download":"\/api\/2.0\/plugins\/Vale\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ModernBlue",
+  "displayName":"Modern Blue",
+  "owner":"cuzzea",
+  "description":"Modern Blue theme for Piwik.",
+  "homepage":null,"createdDateTime":"2016-03-18 09:06:03",
+  "donate":{"paypal":"cuzzea@gmail.com",
+    "bitcoin":null},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-blue",
+  "lastUpdated":"2016-03-18 09:06:03",
+  "latestVersion":"0.1.0",
+  "numDownloads":757,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2016-03-18 09:04:26"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2016-03-18 09:06:03",
+    "requires":{},"numDownloads":757,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-blue\/commits\/v0.1.1",
+    "readmeHtml":{"description":"\n\n<p>Modern Blue theme for Piwik<\/p>\n\n",
+      "faq":"<p><strong>No FAQ at the moment<\/strong><\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0: First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ModernBlue\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ModernGreen",
+  "displayName":"Modern Green",
+  "owner":"cuzzea",
+  "description":"Modern Green theme for Piwik.",
+  "homepage":null,"createdDateTime":"2016-03-18 09:22:03",
+  "donate":{"paypal":"cuzzea@gmail.com",
+    "bitcoin":null},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-green",
+  "lastUpdated":"2016-03-18 09:22:03",
+  "latestVersion":"0.1.0",
+  "numDownloads":710,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2016-03-18 09:21:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+    "release":"2016-03-18 09:22:03",
+    "requires":{},"numDownloads":710,"license":{"name":"GPLv3+",
+      "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-green\/commits\/v0.1.2",
+    "readmeHtml":{"description":"\n\n<p>Modern Green theme for Piwik<\/p>\n\n",
+      "faq":"<p><strong>No FAQ at the moment<\/strong><\/p>",
+      "documentation":"",
+      "changelog":"<ul><li>0.1.0: First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ModernGreen\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}}]}
\ No newline at end of file
diff --git a/plugins/Morpheus/templates/javascriptCode.twig b/plugins/Morpheus/templates/javascriptCode.twig
index c18d850d345d988bf24a3e1731965e873f5dfeff..da29f9b6b88bdff62fa0b75a72154c0b95227503 100644
--- a/plugins/Morpheus/templates/javascriptCode.twig
+++ b/plugins/Morpheus/templates/javascriptCode.twig
@@ -12,7 +12,7 @@
 
   })();
 </script>
-{% if not loadAsync %}<script type='text/javascript' src="{$protocol}{$piwikUrl}/piwik.js">
+{% if not loadAsync %}<script type='text/javascript' src="{$protocol}{$piwikUrl}/piwik.js"></script>
 {% endif %}
 <noscript><p><img src="{$protocol}{$piwikUrl}/piwik.php?idsite={$idSite}" style="border:0;" alt="" /></p></noscript>
 <!-- End Piwik Code -->
diff --git a/plugins/SitesManager/templates/sites-list/site-fields.html b/plugins/SitesManager/templates/sites-list/site-fields.html
index 89f4befd81d1166d4c3deb425dc5ed695af0a2c7..f448ddbcfc675693ac432ca5dc1b71964d5c0828 100644
--- a/plugins/SitesManager/templates/sites-list/site-fields.html
+++ b/plugins/SitesManager/templates/sites-list/site-fields.html
@@ -71,7 +71,7 @@
 
         <div class="form-group row">
             <div class="col s12 m6 input-field">
-                <input type="text" ng-model="site.name"/>
+                <input type="text" ng-model="site.name" maxlength="90" />
                 <label>{{ 'General_Name'|translate }}</label>
             </div>
             <div class="col s12 m6"></div>
diff --git a/plugins/UserCountryMap/svg/AF.svg b/plugins/UserCountryMap/svg/AF.svg
index 578ccb3fe028598893dddcd1d90674fce33412e1..02430b36ef2c13a7daa5a45a3a5c1d051dca4e2f 100644
--- a/plugins/UserCountryMap/svg/AF.svg
+++ b/plugins/UserCountryMap/svg/AF.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 500 558" height="558px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 500 558" width="500px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="558.330197744" padding="0" w="500"><proj id="laea" lat0="1.0" lon0="16.5"/><bbox h="987.37" w="885.8" x="557.1" y="504.56"/><llbbox lat0="-38.0" lat1="40.0" lon0="-20.0" lon1="53.0"/></view></views></metadata><g id="countries"><path d="M225.8,327.2L224.3,327.8L222.5,331.9L224.6,334.4L226.4,340.2L228.5,344.3L227.0,351.3L228.2,355.5L231.7,362.0L230.2,371.4L223.1,379.3L221.4,387.6L218.2,396.9L218.2,403.0L218.0,405.6L223.4,405.3L227.1,403.6L233.3,406.6L237.3,406.5L262.7,406.6L265.6,409.1L276.1,410.0L278.5,410.9L285.0,410.4L294.1,408.8L296.2,408.4L294.9,407.2L289.1,401.8L287.0,396.7L287.4,376.4L300.1,376.4L301.2,372.4L301.4,362.6L301.2,361.7L301.0,361.8L291.1,363.1L289.9,363.9L289.9,358.3L286.6,351.9L287.2,344.1L286.3,336.9L278.1,336.5L278.4,334.3L271.9,335.0L270.9,335.8L269.6,341.5L264.2,341.2L257.5,342.4L254.5,337.9L249.5,327.1L226.2,326.9L225.8,327.2Z M226.2,318.3L226.0,318.2L221.4,318.2L220.9,319.2L218.9,320.9L219.1,321.1L220.0,323.1L220.2,324.1L220.2,326.0L220.3,326.1L222.2,325.9L224.5,319.0L226.1,318.4L226.2,318.3Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M266.4,1.0L266.1,7.9L266.5,10.0L269.8,14.4L269.8,15.0L271.5,13.4L273.5,12.2L274.9,7.9L275.0,7.4L274.9,7.3L271.9,3.1L272.4,0.8L272.5,0.8L272.5,0.5L272.5,0.0L265.8,0.0L265.8,0.0L265.7,0.5L265.7,0.9L266.4,1.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M499.3,97.3L498.7,97.5L498.4,97.2L497.4,94.5L497.3,94.6L497.0,96.5L491.0,105.7L490.1,108.2L487.4,110.0L482.0,109.9L476.7,111.7L473.0,109.3L472.9,109.7L473.3,111.2L480.8,118.8L497.0,119.7L497.2,119.1L497.1,118.0L497.1,110.1L500.0,108.9L498.1,105.9L500.0,103.4L500.0,98.4L499.9,97.9L499.3,97.3Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M408.0,7.3L408.5,7.2L412.1,8.3L413.8,7.8L416.5,11.6L416.9,12.1L417.2,12.1L417.9,11.7L418.8,11.7L418.7,11.1L416.0,7.2L412.3,5.1L409.8,0.0L399.7,0.0L402.9,5.7L404.8,5.4L407.7,7.1L408.0,7.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M408.0,7.3L408.1,7.5L408.4,7.7L408.5,7.8L413.1,11.6L415.7,12.0L416.9,12.1L416.5,11.6L413.8,7.8L412.1,8.3L408.5,7.2L408.0,7.3Z M418.8,11.7L419.2,11.7L425.4,5.6L427.8,7.3L427.1,11.1L432.7,13.4L431.8,10.8L433.2,8.9L432.5,1.9L434.7,0.0L409.8,0.0L412.3,5.1L416.0,7.2L418.7,11.1L418.8,11.7Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M347.3,302.7L344.3,302.8L341.5,305.5L336.9,304.6L336.8,305.0L336.8,305.3L338.2,307.3L338.1,311.8L339.2,316.1L339.4,317.1L341.5,317.1L345.9,312.4L346.5,311.1L347.3,302.9L347.4,302.8L347.3,302.7Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M161.5,203.6L156.8,199.4L154.4,200.2L154.0,202.0L153.8,202.7L153.6,203.1L150.9,206.0L143.6,208.9L143.5,208.9L143.2,209.6L142.4,213.1L146.1,215.9L146.1,218.9L147.7,222.5L147.5,236.9L148.4,241.8L147.3,242.4L148.7,242.1L151.9,241.6L154.8,241.4L155.5,233.6L155.1,232.6L155.7,222.6L158.1,221.7L162.9,213.0L161.6,204.7L161.9,204.2L161.5,203.6Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M138.8,180.9L133.7,180.3L126.0,184.1L124.3,186.2L122.0,185.4L119.1,187.6L118.7,189.5L116.4,189.6L115.9,192.2L110.2,191.9L109.5,195.5L108.1,197.6L102.0,202.1L101.6,206.5L100.3,207.6L100.0,211.6L99.8,212.0L100.2,212.4L107.6,217.6L111.3,215.8L115.2,216.0L118.5,219.2L118.6,219.0L118.6,218.6L118.7,208.4L126.9,208.3L135.4,207.5L136.9,207.9L138.4,208.2L140.6,208.8L141.1,209.1L141.7,208.9L143.5,208.9L143.6,208.9L150.9,206.0L153.6,203.1L153.8,202.7L153.5,202.4L152.8,198.2L148.4,197.5L145.4,194.9L144.8,192.3L142.4,189.9L139.6,184.3L140.1,181.7L140.2,181.4L138.8,180.9Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M285.7,4.0L286.3,4.1L299.4,4.1L303.5,3.2L303.6,0.8L304.3,1.0L304.2,0.8L304.4,0.4L305.2,0.2L305.4,0.0L285.1,0.0L286.0,1.5L285.7,2.3L285.7,3.9L285.7,4.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M308.4,409.5L301.1,411.4L298.2,413.8L295.0,410.8L280.0,412.9L279.4,438.1L272.9,438.1L272.5,456.8L272.5,457.0L272.8,457.2L274.9,458.7L276.4,469.2L277.1,471.0L285.3,469.6L288.3,466.9L292.1,460.8L300.4,463.8L304.7,463.9L308.5,463.0L310.7,457.5L317.1,453.8L318.9,449.3L323.5,446.8L326.6,443.4L332.8,440.3L334.4,440.2L334.1,439.9L332.4,437.5L325.6,435.3L323.9,432.5L322.6,428.2L321.4,428.2L313.8,420.4L311.9,415.5L308.6,409.9L308.7,409.6L308.4,409.5Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M293.3,210.1L291.1,209.6L285.7,212.8L279.4,220.7L276.4,222.6L266.9,224.0L266.6,227.7L264.4,230.1L257.9,230.6L252.7,233.1L250.3,231.6L246.8,233.5L243.7,233.9L243.0,233.8L242.3,235.0L236.6,243.1L237.6,253.7L240.5,258.0L239.8,258.2L247.0,265.9L247.5,269.7L247.8,270.3L248.3,269.4L250.5,262.0L255.5,261.0L264.3,261.7L264.7,261.9L264.6,260.5L265.3,255.6L267.8,252.1L278.8,255.2L287.5,256.5L292.4,255.1L294.1,253.2L297.9,253.6L304.2,251.3L312.5,249.0L320.1,250.5L323.5,249.7L325.5,250.3L325.0,249.8L324.1,246.8L319.8,244.0L317.8,241.0L318.1,239.7L309.9,233.4L310.3,232.7L306.8,229.0L303.7,228.3L303.0,225.8L302.6,225.7L302.0,225.5L299.0,221.0L299.1,217.7L294.1,211.0L293.6,210.1L293.3,210.1Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M114.1,249.5L113.8,249.7L114.7,249.9L114.9,249.6L114.1,249.5Z M83.1,213.4L83.0,213.7L84.2,221.1L82.9,223.2L79.3,231.5L78.9,231.8L79.0,231.9L80.0,235.3L79.2,237.9L79.9,240.7L82.5,241.3L84.4,254.7L85.2,254.6L91.3,251.9L98.0,249.7L109.6,248.9L114.5,248.1L115.3,249.5L115.4,249.6L117.0,248.2L114.1,239.7L117.5,229.9L119.5,228.0L118.2,221.6L118.7,219.4L118.6,219.0L118.5,219.2L115.2,216.0L111.3,215.8L107.6,217.6L100.2,212.4L99.8,212.0L99.6,211.9L96.3,213.5L95.0,213.0L95.0,209.7L92.1,212.0L83.3,213.4L83.1,213.4Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M243.3,233.3L241.4,228.3L238.7,225.0L232.8,219.5L234.5,216.8L244.2,216.6L241.6,214.2L239.9,208.9L240.6,206.0L238.7,199.3L234.6,195.3L233.4,195.3L234.0,198.5L236.5,200.7L236.7,204.6L230.8,210.6L227.5,219.1L226.1,220.1L223.0,226.1L221.8,226.3L218.0,236.6L215.8,239.5L212.5,240.8L210.2,237.4L206.1,237.4L198.1,244.8L195.0,252.9L195.1,252.9L200.1,258.6L204.5,264.6L203.6,268.4L203.5,270.0L204.0,270.7L204.7,271.0L212.5,271.0L214.1,271.0L214.2,270.5L215.7,270.1L226.6,270.4L227.6,270.6L227.7,271.1L229.4,271.1L236.7,270.8L247.5,274.1L247.8,270.4L247.8,270.3L247.5,269.7L247.0,265.9L239.8,258.2L240.5,258.0L237.6,253.7L236.6,243.1L242.3,235.0L243.0,233.8L243.3,233.3Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M323.5,249.7L320.1,250.5L312.5,249.0L304.2,251.3L297.9,253.6L294.1,253.2L292.4,255.1L287.5,256.5L278.8,255.2L267.8,252.1L265.3,255.6L264.6,260.5L264.7,261.9L264.7,263.1L260.9,272.1L259.9,282.4L258.5,288.0L258.7,289.9L248.0,301.3L247.5,310.2L246.5,312.3L239.0,318.8L236.1,319.8L235.1,316.0L230.7,317.1L228.3,319.7L226.3,318.1L226.2,318.3L226.1,318.4L224.5,319.0L222.2,325.9L220.3,326.1L220.5,326.5L221.0,327.1L225.8,326.7L226.2,326.9L249.5,327.1L254.5,337.9L257.5,342.4L264.2,341.2L269.6,341.5L270.9,335.8L271.9,335.0L278.4,334.3L278.1,336.5L286.3,336.9L287.2,344.1L286.6,351.9L289.9,358.3L289.9,363.9L291.1,363.1L301.0,361.8L301.2,361.7L301.5,361.7L303.9,363.5L303.7,365.2L310.4,364.3L314.0,368.3L319.9,369.4L322.9,366.7L326.1,371.5L337.7,378.9L340.5,379.3L340.8,370.9L338.7,372.4L335.8,372.2L331.6,367.6L333.2,360.5L333.3,354.6L331.8,350.7L335.5,346.8L347.0,343.5L348.1,343.3L348.0,342.7L343.9,334.3L339.8,327.7L340.6,326.0L338.9,320.8L339.4,317.4L339.4,317.1L339.2,316.1L338.1,311.8L338.2,307.3L336.8,305.3L336.8,305.0L336.2,304.7L335.7,303.1L337.6,301.3L340.5,295.8L340.7,295.7L340.8,295.5L341.7,285.3L343.1,281.2L350.1,274.1L351.7,270.0L348.6,268.7L349.7,261.7L349.3,261.5L349.1,261.2L342.5,255.7L339.2,254.5L331.0,255.6L325.7,250.8L325.5,250.3L323.5,249.7Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M264.3,261.7L255.5,261.0L250.5,262.0L248.3,269.4L247.8,270.3L247.8,270.4L247.5,274.1L236.7,270.8L229.4,271.1L227.7,271.1L227.7,271.6L231.6,276.2L234.3,276.9L234.2,282.3L231.8,284.8L231.9,287.8L236.0,290.4L234.0,302.5L232.6,303.4L231.1,301.2L224.2,299.5L221.8,302.3L215.8,302.5L216.2,306.0L218.3,309.4L217.6,310.7L213.8,311.4L212.7,313.3L214.4,314.8L217.2,317.9L217.5,319.2L218.8,320.7L218.9,320.9L220.9,319.2L221.4,318.2L226.0,318.2L226.2,318.3L226.3,318.1L228.3,319.7L230.7,317.1L235.1,316.0L236.1,319.8L239.0,318.8L246.5,312.3L247.5,310.2L248.0,301.3L258.7,289.9L258.5,288.0L259.9,282.4L260.9,272.1L264.7,263.1L264.7,261.9L264.3,261.7Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M353.2,42.5L355.5,39.1L350.2,41.4L347.1,41.2L346.3,42.8L346.0,42.7L350.2,42.7L351.8,43.4L353.7,43.0L353.2,42.5Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M345.6,42.6L344.2,43.6L346.4,46.2L353.8,43.1L353.7,43.0L351.8,43.4L350.2,42.7L346.0,42.7L345.6,42.6Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M430.7,203.0L431.2,200.1L432.0,198.5L429.9,195.3L429.8,194.9L427.6,197.0L427.0,197.4L425.2,196.6L425.0,196.8L424.5,197.8L421.7,202.2L428.9,207.1L429.4,207.1L430.1,205.7L430.8,204.5L431.3,203.5L430.7,203.0Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M201.1,32.9L195.9,31.5L196.0,32.3L187.1,33.2L181.5,32.3L175.8,32.1L167.3,33.7L159.2,34.4L154.1,36.7L153.3,37.8L140.4,42.6L139.3,42.4L141.0,47.4L140.6,54.5L141.9,63.0L131.1,64.1L128.4,64.9L126.3,69.8L124.3,70.1L117.9,72.8L115.5,75.4L107.9,76.7L107.6,77.7L96.2,81.7L93.4,83.5L92.4,88.9L92.1,90.6L91.9,91.8L91.7,93.2L92.8,94.0L98.0,98.2L105.4,104.0L112.2,109.3L113.5,110.3L115.3,111.7L126.5,120.9L149.2,138.6L149.2,140.6L152.1,143.2L157.3,146.2L162.0,148.1L162.1,153.4L166.4,153.0L168.5,152.7L170.0,152.4L178.7,150.9L190.6,141.2L217.1,125.5L220.5,123.4L220.0,122.2L212.5,116.3L209.7,116.0L208.2,110.9L204.9,105.9L205.3,104.1L207.8,102.1L207.8,83.5L206.1,78.0L206.7,77.7L206.4,76.1L195.9,53.3L196.3,51.3L200.0,48.5L201.3,45.0L201.3,40.2L203.8,32.8L201.1,32.9Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M358.3,68.3L348.5,70.1L344.7,67.6L339.2,67.1L332.5,69.9L327.5,72.8L319.7,70.6L307.6,68.0L303.5,68.7L303.0,67.9L301.3,70.1L302.3,73.8L301.0,78.2L303.0,84.6L304.3,107.4L305.5,132.0L305.6,133.5L308.0,133.5L363.7,132.0L382.8,131.3L382.8,131.2L378.2,127.1L374.6,125.1L373.5,122.8L372.8,118.4L374.4,118.2L370.2,114.6L367.6,110.2L360.8,100.0L357.2,91.6L351.8,85.8L348.5,80.1L349.0,78.1L354.9,87.1L358.5,90.5L362.6,90.0L364.0,80.8L364.3,80.5L362.2,75.7L361.2,74.0L359.5,70.3L358.8,68.9L358.5,68.4L358.4,68.2L358.3,68.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M385.1,185.4L385.3,185.4L389.5,183.9L392.0,186.0L393.9,180.9L398.2,183.8L401.9,182.3L406.5,183.0L413.4,185.3L424.4,196.1L425.0,196.8L425.2,196.6L427.0,197.4L427.6,197.0L429.8,194.9L429.5,194.1L427.6,193.9L423.5,188.9L419.4,186.2L415.9,181.8L404.3,175.8L402.0,171.2L399.2,162.6L396.8,158.7L391.4,163.0L389.8,165.2L386.8,165.9L386.7,171.0L384.1,179.3L384.8,183.4L385.1,185.4Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M113.4,26.3L119.6,34.4L122.6,33.6L128.7,30.8L137.8,31.4L142.9,30.1L144.0,28.3L147.1,26.3L149.3,26.3L151.6,22.6L156.8,18.4L155.8,17.9L156.7,11.3L162.1,5.4L165.1,3.7L175.2,0.0L122.0,0.0L120.5,1.2L120.1,5.6L115.5,9.7L116.3,13.5L114.3,17.9L114.5,21.0L112.1,23.6L112.0,26.4L113.4,26.3Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M385.1,185.4L384.7,187.3L383.0,196.2L379.7,197.6L377.6,201.7L375.7,208.7L373.3,209.3L371.4,211.8L370.4,219.0L370.4,219.4L370.4,219.6L370.8,225.5L363.5,230.1L364.0,230.9L373.8,237.3L379.3,247.0L379.4,247.1L379.4,247.4L383.0,248.6L382.9,251.9L384.4,254.0L392.5,255.7L399.0,259.9L408.6,261.2L412.0,257.6L417.1,255.3L423.7,257.3L424.7,257.2L424.9,256.9L430.8,254.9L433.0,252.4L439.0,250.1L444.9,250.3L451.5,242.3L462.9,229.4L464.4,227.6L462.1,227.7L437.6,221.2L431.9,215.8L428.4,208.7L429.3,207.4L429.4,207.1L428.9,207.1L421.7,202.2L424.5,197.8L425.0,196.8L424.4,196.1L413.4,185.3L406.5,183.0L401.9,182.3L398.2,183.8L393.9,180.9L392.0,186.0L389.5,183.9L385.3,185.4L385.1,185.4Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M207.2,0.0L207.8,2.7L209.8,3.1L210.8,0.1L207.2,0.0Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M227.6,270.6L226.6,270.4L215.7,270.1L214.2,270.5L214.1,271.0L214.1,272.6L214.1,277.0L212.7,279.1L202.0,278.9L201.9,279.2L200.2,281.8L203.4,285.8L200.0,284.1L199.9,288.5L197.5,290.9L195.8,290.2L200.1,297.4L198.1,295.2L202.6,302.9L207.3,307.1L212.0,312.7L212.7,313.3L213.8,311.4L217.6,310.7L218.3,309.4L216.2,306.0L215.8,302.5L221.8,302.3L224.2,299.5L231.1,301.2L232.6,303.4L234.0,302.5L236.0,290.4L231.9,287.8L231.8,284.8L234.2,282.3L234.3,276.9L231.6,276.2L227.7,271.6L227.7,271.1L227.6,270.6Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M359.3,68.3L359.3,67.8L359.8,66.3L359.4,67.0L358.4,68.2L358.5,68.4L358.8,68.9L359.3,68.3Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M135.4,207.5L126.9,208.3L118.7,208.4L118.6,218.6L118.6,219.0L118.7,219.4L118.2,221.6L119.5,228.0L117.5,229.9L114.1,239.7L117.0,248.2L115.4,249.6L114.9,249.6L114.7,249.9L114.9,249.9L122.3,252.3L128.8,249.4L130.6,249.1L137.9,245.5L141.3,245.5L143.8,243.5L144.3,243.2L141.3,240.6L140.4,238.6L140.6,231.7L140.0,225.7L139.3,224.4L140.5,220.0L139.3,218.5L139.6,214.1L137.3,208.3L136.9,207.9L135.4,207.5Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M61.2,196.7L54.0,196.7L48.5,194.5L46.3,194.3L46.3,194.9L44.6,197.8L45.4,198.7L43.1,201.5L38.7,203.1L36.6,206.4L36.5,207.2L40.3,211.5L45.2,215.1L47.2,220.1L47.3,220.4L50.4,218.6L53.4,214.5L61.1,214.0L64.3,218.4L66.6,224.9L67.1,224.9L67.5,224.9L72.2,226.1L73.0,230.7L74.4,233.9L78.6,231.6L78.9,231.8L79.3,231.5L82.9,223.2L84.2,221.1L83.0,213.7L83.1,213.4L83.3,212.9L81.2,209.2L80.9,205.0L78.4,200.8L72.5,199.7L68.9,198.4L64.5,198.3L62.2,199.7L61.4,197.0L61.6,196.8L61.2,196.7Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M28.6,187.9L29.6,188.8L26.8,190.1L26.7,190.7L32.9,190.3L33.1,189.1L46.0,189.5L44.2,188.0L39.2,186.0L35.3,187.3L28.4,187.0L28.6,187.9Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M46.3,194.3L44.1,194.2L36.7,193.9L32.3,195.4L26.6,195.8L28.3,196.9L30.0,199.1L34.8,199.6L36.8,201.7L34.4,202.3L36.4,205.9L36.6,206.4L38.7,203.1L43.1,201.5L45.4,198.7L44.6,197.8L46.3,194.9L46.3,194.3Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M214.1,271.0L212.5,271.0L204.7,271.0L204.0,270.7L203.5,270.0L203.3,271.7L202.0,275.3L201.3,276.1L202.1,278.7L202.0,278.9L212.7,279.1L214.1,277.0L214.1,272.6L214.1,271.0Z M196.2,259.9L194.3,263.3L195.5,263.6L197.6,260.2L196.2,259.9Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M293.5,42.1L292.8,44.2L298.8,45.0L299.1,45.9L307.5,45.2L304.9,43.3L303.2,43.4L294.9,41.7L293.5,42.1Z M304.3,1.0L303.6,0.8L303.5,3.2L299.4,4.1L286.3,4.1L285.7,4.0L285.3,4.0L279.5,6.7L275.7,7.4L275.0,7.4L274.9,7.9L273.5,12.2L271.5,13.4L269.8,15.0L270.4,15.4L275.8,21.8L278.6,24.0L281.4,23.3L288.5,25.0L287.1,26.2L281.4,23.9L277.2,27.2L280.1,30.1L281.6,34.4L282.6,32.4L285.1,35.5L287.1,34.6L287.9,32.4L286.9,30.6L290.0,28.6L288.7,26.2L291.8,26.6L293.6,27.9L292.2,23.7L284.9,20.1L286.7,19.7L284.4,12.6L284.4,9.6L288.5,12.1L293.9,11.0L290.6,7.8L294.0,6.6L303.2,7.3L303.4,7.5L304.9,5.7L304.6,4.1L304.8,1.1L304.3,1.0Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M463.0,18.4L460.5,20.9L454.6,23.5L452.3,23.8L444.7,21.9L441.7,19.5L436.1,18.8L432.8,13.7L432.7,13.4L427.1,11.1L427.8,7.3L425.4,5.6L419.2,11.7L418.8,11.7L417.9,11.7L417.2,12.1L416.9,12.1L415.7,12.0L413.1,11.6L408.5,7.8L408.4,7.7L408.2,7.7L406.9,7.0L406.2,9.6L404.6,9.8L407.7,16.2L408.7,16.8L412.5,24.4L412.5,24.5L412.5,24.5L418.1,31.8L422.7,32.7L423.7,37.4L420.9,42.6L421.9,45.9L426.9,50.3L427.2,52.2L430.0,52.8L439.0,59.2L439.4,64.8L446.2,71.5L446.5,71.4L448.0,67.5L451.1,69.9L454.8,69.0L465.3,82.8L467.1,84.2L475.1,87.6L482.1,91.3L489.5,91.8L497.0,86.3L500.0,86.9L500.0,16.7L498.4,17.0L491.0,12.3L488.4,11.2L479.2,10.3L478.8,9.6L473.2,9.7L473.3,10.4L462.4,17.3L463.0,18.4Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M412.3,24.4L407.2,24.4L400.8,24.1L399.6,25.8L399.1,26.0L399.1,26.1L396.7,29.7L394.7,30.4L395.6,36.3L395.3,38.8L385.1,51.7L383.6,52.7L384.3,54.2L386.3,58.6L388.0,60.2L387.3,61.0L388.7,61.2L394.8,61.8L407.6,68.0L409.4,69.2L434.5,78.9L435.5,78.5L436.2,77.3L437.8,72.0L439.9,71.1L442.8,71.7L442.8,71.5L445.1,71.6L445.7,71.7L446.2,71.5L439.4,64.8L439.0,59.2L430.0,52.8L427.2,52.2L426.9,50.3L421.9,45.9L420.9,42.6L423.7,37.4L422.7,32.7L418.1,31.8L412.5,24.5L412.5,24.5L412.3,24.4Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M366.6,57.8L366.7,55.7L366.9,55.4L366.3,53.8L366.3,53.4L366.2,53.5L364.4,55.6L364.0,55.9L362.2,56.0L362.1,56.8L361.2,62.1L360.8,64.1L359.9,66.3L359.8,66.3L359.3,67.8L359.3,68.3L358.8,68.9L359.5,70.3L361.2,74.0L362.2,75.7L364.3,80.5L364.7,79.9L365.1,75.5L365.0,73.3L365.8,67.8L365.8,66.7L365.6,66.7L363.1,65.5L362.5,60.2L365.1,60.5L365.5,60.5L365.4,59.0L365.6,58.5L366.3,58.2L366.6,58.1L366.6,57.8Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M244.7,24.9L237.2,26.2L233.7,26.2L230.1,25.3L227.0,28.4L230.7,29.7L234.3,32.0L236.3,32.2L238.3,34.2L241.2,34.9L243.0,32.8L241.9,30.4L244.7,24.9Z M211.6,6.9L209.8,4.8L205.7,7.0L203.9,6.6L204.7,11.7L204.0,17.8L207.3,18.9L207.6,17.6L210.8,17.0L211.4,11.0L212.4,9.5L211.6,6.9Z M225.1,0.0L228.5,3.4L235.3,5.7L240.7,9.0L243.2,12.7L245.4,13.2L248.3,20.1L245.5,26.7L247.4,26.7L250.3,21.6L252.6,20.1L253.5,17.2L251.8,15.9L251.0,12.3L253.0,9.8L257.7,11.3L260.4,14.3L261.2,12.4L258.2,8.9L250.3,5.1L246.8,2.6L248.1,0.8L241.6,0.0L225.1,0.0Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M388.0,60.2L386.3,58.6L384.3,54.2L383.6,52.7L382.2,53.7L373.2,60.6L371.1,60.4L367.2,58.2L366.6,58.1L366.3,58.2L365.6,58.5L365.4,59.0L365.5,60.5L365.8,61.5L365.8,63.3L366.2,64.7L365.8,66.1L365.8,66.7L365.8,67.8L365.0,73.3L365.1,75.5L364.7,79.9L364.8,80.4L364.7,81.3L371.7,82.0L375.0,77.5L379.7,76.0L382.1,72.5L374.9,66.1L386.5,61.9L387.3,61.0L388.0,60.2Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M379.4,247.1L378.2,248.4L373.5,253.3L372.1,254.8L370.8,256.2L371.9,258.5L374.0,260.5L377.2,268.8L377.8,274.3L374.5,278.5L370.8,284.6L370.5,291.7L370.6,292.9L371.1,292.9L396.1,307.3L396.8,311.5L406.6,319.0L406.7,318.8L410.8,312.5L413.5,307.1L418.4,300.8L421.7,298.9L422.7,297.7L418.9,291.8L418.6,265.6L423.9,258.5L424.7,257.2L423.7,257.3L417.1,255.3L412.0,257.6L408.6,261.2L399.0,259.9L392.5,255.7L384.4,254.0L382.9,251.9L383.0,248.6L379.4,247.4L379.4,247.1Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M272.5,0.8L272.5,0.8L273.2,0.9L273.4,0.0L272.5,0.0L272.5,0.5L272.5,0.8Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M442.8,71.7L439.9,71.1L437.8,72.0L436.2,77.3L435.5,78.5L436.7,78.6L441.0,78.8L447.7,81.4L447.3,80.8L443.3,74.2L444.4,74.4L442.8,71.9L442.8,71.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M366.6,53.1L369.7,47.8L367.5,44.8L365.7,45.3L365.8,45.8L364.2,48.0L364.2,49.4L362.4,55.5L362.2,56.0L364.0,55.9L364.4,55.6L366.2,53.5L366.3,53.4L366.6,53.1Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M78.6,231.6L74.4,233.9L73.0,230.7L72.2,226.1L67.5,224.9L67.1,224.9L67.1,225.2L66.8,226.2L58.4,236.0L59.7,237.6L73.8,249.6L79.6,253.0L83.7,254.6L84.4,254.7L82.5,241.3L79.9,240.7L79.2,237.9L80.0,235.3L79.0,231.9L78.9,231.8L78.6,231.6Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M302.8,67.5L302.2,66.4L291.4,64.4L290.1,61.7L284.5,59.8L272.1,64.6L271.0,67.3L269.9,76.3L266.3,77.8L260.4,74.4L255.2,72.4L247.7,71.1L244.4,69.3L243.0,65.1L233.8,60.9L229.6,60.1L227.2,60.7L220.7,58.5L219.8,58.1L219.6,63.2L210.8,69.5L211.2,74.1L207.4,77.4L206.7,77.7L206.1,78.0L207.8,83.5L207.8,102.1L205.3,104.1L204.9,105.9L208.2,110.9L209.7,116.0L212.5,116.3L220.0,122.2L220.5,123.4L223.9,124.3L231.1,126.2L235.2,129.7L240.1,127.1L240.1,127.1L242.5,126.0L246.6,124.1L261.3,131.6L296.4,149.2L299.6,150.8L299.6,149.9L299.5,147.3L306.1,147.2L305.7,136.9L305.6,133.5L305.5,132.0L304.3,107.4L303.0,84.6L301.0,78.2L302.3,73.8L301.3,70.1L303.0,67.9L302.8,67.5Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M326.2,493.8L330.8,488.3L330.3,487.1L325.4,483.7L320.6,485.8L318.0,489.2L316.0,490.3L319.9,497.0L321.5,497.3L324.1,494.0L326.2,493.8Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M33.1,130.8L40.0,130.7L42.9,131.2L48.3,129.9L51.6,125.7L54.5,117.2L55.7,115.7L65.2,109.1L66.8,106.8L69.6,100.5L71.6,100.1L77.6,94.2L84.2,95.7L91.1,94.1L91.3,90.6L92.1,90.6L92.4,88.9L93.4,83.5L96.2,81.7L107.6,77.7L107.9,76.7L115.5,75.4L117.9,72.8L124.3,70.1L126.3,69.8L128.4,64.9L131.1,64.1L141.9,63.0L140.6,54.5L141.0,47.4L139.3,42.4L138.1,42.2L134.6,40.6L125.3,40.8L121.0,36.0L118.6,36.4L114.8,43.0L111.6,47.2L106.2,50.2L101.5,51.7L94.9,56.7L93.6,60.0L91.2,62.4L89.1,68.2L89.1,73.3L81.5,81.0L75.4,84.9L72.5,86.0L66.4,87.0L61.7,94.0L54.8,98.5L49.2,109.5L43.0,114.1L40.3,119.7L34.2,127.4L33.1,130.8Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M472.7,375.2L470.7,372.6L469.5,374.2L468.2,378.7L466.0,382.1L461.7,383.4L461.6,385.8L459.8,388.7L460.3,390.7L457.3,392.6L457.4,391.0L449.9,397.2L449.4,398.7L445.2,398.6L436.4,402.6L436.4,404.0L432.8,409.4L432.5,415.7L434.2,423.8L433.0,428.9L426.4,437.1L424.3,447.8L425.7,452.4L424.7,458.1L426.2,462.7L432.8,467.1L444.9,463.6L450.0,454.3L452.6,448.2L468.0,414.3L469.2,408.2L471.6,404.3L471.8,396.9L475.0,399.9L475.9,393.3L475.7,386.9L474.1,378.4L472.7,375.2Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M272.5,0.8L272.4,0.8L271.9,3.1L274.9,7.3L275.0,7.4L275.7,7.4L279.5,6.7L285.3,4.0L285.7,4.0L285.7,3.9L285.7,2.3L286.0,1.5L285.1,0.0L273.4,0.0L273.2,0.9L272.5,0.8L272.5,0.8Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M166.4,153.0L162.1,153.4L162.0,148.1L157.3,146.2L152.1,143.2L149.2,140.6L149.2,138.6L126.5,120.9L115.3,111.7L113.5,110.3L111.3,110.2L102.4,109.8L101.9,130.4L101.9,153.1L102.3,176.3L80.7,175.5L76.4,174.8L65.9,176.9L61.7,174.6L58.4,180.0L57.3,179.5L57.8,180.6L58.5,184.8L58.0,187.9L61.9,193.0L61.7,196.3L61.6,196.8L61.4,197.0L62.2,199.7L64.5,198.3L68.9,198.4L72.5,199.7L78.4,200.8L80.9,205.0L81.2,209.2L83.3,212.9L83.1,213.4L83.3,213.4L92.1,212.0L95.0,209.7L95.0,213.0L96.3,213.5L99.6,211.9L99.8,212.0L100.0,211.6L100.3,207.6L101.6,206.5L102.0,202.1L108.1,197.6L109.5,195.5L110.2,191.9L115.9,192.2L116.4,189.6L118.7,189.5L119.1,187.6L122.0,185.4L124.3,186.2L126.0,184.1L133.7,180.3L138.8,180.9L140.2,181.4L140.3,181.1L146.3,180.1L147.6,179.1L162.4,178.8L168.5,153.9L168.5,152.7L166.4,153.0Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M265.7,0.9L265.7,0.5L265.8,0.0L265.8,0.0L264.6,0.0L264.8,0.4L265.7,0.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M354.4,472.4L354.5,468.6L353.0,466.7L361.6,460.5L370.4,457.2L373.5,448.0L373.1,437.3L370.7,425.3L383.3,415.9L390.3,409.4L399.7,406.0L406.4,401.9L411.7,395.2L412.9,391.4L412.2,377.7L413.3,370.8L412.8,368.3L413.8,360.6L413.5,359.9L399.8,366.4L398.7,365.7L391.2,368.2L388.2,367.6L385.0,368.2L381.6,366.4L377.5,367.2L376.0,367.2L375.1,367.2L371.7,371.6L372.6,379.6L380.7,388.9L379.8,397.9L375.9,400.8L375.9,403.8L370.5,399.7L369.5,396.8L370.7,386.9L365.1,387.0L363.5,384.3L363.2,384.1L361.8,384.5L342.9,390.6L343.7,394.2L343.8,395.1L343.8,396.2L353.9,400.7L358.4,401.9L360.4,406.5L360.1,413.9L358.1,421.3L359.2,425.5L355.8,429.7L347.8,441.2L346.8,441.8L346.8,442.2L348.2,449.8L349.3,452.1L350.0,457.3L348.9,465.8L349.0,466.3L349.1,466.4L349.5,468.0L349.4,468.5L349.6,470.1L349.4,472.3L350.0,472.3L351.0,472.5L353.6,472.5L354.3,472.5L354.4,472.4Z M374.1,370.9L373.9,370.2L374.2,370.2L374.1,370.9Z M373.7,370.2L373.0,370.3L373.1,370.0L373.7,370.2Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M113.5,110.3L112.2,109.3L105.4,104.0L98.0,98.2L92.8,94.0L91.7,93.2L91.5,94.3L90.3,102.1L69.7,100.8L66.7,118.4L59.2,122.1L58.2,133.0L33.3,131.4L32.1,135.1L32.7,133.5L35.9,136.5L35.0,147.2L35.5,156.3L30.8,167.6L30.4,170.8L32.9,165.9L44.0,165.6L50.8,170.2L52.8,174.4L57.1,179.4L57.3,179.5L58.4,180.0L61.7,174.6L65.9,176.9L76.4,174.8L80.7,175.5L102.3,176.3L101.9,153.1L101.9,130.4L102.4,109.8L111.3,110.2L113.5,110.3Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M374.1,370.9L374.2,370.2L373.9,370.2L374.1,370.9Z M373.7,370.2L373.1,370.0L373.0,370.3L373.7,370.2Z M362.7,351.9L362.7,352.1L365.3,354.7L366.1,361.5L364.9,362.0L364.0,373.9L362.1,376.0L360.4,380.8L362.9,383.6L363.2,384.1L363.5,384.3L365.1,387.0L370.7,386.9L369.5,396.8L370.5,399.7L375.9,403.8L375.9,400.8L379.8,397.9L380.7,388.9L372.6,379.6L371.7,371.6L375.1,367.2L376.0,367.2L375.9,367.0L374.6,365.3L374.1,360.5L372.2,354.4L370.0,352.6L362.8,351.8L362.7,351.9Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M294.1,408.8L285.0,410.4L278.5,410.9L276.1,410.0L265.6,409.1L262.7,406.6L237.3,406.5L233.3,406.6L227.1,403.6L223.4,405.3L218.0,405.6L217.9,407.1L218.3,410.8L223.0,417.1L229.8,430.7L235.7,439.3L237.9,455.4L238.8,457.0L241.0,468.1L242.6,474.5L245.0,478.4L249.0,482.3L249.7,482.8L253.5,478.9L256.0,483.4L266.8,485.0L269.2,482.6L272.0,481.8L272.5,459.8L272.5,457.0L272.5,456.8L272.9,438.1L279.4,438.1L280.0,412.9L295.0,410.8L298.2,413.8L301.1,411.4L308.4,409.5L308.7,409.6L307.6,408.4L305.3,407.6L297.6,408.1L296.2,408.4L294.1,408.8Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M240.1,127.1L235.2,129.7L231.1,126.2L223.9,124.3L220.5,123.4L217.1,125.5L190.6,141.2L178.7,150.9L170.0,152.4L168.5,152.7L168.5,153.9L162.4,178.8L147.6,179.1L146.3,180.1L140.3,181.1L140.2,181.4L140.1,181.7L139.6,184.3L142.4,189.9L144.8,192.3L145.4,194.9L148.4,197.5L152.8,198.2L153.5,202.4L153.8,202.7L154.0,202.0L154.4,200.2L156.8,199.4L161.5,203.6L161.9,204.2L162.3,204.0L165.6,194.8L166.1,192.0L175.3,189.3L182.9,192.9L184.0,194.7L187.8,194.8L190.8,193.2L197.2,196.3L203.1,197.0L209.0,193.4L222.8,194.5L229.1,191.0L230.3,191.0L229.7,188.0L231.8,182.2L238.2,174.1L243.1,168.9L246.2,144.9L242.1,138.0L240.8,131.1L240.1,127.1L240.1,127.1Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M161.9,204.2L161.6,204.7L162.9,213.0L158.1,221.7L155.7,222.6L155.1,232.6L155.5,233.6L154.8,241.4L155.3,241.3L164.6,241.2L169.6,243.9L173.1,248.3L174.4,253.6L179.2,255.5L182.6,253.1L183.7,255.4L193.1,254.3L192.9,251.7L194.9,252.9L195.0,252.9L198.1,244.8L206.1,237.4L210.2,237.4L212.5,240.8L215.8,239.5L218.0,236.6L221.8,226.3L223.0,226.1L226.1,220.1L227.5,219.1L230.8,210.6L236.7,204.6L236.5,200.7L234.0,198.5L233.4,195.3L232.5,194.0L231.4,192.4L230.3,191.0L229.1,191.0L222.8,194.5L209.0,193.4L203.1,197.0L197.2,196.3L190.8,193.2L187.8,194.8L184.0,194.7L182.9,192.9L175.3,189.3L166.1,192.0L165.6,194.8L162.3,204.0L161.9,204.2Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M482.0,147.2L482.4,147.9L488.6,159.1L489.1,159.3L491.6,163.7L492.8,163.0L496.8,161.4L497.4,160.7L500.0,160.3L500.0,135.2L499.6,138.7L482.9,146.8L482.0,147.2Z M497.2,119.1L497.9,119.8L498.4,120.5L500.0,122.6L500.0,108.9L497.1,110.1L497.1,118.0L497.2,119.1Z M497.4,94.5L498.4,97.2L498.7,97.5L499.3,97.3L499.3,96.9L499.3,94.0L497.6,93.5L497.4,94.5Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M112.0,26.4L112.1,23.6L114.5,21.0L114.3,17.9L116.3,13.5L115.5,9.7L120.1,5.6L120.5,1.2L122.0,0.0L111.2,0.0L108.7,6.2L104.8,10.7L102.9,15.0L106.9,17.5L105.7,19.0L104.5,24.1L102.8,26.7L111.5,26.4L112.0,26.4Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M471.3,107.2L471.8,103.6L470.6,99.9L468.3,96.7L466.3,102.2L467.6,106.1L467.5,106.5L468.0,107.3L470.6,107.6L471.3,107.2Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M346.9,293.4L345.9,293.8L341.0,295.7L340.7,295.7L340.5,295.8L337.6,301.3L335.7,303.1L336.2,304.7L336.8,305.0L336.9,304.6L341.5,305.5L344.3,302.8L347.3,302.7L347.4,302.8L347.7,302.7L349.5,301.8L349.3,296.9L346.9,293.5L347.2,293.4L346.9,293.4Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M91.9,91.8L92.1,90.6L91.3,90.6L91.1,94.1L84.2,95.7L77.6,94.2L71.6,100.1L69.6,100.5L66.8,106.8L65.2,109.1L55.7,115.7L54.5,117.2L51.6,125.7L48.3,129.9L42.9,131.2L40.0,130.7L33.1,130.8L33.0,131.1L31.9,134.7L32.1,135.1L33.3,131.4L58.2,133.0L59.2,122.1L66.7,118.4L69.7,100.8L90.3,102.1L91.5,94.3L91.7,93.2L91.9,91.8Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M497.2,119.1L497.0,119.7L480.8,118.8L473.3,111.2L472.9,109.7L472.7,109.7L471.2,109.4L471.4,108.4L471.1,107.8L470.6,107.6L468.0,107.3L467.5,106.5L466.9,106.0L461.7,97.6L460.8,93.7L450.9,85.7L448.2,82.0L447.7,81.4L441.0,78.8L436.7,78.6L435.5,78.5L434.5,78.9L409.4,69.2L407.6,68.0L394.8,61.8L388.7,61.2L387.3,61.0L386.5,61.9L374.9,66.1L382.1,72.5L379.7,76.0L375.0,77.5L371.7,82.0L364.7,81.3L364.3,85.7L364.4,89.7L367.3,90.2L377.3,103.1L382.0,108.5L385.3,115.3L390.3,117.7L391.6,119.0L396.4,126.6L396.8,128.0L403.5,142.4L410.8,147.7L417.4,158.7L419.6,160.1L425.3,168.5L425.4,169.1L427.2,162.0L428.6,160.8L437.3,161.0L447.6,161.9L452.1,163.7L455.3,160.9L458.7,154.7L464.8,151.0L480.6,147.5L482.0,147.2L482.9,146.8L499.6,138.7L500.0,135.2L500.0,122.6L498.4,120.5L497.9,119.8L497.2,119.1Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M305.6,133.5L305.7,136.9L306.1,147.2L299.5,147.3L299.6,149.9L299.6,150.8L299.7,153.8L294.6,177.0L293.5,180.7L289.8,185.0L291.0,187.7L289.0,193.4L286.4,196.7L293.9,207.2L293.8,209.4L293.6,210.1L294.1,211.0L299.1,217.7L299.0,221.0L302.0,225.5L302.6,225.7L302.6,225.7L302.7,225.5L305.3,224.2L307.1,217.5L310.2,214.2L313.7,213.4L319.8,219.9L322.6,218.9L327.6,219.1L329.3,220.9L334.7,219.9L339.8,216.6L339.8,215.6L345.8,216.1L350.9,217.3L353.7,214.3L358.2,207.1L357.9,203.8L356.1,201.8L360.4,201.1L363.3,202.9L363.8,209.9L368.9,214.2L370.4,219.4L370.4,219.4L370.4,219.4L370.4,219.0L371.4,211.8L373.3,209.3L375.7,208.7L377.6,201.7L379.7,197.6L383.0,196.2L384.7,187.3L385.1,185.4L384.8,183.4L384.1,179.3L386.7,171.0L386.8,165.9L389.8,165.2L391.4,163.0L396.8,158.7L396.6,158.2L388.9,153.3L388.0,151.4L385.6,136.9L383.0,132.9L382.8,131.3L363.7,132.0L308.0,133.5L305.6,133.5Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M302.6,225.7L302.6,225.7L303.0,225.8L303.7,228.3L306.8,229.0L310.3,232.7L309.9,233.4L318.1,239.7L317.8,241.0L319.8,244.0L324.1,246.8L325.0,249.8L325.5,250.3L325.7,250.8L331.0,255.6L339.2,254.5L342.5,255.7L349.1,261.2L349.3,261.5L349.5,261.1L355.9,259.2L356.9,260.6L364.1,258.6L366.4,259.5L369.2,257.8L370.8,256.2L372.1,254.8L373.5,253.3L378.2,248.4L379.4,247.1L379.3,247.0L373.8,237.3L364.0,230.9L363.5,230.1L370.8,225.5L370.4,219.6L370.4,219.4L370.4,219.4L370.4,219.4L368.9,214.2L363.8,209.9L363.3,202.9L360.4,201.1L356.1,201.8L357.9,203.8L358.2,207.1L353.7,214.3L350.9,217.3L345.8,216.1L339.8,215.6L339.8,216.6L334.7,219.9L329.3,220.9L327.6,219.1L322.6,218.9L319.8,219.9L313.7,213.4L310.2,214.2L307.1,217.5L305.3,224.2L302.7,225.5L302.6,225.7Z " data-iso="SDS" data-name="S. Sudan" data-pop="8260490.0"/><path d="M57.1,179.4L52.8,174.4L50.8,170.2L44.0,165.6L32.9,165.9L30.4,170.8L30.1,171.5L28.0,174.6L23.8,178.5L25.3,179.2L28.4,186.2L28.4,187.0L35.3,187.3L39.2,186.0L44.2,188.0L46.0,189.5L33.1,189.1L32.9,190.3L26.7,190.7L26.7,191.3L26.5,194.1L26.4,195.5L26.6,195.8L32.3,195.4L36.7,193.9L44.1,194.2L46.3,194.3L48.5,194.5L54.0,196.7L61.2,196.7L61.6,196.8L61.7,196.3L61.9,193.0L58.0,187.9L58.5,184.8L57.8,180.6L57.3,179.5L57.1,179.4Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M47.4,220.8L48.4,224.9L47.2,224.4L49.5,229.0L52.9,232.8L58.1,235.7L58.4,236.0L66.8,226.2L67.1,225.2L67.1,224.9L66.6,224.9L64.3,218.4L61.1,214.0L53.4,214.5L50.4,218.6L47.3,220.4L47.4,220.8Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M468.8,203.9L467.3,203.5L457.9,205.4L456.3,206.8L443.1,210.7L439.4,210.9L432.7,204.5L431.3,203.5L430.8,204.5L430.1,205.7L429.4,207.1L429.3,207.4L428.4,208.7L431.9,215.8L437.6,221.2L462.1,227.7L464.4,227.6L465.3,225.9L470.1,216.9L469.8,213.1L469.1,203.9L468.8,203.9Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M423.3,296.9L425.7,292.5L435.8,281.1L441.6,275.5L445.5,272.5L453.0,267.6L458.5,261.7L465.5,252.8L469.8,245.5L476.3,229.7L481.4,219.0L482.5,210.6L483.8,207.7L483.5,204.6L480.7,198.2L476.6,201.6L469.9,203.8L469.1,203.9L469.8,213.1L470.1,216.9L465.3,225.9L464.4,227.6L462.9,229.4L451.5,242.3L444.9,250.3L439.0,250.1L433.0,252.4L430.8,254.9L424.9,256.9L424.7,257.2L423.9,258.5L418.6,265.6L418.9,291.8L422.7,297.7L423.3,296.9Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M348.8,466.3L344.3,465.4L343.5,466.3L343.9,474.9L348.2,475.4L349.3,472.2L349.4,472.3L349.6,470.1L349.4,468.5L349.5,468.0L349.1,466.4L349.0,466.3L348.8,466.3Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M398.6,25.2L388.5,27.5L382.7,30.2L375.8,29.2L371.8,31.2L367.0,30.7L365.4,37.1L363.8,36.7L363.5,37.2L363.4,39.0L364.4,40.0L365.0,43.8L365.7,45.3L367.5,44.8L369.7,47.8L366.6,53.1L366.3,53.4L366.3,53.8L366.9,55.4L366.7,55.7L366.6,57.8L366.6,58.1L367.2,58.2L371.1,60.4L373.2,60.6L382.2,53.7L383.6,52.7L385.1,51.7L395.3,38.8L395.6,36.3L394.7,30.4L396.7,29.7L399.1,26.1L399.1,26.0L398.6,25.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M296.4,149.2L261.3,131.6L246.6,124.1L242.5,126.0L240.1,127.1L240.8,131.1L242.1,138.0L246.2,144.9L243.1,168.9L238.2,174.1L231.8,182.2L229.7,188.0L230.3,191.0L231.4,192.4L232.5,194.0L233.4,195.3L234.6,195.3L238.7,199.3L240.6,206.0L239.9,208.9L241.6,214.2L244.2,216.6L234.5,216.8L232.8,219.5L238.7,225.0L241.4,228.3L243.3,233.3L243.0,233.8L243.7,233.9L246.8,233.5L250.3,231.6L252.7,233.1L257.9,230.6L264.4,230.1L266.6,227.7L266.9,224.0L276.4,222.6L279.4,220.7L285.7,212.8L291.1,209.6L293.3,210.1L293.6,210.1L293.8,209.4L293.9,207.2L286.4,196.7L289.0,193.4L291.0,187.7L289.8,185.0L293.5,180.7L294.6,177.0L299.7,153.8L299.6,150.8L296.4,149.2Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M141.7,208.9L141.1,209.1L140.6,208.8L138.4,208.2L136.9,207.9L137.3,208.3L139.6,214.1L139.3,218.5L140.5,220.0L139.3,224.4L140.0,225.7L140.6,231.7L140.4,238.6L141.3,240.6L144.3,243.2L145.2,242.8L147.3,242.4L148.4,241.8L147.5,236.9L147.7,222.5L146.1,218.9L146.1,215.9L142.4,213.1L143.2,209.6L143.5,208.9L141.7,208.9Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M462.4,17.3L473.3,10.4L473.2,9.7L478.8,9.6L479.2,10.3L488.4,11.2L491.0,12.3L498.4,17.0L500.0,16.7L500.0,0.0L453.6,0.0L458.7,7.0L462.1,16.8L462.4,17.3Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M203.8,32.8L201.3,40.2L201.3,45.0L200.0,48.5L196.3,51.3L195.9,53.3L206.4,76.1L206.7,77.7L207.4,77.4L211.2,74.1L210.8,69.5L219.6,63.2L219.8,58.1L219.1,57.8L216.6,55.1L213.6,54.8L212.3,50.2L218.0,44.3L217.5,41.7L214.7,39.0L214.9,37.1L218.6,33.5L217.6,32.2L214.0,33.5L207.2,31.1L205.2,32.4L203.8,32.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M363.8,36.7L365.4,37.1L367.0,30.7L371.8,31.2L375.8,29.2L382.7,30.2L388.5,27.5L398.6,25.2L399.1,26.0L399.6,25.8L400.8,24.1L407.2,24.4L412.3,24.4L412.5,24.5L412.5,24.4L408.7,16.8L407.7,16.2L404.6,9.8L406.2,9.6L406.9,7.0L408.2,7.7L408.4,7.7L408.1,7.5L408.0,7.3L407.7,7.1L404.8,5.4L402.9,5.7L399.7,0.0L383.6,0.0L378.9,1.4L376.6,0.8L373.7,1.6L358.5,0.0L336.5,0.0L329.5,4.1L326.9,3.5L321.2,3.5L319.9,4.4L321.8,6.3L324.5,6.6L320.2,9.1L313.0,8.8L311.7,9.9L307.5,9.5L304.6,12.3L304.6,15.8L308.5,15.0L306.6,21.7L307.7,24.3L311.9,25.4L311.7,27.9L314.2,30.7L312.7,32.0L318.3,31.7L314.0,33.7L322.8,33.4L325.4,36.3L332.2,34.3L332.1,32.4L336.6,32.2L345.7,36.9L350.7,35.6L353.8,32.6L358.8,32.1L363.1,33.4L364.0,36.1L363.8,36.7Z M304.3,1.0L304.8,1.1L304.6,4.1L304.9,5.7L303.4,7.5L303.5,7.8L307.6,8.0L311.3,5.6L315.6,4.8L319.4,5.1L313.5,0.0L305.4,0.0L305.2,0.2L304.4,0.4L304.2,0.8L304.3,1.0Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M347.2,293.4L346.9,293.5L349.3,296.9L349.5,301.8L347.7,302.7L347.4,302.8L347.3,302.9L346.5,311.1L345.9,312.4L341.5,317.1L339.4,317.1L339.4,317.4L338.9,320.8L340.6,326.0L339.8,327.7L343.9,334.3L348.0,342.7L348.1,343.3L348.3,343.8L350.3,346.2L352.2,346.2L362.3,351.7L362.7,351.9L362.8,351.8L370.0,352.6L372.2,354.4L374.1,360.5L374.6,365.3L375.9,367.0L376.0,367.2L377.5,367.2L381.6,366.4L385.0,368.2L388.2,367.6L391.2,368.2L398.7,365.7L399.8,366.4L413.5,359.9L413.4,359.7L408.7,356.5L408.4,350.8L406.3,345.5L407.4,342.5L408.4,335.5L404.0,330.6L404.8,324.8L406.5,319.6L406.6,319.0L396.8,311.5L396.1,307.3L371.1,292.9L370.6,292.9L369.8,292.9L356.3,293.0L351.4,293.0L347.2,293.4L347.2,293.4Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M370.5,291.7L370.8,284.6L374.5,278.5L377.8,274.3L377.2,268.8L374.0,260.5L371.9,258.5L370.8,256.2L369.2,257.8L366.4,259.5L364.1,258.6L356.9,260.6L355.9,259.2L349.5,261.1L349.3,261.5L349.7,261.7L348.6,268.7L351.7,270.0L350.1,274.1L343.1,281.2L341.7,285.3L340.8,295.5L340.7,295.7L341.0,295.7L345.9,293.8L346.9,293.4L347.2,293.4L347.2,293.4L351.4,293.0L356.3,293.0L369.8,292.9L370.6,292.9L370.5,291.7Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M365.1,60.5L362.5,60.2L363.1,65.5L365.6,66.7L365.8,66.7L365.8,66.1L366.2,64.7L365.8,63.3L365.8,61.5L365.5,60.5L365.1,60.5Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/><path d="M482.0,147.2L480.6,147.5L464.8,151.0L458.7,154.7L455.3,160.9L452.1,163.7L447.6,161.9L437.3,161.0L428.6,160.8L427.2,162.0L425.4,169.1L425.9,171.5L425.2,177.2L427.3,179.2L428.9,185.7L429.9,186.7L430.2,190.9L433.2,194.6L435.7,195.4L440.6,194.2L447.9,189.4L457.5,187.1L461.0,184.1L465.4,183.9L467.6,180.9L470.6,178.8L479.7,175.3L487.0,171.2L486.6,167.4L488.5,165.1L491.6,163.7L489.1,159.3L488.6,159.1L482.4,147.9L482.0,147.2Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M334.4,440.2L332.8,440.3L326.6,443.4L323.5,446.8L318.9,449.3L317.1,453.8L310.7,457.5L308.5,463.0L304.7,463.9L300.4,463.8L292.1,460.8L288.3,466.9L285.3,469.6L277.1,471.0L276.4,469.2L274.9,458.7L272.8,457.2L272.5,457.0L272.5,459.8L272.0,481.8L269.2,482.6L266.8,485.0L256.0,483.4L253.5,478.9L249.7,482.8L249.9,483.0L257.3,498.9L260.5,503.8L260.7,509.8L258.4,511.9L264.0,521.2L268.8,523.8L271.1,524.1L281.8,521.4L284.7,519.5L296.4,519.6L298.8,520.4L305.2,519.5L307.4,517.5L310.1,517.9L322.9,510.7L333.1,502.2L335.3,499.9L342.8,489.4L345.9,486.5L349.3,484.4L351.2,481.6L353.9,474.1L354.3,472.5L353.6,472.5L351.0,472.5L350.0,472.3L349.4,472.3L349.3,472.2L348.2,475.4L343.9,474.9L343.5,466.3L344.3,465.4L348.8,466.3L349.0,466.3L348.9,465.8L350.0,457.3L349.3,452.1L348.2,449.8L346.8,442.2L346.8,441.8L346.2,441.4L336.3,439.9L334.4,440.1L334.4,440.2Z M325.4,483.7L330.3,487.1L330.8,488.3L326.2,493.8L324.1,494.0L321.5,497.3L319.9,497.0L316.0,490.3L318.0,489.2L320.6,485.8L325.4,483.7Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M362.3,351.7L352.2,346.2L350.3,346.2L348.3,343.8L348.1,343.3L347.0,343.5L335.5,346.8L331.8,350.7L333.3,354.6L333.2,360.5L331.6,367.6L335.8,372.2L338.7,372.4L340.8,370.9L340.5,379.3L337.7,378.9L326.1,371.5L322.9,366.7L319.9,369.4L314.0,368.3L310.4,364.3L303.7,365.2L303.9,363.5L301.5,361.7L301.2,361.7L301.4,362.6L301.2,372.4L300.1,376.4L287.4,376.4L287.0,396.7L289.1,401.8L294.9,407.2L296.2,408.4L297.6,408.1L305.3,407.6L307.6,408.4L308.7,409.6L310.0,409.9L320.5,410.8L324.8,406.1L330.1,402.0L333.0,400.4L334.7,396.8L342.8,395.1L343.8,395.1L343.7,394.2L342.9,390.6L361.8,384.5L363.2,384.1L362.9,383.6L360.4,380.8L362.1,376.0L364.0,373.9L364.9,362.0L366.1,361.5L365.3,354.7L362.7,352.1L362.7,351.9L362.3,351.7Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M347.8,441.2L355.8,429.7L359.2,425.5L358.1,421.3L360.1,413.9L360.4,406.5L358.4,401.9L353.9,400.7L343.8,396.2L343.8,395.1L342.8,395.1L334.7,396.8L333.0,400.4L330.1,402.0L324.8,406.1L320.5,410.8L310.0,409.9L308.7,409.6L308.6,409.9L311.9,415.5L313.8,420.4L321.4,428.2L322.6,428.2L323.9,432.5L325.6,435.3L332.4,437.5L334.1,439.9L334.4,440.2L334.4,440.1L336.3,439.9L346.2,441.4L346.8,441.8L347.8,441.2Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="558.330197744" padding="0" w="500"><proj id="laea" lat0="1.0" lon0="16.5"/><bbox h="987.37" w="885.8" x="557.1" y="504.56"/><llbbox lat0="-38.0" lat1="40.0" lon0="-20.0" lon1="53.0"/></view></views></metadata><g id="countries"><path d="M225.8,327.2L224.3,327.8L222.5,331.9L224.6,334.4L226.4,340.2L228.5,344.3L227.0,351.3L228.2,355.5L231.7,362.0L230.2,371.4L223.1,379.3L221.4,387.6L218.2,396.9L218.2,403.0L218.0,405.6L223.4,405.3L227.1,403.6L233.3,406.6L237.3,406.5L262.7,406.6L265.6,409.1L276.1,410.0L278.5,410.9L285.0,410.4L294.1,408.8L296.2,408.4L294.9,407.2L289.1,401.8L287.0,396.7L287.4,376.4L300.1,376.4L301.2,372.4L301.4,362.6L301.2,361.7L301.0,361.8L291.1,363.1L289.9,363.9L289.9,358.3L286.6,351.9L287.2,344.1L286.3,336.9L278.1,336.5L278.4,334.3L271.9,335.0L270.9,335.8L269.6,341.5L264.2,341.2L257.5,342.4L254.5,337.9L249.5,327.1L226.2,326.9L225.8,327.2Z M226.2,318.3L226.0,318.2L221.4,318.2L220.9,319.2L218.9,320.9L219.1,321.1L220.0,323.1L220.2,324.1L220.2,326.0L220.3,326.1L222.2,325.9L224.5,319.0L226.1,318.4L226.2,318.3Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M266.4,1.0L266.1,7.9L266.5,10.0L269.8,14.4L269.8,15.0L271.5,13.4L273.5,12.2L274.9,7.9L275.0,7.4L274.9,7.3L271.9,3.1L272.4,0.8L272.5,0.8L272.5,0.5L272.5,0.0L265.8,0.0L265.8,0.0L265.7,0.5L265.7,0.9L266.4,1.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M499.3,97.3L498.7,97.5L498.4,97.2L497.4,94.5L497.3,94.6L497.0,96.5L491.0,105.7L490.1,108.2L487.4,110.0L482.0,109.9L476.7,111.7L473.0,109.3L472.9,109.7L473.3,111.2L480.8,118.8L497.0,119.7L497.2,119.1L497.1,118.0L497.1,110.1L500.0,108.9L498.1,105.9L500.0,103.4L500.0,98.4L499.9,97.9L499.3,97.3Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M408.0,7.3L408.5,7.2L412.1,8.3L413.8,7.8L416.5,11.6L416.9,12.1L417.2,12.1L417.9,11.7L418.8,11.7L418.7,11.1L416.0,7.2L412.3,5.1L409.8,0.0L399.7,0.0L402.9,5.7L404.8,5.4L407.7,7.1L408.0,7.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M408.0,7.3L408.1,7.5L408.4,7.7L408.5,7.8L413.1,11.6L415.7,12.0L416.9,12.1L416.5,11.6L413.8,7.8L412.1,8.3L408.5,7.2L408.0,7.3Z M418.8,11.7L419.2,11.7L425.4,5.6L427.8,7.3L427.1,11.1L432.7,13.4L431.8,10.8L433.2,8.9L432.5,1.9L434.7,0.0L409.8,0.0L412.3,5.1L416.0,7.2L418.7,11.1L418.8,11.7Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M347.3,302.7L344.3,302.8L341.5,305.5L336.9,304.6L336.8,305.0L336.8,305.3L338.2,307.3L338.1,311.8L339.2,316.1L339.4,317.1L341.5,317.1L345.9,312.4L346.5,311.1L347.3,302.9L347.4,302.8L347.3,302.7Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M161.5,203.6L156.8,199.4L154.4,200.2L154.0,202.0L153.8,202.7L153.6,203.1L150.9,206.0L143.6,208.9L143.5,208.9L143.2,209.6L142.4,213.1L146.1,215.9L146.1,218.9L147.7,222.5L147.5,236.9L148.4,241.8L147.3,242.4L148.7,242.1L151.9,241.6L154.8,241.4L155.5,233.6L155.1,232.6L155.7,222.6L158.1,221.7L162.9,213.0L161.6,204.7L161.9,204.2L161.5,203.6Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M138.8,180.9L133.7,180.3L126.0,184.1L124.3,186.2L122.0,185.4L119.1,187.6L118.7,189.5L116.4,189.6L115.9,192.2L110.2,191.9L109.5,195.5L108.1,197.6L102.0,202.1L101.6,206.5L100.3,207.6L100.0,211.6L99.8,212.0L100.2,212.4L107.6,217.6L111.3,215.8L115.2,216.0L118.5,219.2L118.6,219.0L118.6,218.6L118.7,208.4L126.9,208.3L135.4,207.5L136.9,207.9L138.4,208.2L140.6,208.8L141.1,209.1L141.7,208.9L143.5,208.9L143.6,208.9L150.9,206.0L153.6,203.1L153.8,202.7L153.5,202.4L152.8,198.2L148.4,197.5L145.4,194.9L144.8,192.3L142.4,189.9L139.6,184.3L140.1,181.7L140.2,181.4L138.8,180.9Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M285.7,4.0L286.3,4.1L299.4,4.1L303.5,3.2L303.6,0.8L304.3,1.0L304.2,0.8L304.4,0.4L305.2,0.2L305.4,0.0L285.1,0.0L286.0,1.5L285.7,2.3L285.7,3.9L285.7,4.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M308.4,409.5L301.1,411.4L298.2,413.8L295.0,410.8L280.0,412.9L279.4,438.1L272.9,438.1L272.5,456.8L272.5,457.0L272.8,457.2L274.9,458.7L276.4,469.2L277.1,471.0L285.3,469.6L288.3,466.9L292.1,460.8L300.4,463.8L304.7,463.9L308.5,463.0L310.7,457.5L317.1,453.8L318.9,449.3L323.5,446.8L326.6,443.4L332.8,440.3L334.4,440.2L334.1,439.9L332.4,437.5L325.6,435.3L323.9,432.5L322.6,428.2L321.4,428.2L313.8,420.4L311.9,415.5L308.6,409.9L308.7,409.6L308.4,409.5Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M293.3,210.1L291.1,209.6L285.7,212.8L279.4,220.7L276.4,222.6L266.9,224.0L266.6,227.7L264.4,230.1L257.9,230.6L252.7,233.1L250.3,231.6L246.8,233.5L243.7,233.9L243.0,233.8L242.3,235.0L236.6,243.1L237.6,253.7L240.5,258.0L239.8,258.2L247.0,265.9L247.5,269.7L247.8,270.3L248.3,269.4L250.5,262.0L255.5,261.0L264.3,261.7L264.7,261.9L264.6,260.5L265.3,255.6L267.8,252.1L278.8,255.2L287.5,256.5L292.4,255.1L294.1,253.2L297.9,253.6L304.2,251.3L312.5,249.0L320.1,250.5L323.5,249.7L325.5,250.3L325.0,249.8L324.1,246.8L319.8,244.0L317.8,241.0L318.1,239.7L309.9,233.4L310.3,232.7L306.8,229.0L303.7,228.3L303.0,225.8L302.6,225.7L302.0,225.5L299.0,221.0L299.1,217.7L294.1,211.0L293.6,210.1L293.3,210.1Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M114.1,249.5L113.8,249.7L114.7,249.9L114.9,249.6L114.1,249.5Z M83.1,213.4L83.0,213.7L84.2,221.1L82.9,223.2L79.3,231.5L78.9,231.8L79.0,231.9L80.0,235.3L79.2,237.9L79.9,240.7L82.5,241.3L84.4,254.7L85.2,254.6L91.3,251.9L98.0,249.7L109.6,248.9L114.5,248.1L115.3,249.5L115.4,249.6L117.0,248.2L114.1,239.7L117.5,229.9L119.5,228.0L118.2,221.6L118.7,219.4L118.6,219.0L118.5,219.2L115.2,216.0L111.3,215.8L107.6,217.6L100.2,212.4L99.8,212.0L99.6,211.9L96.3,213.5L95.0,213.0L95.0,209.7L92.1,212.0L83.3,213.4L83.1,213.4Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M243.3,233.3L241.4,228.3L238.7,225.0L232.8,219.5L234.5,216.8L244.2,216.6L241.6,214.2L239.9,208.9L240.6,206.0L238.7,199.3L234.6,195.3L233.4,195.3L234.0,198.5L236.5,200.7L236.7,204.6L230.8,210.6L227.5,219.1L226.1,220.1L223.0,226.1L221.8,226.3L218.0,236.6L215.8,239.5L212.5,240.8L210.2,237.4L206.1,237.4L198.1,244.8L195.0,252.9L195.1,252.9L200.1,258.6L204.5,264.6L203.6,268.4L203.5,270.0L204.0,270.7L204.7,271.0L212.5,271.0L214.1,271.0L214.2,270.5L215.7,270.1L226.6,270.4L227.6,270.6L227.7,271.1L229.4,271.1L236.7,270.8L247.5,274.1L247.8,270.4L247.8,270.3L247.5,269.7L247.0,265.9L239.8,258.2L240.5,258.0L237.6,253.7L236.6,243.1L242.3,235.0L243.0,233.8L243.3,233.3Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M323.5,249.7L320.1,250.5L312.5,249.0L304.2,251.3L297.9,253.6L294.1,253.2L292.4,255.1L287.5,256.5L278.8,255.2L267.8,252.1L265.3,255.6L264.6,260.5L264.7,261.9L264.7,263.1L260.9,272.1L259.9,282.4L258.5,288.0L258.7,289.9L248.0,301.3L247.5,310.2L246.5,312.3L239.0,318.8L236.1,319.8L235.1,316.0L230.7,317.1L228.3,319.7L226.3,318.1L226.2,318.3L226.1,318.4L224.5,319.0L222.2,325.9L220.3,326.1L220.5,326.5L221.0,327.1L225.8,326.7L226.2,326.9L249.5,327.1L254.5,337.9L257.5,342.4L264.2,341.2L269.6,341.5L270.9,335.8L271.9,335.0L278.4,334.3L278.1,336.5L286.3,336.9L287.2,344.1L286.6,351.9L289.9,358.3L289.9,363.9L291.1,363.1L301.0,361.8L301.2,361.7L301.5,361.7L303.9,363.5L303.7,365.2L310.4,364.3L314.0,368.3L319.9,369.4L322.9,366.7L326.1,371.5L337.7,378.9L340.5,379.3L340.8,370.9L338.7,372.4L335.8,372.2L331.6,367.6L333.2,360.5L333.3,354.6L331.8,350.7L335.5,346.8L347.0,343.5L348.1,343.3L348.0,342.7L343.9,334.3L339.8,327.7L340.6,326.0L338.9,320.8L339.4,317.4L339.4,317.1L339.2,316.1L338.1,311.8L338.2,307.3L336.8,305.3L336.8,305.0L336.2,304.7L335.7,303.1L337.6,301.3L340.5,295.8L340.7,295.7L340.8,295.5L341.7,285.3L343.1,281.2L350.1,274.1L351.7,270.0L348.6,268.7L349.7,261.7L349.3,261.5L349.1,261.2L342.5,255.7L339.2,254.5L331.0,255.6L325.7,250.8L325.5,250.3L323.5,249.7Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M264.3,261.7L255.5,261.0L250.5,262.0L248.3,269.4L247.8,270.3L247.8,270.4L247.5,274.1L236.7,270.8L229.4,271.1L227.7,271.1L227.7,271.6L231.6,276.2L234.3,276.9L234.2,282.3L231.8,284.8L231.9,287.8L236.0,290.4L234.0,302.5L232.6,303.4L231.1,301.2L224.2,299.5L221.8,302.3L215.8,302.5L216.2,306.0L218.3,309.4L217.6,310.7L213.8,311.4L212.7,313.3L214.4,314.8L217.2,317.9L217.5,319.2L218.8,320.7L218.9,320.9L220.9,319.2L221.4,318.2L226.0,318.2L226.2,318.3L226.3,318.1L228.3,319.7L230.7,317.1L235.1,316.0L236.1,319.8L239.0,318.8L246.5,312.3L247.5,310.2L248.0,301.3L258.7,289.9L258.5,288.0L259.9,282.4L260.9,272.1L264.7,263.1L264.7,261.9L264.3,261.7Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M353.2,42.5L355.5,39.1L350.2,41.4L347.1,41.2L346.3,42.8L346.0,42.7L350.2,42.7L351.8,43.4L353.7,43.0L353.2,42.5Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M345.6,42.6L344.2,43.6L346.4,46.2L353.8,43.1L353.7,43.0L351.8,43.4L350.2,42.7L346.0,42.7L345.6,42.6Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M430.7,203.0L431.2,200.1L432.0,198.5L429.9,195.3L429.8,194.9L427.6,197.0L427.0,197.4L425.2,196.6L425.0,196.8L424.5,197.8L421.7,202.2L428.9,207.1L429.4,207.1L430.1,205.7L430.8,204.5L431.3,203.5L430.7,203.0Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M201.1,32.9L195.9,31.5L196.0,32.3L187.1,33.2L181.5,32.3L175.8,32.1L167.3,33.7L159.2,34.4L154.1,36.7L153.3,37.8L140.4,42.6L139.3,42.4L141.0,47.4L140.6,54.5L141.9,63.0L131.1,64.1L128.4,64.9L126.3,69.8L124.3,70.1L117.9,72.8L115.5,75.4L107.9,76.7L107.6,77.7L96.2,81.7L93.4,83.5L92.4,88.9L92.1,90.6L91.9,91.8L91.7,93.2L92.8,94.0L98.0,98.2L105.4,104.0L112.2,109.3L113.5,110.3L115.3,111.7L126.5,120.9L149.2,138.6L149.2,140.6L152.1,143.2L157.3,146.2L162.0,148.1L162.1,153.4L166.4,153.0L168.5,152.7L170.0,152.4L178.7,150.9L190.6,141.2L217.1,125.5L220.5,123.4L220.0,122.2L212.5,116.3L209.7,116.0L208.2,110.9L204.9,105.9L205.3,104.1L207.8,102.1L207.8,83.5L206.1,78.0L206.7,77.7L206.4,76.1L195.9,53.3L196.3,51.3L200.0,48.5L201.3,45.0L201.3,40.2L203.8,32.8L201.1,32.9Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M358.3,68.3L348.5,70.1L344.7,67.6L339.2,67.1L332.5,69.9L327.5,72.8L319.7,70.6L307.6,68.0L303.5,68.7L303.0,67.9L301.3,70.1L302.3,73.8L301.0,78.2L303.0,84.6L304.3,107.4L305.5,132.0L305.6,133.5L308.0,133.5L363.7,132.0L382.8,131.3L382.8,131.2L378.2,127.1L374.6,125.1L373.5,122.8L372.8,118.4L374.4,118.2L370.2,114.6L367.6,110.2L360.8,100.0L357.2,91.6L351.8,85.8L348.5,80.1L349.0,78.1L354.9,87.1L358.5,90.5L362.6,90.0L364.0,80.8L364.3,80.5L362.2,75.7L361.2,74.0L359.5,70.3L358.8,68.9L358.5,68.4L358.4,68.2L358.3,68.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M385.1,185.4L385.3,185.4L389.5,183.9L392.0,186.0L393.9,180.9L398.2,183.8L401.9,182.3L406.5,183.0L413.4,185.3L424.4,196.1L425.0,196.8L425.2,196.6L427.0,197.4L427.6,197.0L429.8,194.9L429.5,194.1L427.6,193.9L423.5,188.9L419.4,186.2L415.9,181.8L404.3,175.8L402.0,171.2L399.2,162.6L396.8,158.7L391.4,163.0L389.8,165.2L386.8,165.9L386.7,171.0L384.1,179.3L384.8,183.4L385.1,185.4Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M113.4,26.3L119.6,34.4L122.6,33.6L128.7,30.8L137.8,31.4L142.9,30.1L144.0,28.3L147.1,26.3L149.3,26.3L151.6,22.6L156.8,18.4L155.8,17.9L156.7,11.3L162.1,5.4L165.1,3.7L175.2,0.0L122.0,0.0L120.5,1.2L120.1,5.6L115.5,9.7L116.3,13.5L114.3,17.9L114.5,21.0L112.1,23.6L112.0,26.4L113.4,26.3Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M385.1,185.4L384.7,187.3L383.0,196.2L379.7,197.6L377.6,201.7L375.7,208.7L373.3,209.3L371.4,211.8L370.4,219.0L370.4,219.4L370.4,219.6L370.8,225.5L363.5,230.1L364.0,230.9L373.8,237.3L379.3,247.0L379.4,247.1L379.4,247.4L383.0,248.6L382.9,251.9L384.4,254.0L392.5,255.7L399.0,259.9L408.6,261.2L412.0,257.6L417.1,255.3L423.7,257.3L424.7,257.2L424.9,256.9L430.8,254.9L433.0,252.4L439.0,250.1L444.9,250.3L451.5,242.3L462.9,229.4L464.4,227.6L462.1,227.7L437.6,221.2L431.9,215.8L428.4,208.7L429.3,207.4L429.4,207.1L428.9,207.1L421.7,202.2L424.5,197.8L425.0,196.8L424.4,196.1L413.4,185.3L406.5,183.0L401.9,182.3L398.2,183.8L393.9,180.9L392.0,186.0L389.5,183.9L385.3,185.4L385.1,185.4Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M207.2,0.0L207.8,2.7L209.8,3.1L210.8,0.1L207.2,0.0Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M227.6,270.6L226.6,270.4L215.7,270.1L214.2,270.5L214.1,271.0L214.1,272.6L214.1,277.0L212.7,279.1L202.0,278.9L201.9,279.2L200.2,281.8L203.4,285.8L200.0,284.1L199.9,288.5L197.5,290.9L195.8,290.2L200.1,297.4L198.1,295.2L202.6,302.9L207.3,307.1L212.0,312.7L212.7,313.3L213.8,311.4L217.6,310.7L218.3,309.4L216.2,306.0L215.8,302.5L221.8,302.3L224.2,299.5L231.1,301.2L232.6,303.4L234.0,302.5L236.0,290.4L231.9,287.8L231.8,284.8L234.2,282.3L234.3,276.9L231.6,276.2L227.7,271.6L227.7,271.1L227.6,270.6Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M359.3,68.3L359.3,67.8L359.8,66.3L359.4,67.0L358.4,68.2L358.5,68.4L358.8,68.9L359.3,68.3Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M135.4,207.5L126.9,208.3L118.7,208.4L118.6,218.6L118.6,219.0L118.7,219.4L118.2,221.6L119.5,228.0L117.5,229.9L114.1,239.7L117.0,248.2L115.4,249.6L114.9,249.6L114.7,249.9L114.9,249.9L122.3,252.3L128.8,249.4L130.6,249.1L137.9,245.5L141.3,245.5L143.8,243.5L144.3,243.2L141.3,240.6L140.4,238.6L140.6,231.7L140.0,225.7L139.3,224.4L140.5,220.0L139.3,218.5L139.6,214.1L137.3,208.3L136.9,207.9L135.4,207.5Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M61.2,196.7L54.0,196.7L48.5,194.5L46.3,194.3L46.3,194.9L44.6,197.8L45.4,198.7L43.1,201.5L38.7,203.1L36.6,206.4L36.5,207.2L40.3,211.5L45.2,215.1L47.2,220.1L47.3,220.4L50.4,218.6L53.4,214.5L61.1,214.0L64.3,218.4L66.6,224.9L67.1,224.9L67.5,224.9L72.2,226.1L73.0,230.7L74.4,233.9L78.6,231.6L78.9,231.8L79.3,231.5L82.9,223.2L84.2,221.1L83.0,213.7L83.1,213.4L83.3,212.9L81.2,209.2L80.9,205.0L78.4,200.8L72.5,199.7L68.9,198.4L64.5,198.3L62.2,199.7L61.4,197.0L61.6,196.8L61.2,196.7Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M28.6,187.9L29.6,188.8L26.8,190.1L26.7,190.7L32.9,190.3L33.1,189.1L46.0,189.5L44.2,188.0L39.2,186.0L35.3,187.3L28.4,187.0L28.6,187.9Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M46.3,194.3L44.1,194.2L36.7,193.9L32.3,195.4L26.6,195.8L28.3,196.9L30.0,199.1L34.8,199.6L36.8,201.7L34.4,202.3L36.4,205.9L36.6,206.4L38.7,203.1L43.1,201.5L45.4,198.7L44.6,197.8L46.3,194.9L46.3,194.3Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M214.1,271.0L212.5,271.0L204.7,271.0L204.0,270.7L203.5,270.0L203.3,271.7L202.0,275.3L201.3,276.1L202.1,278.7L202.0,278.9L212.7,279.1L214.1,277.0L214.1,272.6L214.1,271.0Z M196.2,259.9L194.3,263.3L195.5,263.6L197.6,260.2L196.2,259.9Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M293.5,42.1L292.8,44.2L298.8,45.0L299.1,45.9L307.5,45.2L304.9,43.3L303.2,43.4L294.9,41.7L293.5,42.1Z M304.3,1.0L303.6,0.8L303.5,3.2L299.4,4.1L286.3,4.1L285.7,4.0L285.3,4.0L279.5,6.7L275.7,7.4L275.0,7.4L274.9,7.9L273.5,12.2L271.5,13.4L269.8,15.0L270.4,15.4L275.8,21.8L278.6,24.0L281.4,23.3L288.5,25.0L287.1,26.2L281.4,23.9L277.2,27.2L280.1,30.1L281.6,34.4L282.6,32.4L285.1,35.5L287.1,34.6L287.9,32.4L286.9,30.6L290.0,28.6L288.7,26.2L291.8,26.6L293.6,27.9L292.2,23.7L284.9,20.1L286.7,19.7L284.4,12.6L284.4,9.6L288.5,12.1L293.9,11.0L290.6,7.8L294.0,6.6L303.2,7.3L303.4,7.5L304.9,5.7L304.6,4.1L304.8,1.1L304.3,1.0Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M463.0,18.4L460.5,20.9L454.6,23.5L452.3,23.8L444.7,21.9L441.7,19.5L436.1,18.8L432.8,13.7L432.7,13.4L427.1,11.1L427.8,7.3L425.4,5.6L419.2,11.7L418.8,11.7L417.9,11.7L417.2,12.1L416.9,12.1L415.7,12.0L413.1,11.6L408.5,7.8L408.4,7.7L408.2,7.7L406.9,7.0L406.2,9.6L404.6,9.8L407.7,16.2L408.7,16.8L412.5,24.4L412.5,24.5L412.5,24.5L418.1,31.8L422.7,32.7L423.7,37.4L420.9,42.6L421.9,45.9L426.9,50.3L427.2,52.2L430.0,52.8L439.0,59.2L439.4,64.8L446.2,71.5L446.5,71.4L448.0,67.5L451.1,69.9L454.8,69.0L465.3,82.8L467.1,84.2L475.1,87.6L482.1,91.3L489.5,91.8L497.0,86.3L500.0,86.9L500.0,16.7L498.4,17.0L491.0,12.3L488.4,11.2L479.2,10.3L478.8,9.6L473.2,9.7L473.3,10.4L462.4,17.3L463.0,18.4Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M412.3,24.4L407.2,24.4L400.8,24.1L399.6,25.8L399.1,26.0L399.1,26.1L396.7,29.7L394.7,30.4L395.6,36.3L395.3,38.8L385.1,51.7L383.6,52.7L384.3,54.2L386.3,58.6L388.0,60.2L387.3,61.0L388.7,61.2L394.8,61.8L407.6,68.0L409.4,69.2L434.5,78.9L435.5,78.5L436.2,77.3L437.8,72.0L439.9,71.1L442.8,71.7L442.8,71.5L445.1,71.6L445.7,71.7L446.2,71.5L439.4,64.8L439.0,59.2L430.0,52.8L427.2,52.2L426.9,50.3L421.9,45.9L420.9,42.6L423.7,37.4L422.7,32.7L418.1,31.8L412.5,24.5L412.5,24.5L412.3,24.4Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M366.6,57.8L366.7,55.7L366.9,55.4L366.3,53.8L366.3,53.4L366.2,53.5L364.4,55.6L364.0,55.9L362.2,56.0L362.1,56.8L361.2,62.1L360.8,64.1L359.9,66.3L359.8,66.3L359.3,67.8L359.3,68.3L358.8,68.9L359.5,70.3L361.2,74.0L362.2,75.7L364.3,80.5L364.7,79.9L365.1,75.5L365.0,73.3L365.8,67.8L365.8,66.7L365.6,66.7L363.1,65.5L362.5,60.2L365.1,60.5L365.5,60.5L365.4,59.0L365.6,58.5L366.3,58.2L366.6,58.1L366.6,57.8Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M244.7,24.9L237.2,26.2L233.7,26.2L230.1,25.3L227.0,28.4L230.7,29.7L234.3,32.0L236.3,32.2L238.3,34.2L241.2,34.9L243.0,32.8L241.9,30.4L244.7,24.9Z M211.6,6.9L209.8,4.8L205.7,7.0L203.9,6.6L204.7,11.7L204.0,17.8L207.3,18.9L207.6,17.6L210.8,17.0L211.4,11.0L212.4,9.5L211.6,6.9Z M225.1,0.0L228.5,3.4L235.3,5.7L240.7,9.0L243.2,12.7L245.4,13.2L248.3,20.1L245.5,26.7L247.4,26.7L250.3,21.6L252.6,20.1L253.5,17.2L251.8,15.9L251.0,12.3L253.0,9.8L257.7,11.3L260.4,14.3L261.2,12.4L258.2,8.9L250.3,5.1L246.8,2.6L248.1,0.8L241.6,0.0L225.1,0.0Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M388.0,60.2L386.3,58.6L384.3,54.2L383.6,52.7L382.2,53.7L373.2,60.6L371.1,60.4L367.2,58.2L366.6,58.1L366.3,58.2L365.6,58.5L365.4,59.0L365.5,60.5L365.8,61.5L365.8,63.3L366.2,64.7L365.8,66.1L365.8,66.7L365.8,67.8L365.0,73.3L365.1,75.5L364.7,79.9L364.8,80.4L364.7,81.3L371.7,82.0L375.0,77.5L379.7,76.0L382.1,72.5L374.9,66.1L386.5,61.9L387.3,61.0L388.0,60.2Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M379.4,247.1L378.2,248.4L373.5,253.3L372.1,254.8L370.8,256.2L371.9,258.5L374.0,260.5L377.2,268.8L377.8,274.3L374.5,278.5L370.8,284.6L370.5,291.7L370.6,292.9L371.1,292.9L396.1,307.3L396.8,311.5L406.6,319.0L406.7,318.8L410.8,312.5L413.5,307.1L418.4,300.8L421.7,298.9L422.7,297.7L418.9,291.8L418.6,265.6L423.9,258.5L424.7,257.2L423.7,257.3L417.1,255.3L412.0,257.6L408.6,261.2L399.0,259.9L392.5,255.7L384.4,254.0L382.9,251.9L383.0,248.6L379.4,247.4L379.4,247.1Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M272.5,0.8L272.5,0.8L273.2,0.9L273.4,0.0L272.5,0.0L272.5,0.5L272.5,0.8Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M442.8,71.7L439.9,71.1L437.8,72.0L436.2,77.3L435.5,78.5L436.7,78.6L441.0,78.8L447.7,81.4L447.3,80.8L443.3,74.2L444.4,74.4L442.8,71.9L442.8,71.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M366.6,53.1L369.7,47.8L367.5,44.8L365.7,45.3L365.8,45.8L364.2,48.0L364.2,49.4L362.4,55.5L362.2,56.0L364.0,55.9L364.4,55.6L366.2,53.5L366.3,53.4L366.6,53.1Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M78.6,231.6L74.4,233.9L73.0,230.7L72.2,226.1L67.5,224.9L67.1,224.9L67.1,225.2L66.8,226.2L58.4,236.0L59.7,237.6L73.8,249.6L79.6,253.0L83.7,254.6L84.4,254.7L82.5,241.3L79.9,240.7L79.2,237.9L80.0,235.3L79.0,231.9L78.9,231.8L78.6,231.6Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M302.8,67.5L302.2,66.4L291.4,64.4L290.1,61.7L284.5,59.8L272.1,64.6L271.0,67.3L269.9,76.3L266.3,77.8L260.4,74.4L255.2,72.4L247.7,71.1L244.4,69.3L243.0,65.1L233.8,60.9L229.6,60.1L227.2,60.7L220.7,58.5L219.8,58.1L219.6,63.2L210.8,69.5L211.2,74.1L207.4,77.4L206.7,77.7L206.1,78.0L207.8,83.5L207.8,102.1L205.3,104.1L204.9,105.9L208.2,110.9L209.7,116.0L212.5,116.3L220.0,122.2L220.5,123.4L223.9,124.3L231.1,126.2L235.2,129.7L240.1,127.1L240.1,127.1L242.5,126.0L246.6,124.1L261.3,131.6L296.4,149.2L299.6,150.8L299.6,149.9L299.5,147.3L306.1,147.2L305.7,136.9L305.6,133.5L305.5,132.0L304.3,107.4L303.0,84.6L301.0,78.2L302.3,73.8L301.3,70.1L303.0,67.9L302.8,67.5Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M33.1,130.8L40.0,130.7L42.9,131.2L48.3,129.9L51.6,125.7L54.5,117.2L55.7,115.7L65.2,109.1L66.8,106.8L69.6,100.5L71.6,100.1L77.6,94.2L84.2,95.7L91.1,94.1L91.3,90.6L92.1,90.6L92.4,88.9L93.4,83.5L96.2,81.7L107.6,77.7L107.9,76.7L115.5,75.4L117.9,72.8L124.3,70.1L126.3,69.8L128.4,64.9L131.1,64.1L141.9,63.0L140.6,54.5L141.0,47.4L139.3,42.4L138.1,42.2L134.6,40.6L125.3,40.8L121.0,36.0L118.6,36.4L114.8,43.0L111.6,47.2L106.2,50.2L101.5,51.7L94.9,56.7L93.6,60.0L91.2,62.4L89.1,68.2L89.1,73.3L81.5,81.0L75.4,84.9L72.5,86.0L66.4,87.0L61.7,94.0L54.8,98.5L49.2,109.5L43.0,114.1L40.3,119.7L34.2,127.4L33.1,130.8Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M472.7,375.2L470.7,372.6L469.5,374.2L468.2,378.7L466.0,382.1L461.7,383.4L461.6,385.8L459.8,388.7L460.3,390.7L457.3,392.6L457.4,391.0L449.9,397.2L449.4,398.7L445.2,398.6L436.4,402.6L436.4,404.0L432.8,409.4L432.5,415.7L434.2,423.8L433.0,428.9L426.4,437.1L424.3,447.8L425.7,452.4L424.7,458.1L426.2,462.7L432.8,467.1L444.9,463.6L450.0,454.3L452.6,448.2L468.0,414.3L469.2,408.2L471.6,404.3L471.8,396.9L475.0,399.9L475.9,393.3L475.7,386.9L474.1,378.4L472.7,375.2Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M272.5,0.8L272.4,0.8L271.9,3.1L274.9,7.3L275.0,7.4L275.7,7.4L279.5,6.7L285.3,4.0L285.7,4.0L285.7,3.9L285.7,2.3L286.0,1.5L285.1,0.0L273.4,0.0L273.2,0.9L272.5,0.8L272.5,0.8Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M166.4,153.0L162.1,153.4L162.0,148.1L157.3,146.2L152.1,143.2L149.2,140.6L149.2,138.6L126.5,120.9L115.3,111.7L113.5,110.3L111.3,110.2L102.4,109.8L101.9,130.4L101.9,153.1L102.3,176.3L80.7,175.5L76.4,174.8L65.9,176.9L61.7,174.6L58.4,180.0L57.3,179.5L57.8,180.6L58.5,184.8L58.0,187.9L61.9,193.0L61.7,196.3L61.6,196.8L61.4,197.0L62.2,199.7L64.5,198.3L68.9,198.4L72.5,199.7L78.4,200.8L80.9,205.0L81.2,209.2L83.3,212.9L83.1,213.4L83.3,213.4L92.1,212.0L95.0,209.7L95.0,213.0L96.3,213.5L99.6,211.9L99.8,212.0L100.0,211.6L100.3,207.6L101.6,206.5L102.0,202.1L108.1,197.6L109.5,195.5L110.2,191.9L115.9,192.2L116.4,189.6L118.7,189.5L119.1,187.6L122.0,185.4L124.3,186.2L126.0,184.1L133.7,180.3L138.8,180.9L140.2,181.4L140.3,181.1L146.3,180.1L147.6,179.1L162.4,178.8L168.5,153.9L168.5,152.7L166.4,153.0Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M265.7,0.9L265.7,0.5L265.8,0.0L265.8,0.0L264.6,0.0L264.8,0.4L265.7,0.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M354.4,472.4L354.5,468.6L353.0,466.7L361.6,460.5L370.4,457.2L373.5,448.0L373.1,437.3L370.7,425.3L383.3,415.9L390.3,409.4L399.7,406.0L406.4,401.9L411.7,395.2L412.9,391.4L412.2,377.7L413.3,370.8L412.8,368.3L413.8,360.6L413.5,359.9L399.8,366.4L398.7,365.7L391.2,368.2L388.2,367.6L385.0,368.2L381.6,366.4L377.5,367.2L376.0,367.2L375.1,367.2L371.7,371.6L372.6,379.6L380.7,388.9L379.8,397.9L375.9,400.8L375.9,403.8L370.5,399.7L369.5,396.8L370.7,386.9L365.1,387.0L363.5,384.3L363.2,384.1L361.8,384.5L342.9,390.6L343.7,394.2L343.8,395.1L343.8,396.2L353.9,400.7L358.4,401.9L360.4,406.5L360.1,413.9L358.1,421.3L359.2,425.5L355.8,429.7L347.8,441.2L346.8,441.8L346.8,442.2L348.2,449.8L349.3,452.1L350.0,457.3L348.9,465.8L349.0,466.3L349.1,466.4L349.5,468.0L349.4,468.5L349.6,470.1L349.4,472.3L350.0,472.3L351.0,472.5L353.6,472.5L354.3,472.5L354.4,472.4Z M374.1,370.9L373.9,370.2L374.2,370.2L374.1,370.9Z M373.7,370.2L373.0,370.3L373.1,370.0L373.7,370.2Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M113.5,110.3L112.2,109.3L105.4,104.0L98.0,98.2L92.8,94.0L91.7,93.2L91.5,94.3L90.3,102.1L69.7,100.8L66.7,118.4L59.2,122.1L58.2,133.0L33.3,131.4L32.1,135.1L32.7,133.5L35.9,136.5L35.0,147.2L35.5,156.3L30.8,167.6L30.4,170.8L32.9,165.9L44.0,165.6L50.8,170.2L52.8,174.4L57.1,179.4L57.3,179.5L58.4,180.0L61.7,174.6L65.9,176.9L76.4,174.8L80.7,175.5L102.3,176.3L101.9,153.1L101.9,130.4L102.4,109.8L111.3,110.2L113.5,110.3Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M374.1,370.9L374.2,370.2L373.9,370.2L374.1,370.9Z M373.7,370.2L373.1,370.0L373.0,370.3L373.7,370.2Z M362.7,351.9L362.7,352.1L365.3,354.7L366.1,361.5L364.9,362.0L364.0,373.9L362.1,376.0L360.4,380.8L362.9,383.6L363.2,384.1L363.5,384.3L365.1,387.0L370.7,386.9L369.5,396.8L370.5,399.7L375.9,403.8L375.9,400.8L379.8,397.9L380.7,388.9L372.6,379.6L371.7,371.6L375.1,367.2L376.0,367.2L375.9,367.0L374.6,365.3L374.1,360.5L372.2,354.4L370.0,352.6L362.8,351.8L362.7,351.9Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M294.1,408.8L285.0,410.4L278.5,410.9L276.1,410.0L265.6,409.1L262.7,406.6L237.3,406.5L233.3,406.6L227.1,403.6L223.4,405.3L218.0,405.6L217.9,407.1L218.3,410.8L223.0,417.1L229.8,430.7L235.7,439.3L237.9,455.4L238.8,457.0L241.0,468.1L242.6,474.5L245.0,478.4L249.0,482.3L249.7,482.8L253.5,478.9L256.0,483.4L266.8,485.0L269.2,482.6L272.0,481.8L272.5,459.8L272.5,457.0L272.5,456.8L272.9,438.1L279.4,438.1L280.0,412.9L295.0,410.8L298.2,413.8L301.1,411.4L308.4,409.5L308.7,409.6L307.6,408.4L305.3,407.6L297.6,408.1L296.2,408.4L294.1,408.8Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M240.1,127.1L235.2,129.7L231.1,126.2L223.9,124.3L220.5,123.4L217.1,125.5L190.6,141.2L178.7,150.9L170.0,152.4L168.5,152.7L168.5,153.9L162.4,178.8L147.6,179.1L146.3,180.1L140.3,181.1L140.2,181.4L140.1,181.7L139.6,184.3L142.4,189.9L144.8,192.3L145.4,194.9L148.4,197.5L152.8,198.2L153.5,202.4L153.8,202.7L154.0,202.0L154.4,200.2L156.8,199.4L161.5,203.6L161.9,204.2L162.3,204.0L165.6,194.8L166.1,192.0L175.3,189.3L182.9,192.9L184.0,194.7L187.8,194.8L190.8,193.2L197.2,196.3L203.1,197.0L209.0,193.4L222.8,194.5L229.1,191.0L230.3,191.0L229.7,188.0L231.8,182.2L238.2,174.1L243.1,168.9L246.2,144.9L242.1,138.0L240.8,131.1L240.1,127.1L240.1,127.1Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M161.9,204.2L161.6,204.7L162.9,213.0L158.1,221.7L155.7,222.6L155.1,232.6L155.5,233.6L154.8,241.4L155.3,241.3L164.6,241.2L169.6,243.9L173.1,248.3L174.4,253.6L179.2,255.5L182.6,253.1L183.7,255.4L193.1,254.3L192.9,251.7L194.9,252.9L195.0,252.9L198.1,244.8L206.1,237.4L210.2,237.4L212.5,240.8L215.8,239.5L218.0,236.6L221.8,226.3L223.0,226.1L226.1,220.1L227.5,219.1L230.8,210.6L236.7,204.6L236.5,200.7L234.0,198.5L233.4,195.3L232.5,194.0L231.4,192.4L230.3,191.0L229.1,191.0L222.8,194.5L209.0,193.4L203.1,197.0L197.2,196.3L190.8,193.2L187.8,194.8L184.0,194.7L182.9,192.9L175.3,189.3L166.1,192.0L165.6,194.8L162.3,204.0L161.9,204.2Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M482.0,147.2L482.4,147.9L488.6,159.1L489.1,159.3L491.6,163.7L492.8,163.0L496.8,161.4L497.4,160.7L500.0,160.3L500.0,135.2L499.6,138.7L482.9,146.8L482.0,147.2Z M497.2,119.1L497.9,119.8L498.4,120.5L500.0,122.6L500.0,108.9L497.1,110.1L497.1,118.0L497.2,119.1Z M497.4,94.5L498.4,97.2L498.7,97.5L499.3,97.3L499.3,96.9L499.3,94.0L497.6,93.5L497.4,94.5Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M112.0,26.4L112.1,23.6L114.5,21.0L114.3,17.9L116.3,13.5L115.5,9.7L120.1,5.6L120.5,1.2L122.0,0.0L111.2,0.0L108.7,6.2L104.8,10.7L102.9,15.0L106.9,17.5L105.7,19.0L104.5,24.1L102.8,26.7L111.5,26.4L112.0,26.4Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M471.3,107.2L471.8,103.6L470.6,99.9L468.3,96.7L466.3,102.2L467.6,106.1L467.5,106.5L468.0,107.3L470.6,107.6L471.3,107.2Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M346.9,293.4L345.9,293.8L341.0,295.7L340.7,295.7L340.5,295.8L337.6,301.3L335.7,303.1L336.2,304.7L336.8,305.0L336.9,304.6L341.5,305.5L344.3,302.8L347.3,302.7L347.4,302.8L347.7,302.7L349.5,301.8L349.3,296.9L346.9,293.5L347.2,293.4L346.9,293.4Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M91.9,91.8L92.1,90.6L91.3,90.6L91.1,94.1L84.2,95.7L77.6,94.2L71.6,100.1L69.6,100.5L66.8,106.8L65.2,109.1L55.7,115.7L54.5,117.2L51.6,125.7L48.3,129.9L42.9,131.2L40.0,130.7L33.1,130.8L33.0,131.1L31.9,134.7L32.1,135.1L33.3,131.4L58.2,133.0L59.2,122.1L66.7,118.4L69.7,100.8L90.3,102.1L91.5,94.3L91.7,93.2L91.9,91.8Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M497.2,119.1L497.0,119.7L480.8,118.8L473.3,111.2L472.9,109.7L472.7,109.7L471.2,109.4L471.4,108.4L471.1,107.8L470.6,107.6L468.0,107.3L467.5,106.5L466.9,106.0L461.7,97.6L460.8,93.7L450.9,85.7L448.2,82.0L447.7,81.4L441.0,78.8L436.7,78.6L435.5,78.5L434.5,78.9L409.4,69.2L407.6,68.0L394.8,61.8L388.7,61.2L387.3,61.0L386.5,61.9L374.9,66.1L382.1,72.5L379.7,76.0L375.0,77.5L371.7,82.0L364.7,81.3L364.3,85.7L364.4,89.7L367.3,90.2L377.3,103.1L382.0,108.5L385.3,115.3L390.3,117.7L391.6,119.0L396.4,126.6L396.8,128.0L403.5,142.4L410.8,147.7L417.4,158.7L419.6,160.1L425.3,168.5L425.4,169.1L427.2,162.0L428.6,160.8L437.3,161.0L447.6,161.9L452.1,163.7L455.3,160.9L458.7,154.7L464.8,151.0L480.6,147.5L482.0,147.2L482.9,146.8L499.6,138.7L500.0,135.2L500.0,122.6L498.4,120.5L497.9,119.8L497.2,119.1Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M305.6,133.5L305.7,136.9L306.1,147.2L299.5,147.3L299.6,149.9L299.6,150.8L299.7,153.8L294.6,177.0L293.5,180.7L289.8,185.0L291.0,187.7L289.0,193.4L286.4,196.7L293.9,207.2L293.8,209.4L293.6,210.1L294.1,211.0L299.1,217.7L299.0,221.0L302.0,225.5L302.6,225.7L302.6,225.7L302.7,225.5L305.3,224.2L307.1,217.5L310.2,214.2L313.7,213.4L319.8,219.9L322.6,218.9L327.6,219.1L329.3,220.9L334.7,219.9L339.8,216.6L339.8,215.6L345.8,216.1L350.9,217.3L353.7,214.3L358.2,207.1L357.9,203.8L356.1,201.8L360.4,201.1L363.3,202.9L363.8,209.9L368.9,214.2L370.4,219.4L370.4,219.4L370.4,219.4L370.4,219.0L371.4,211.8L373.3,209.3L375.7,208.7L377.6,201.7L379.7,197.6L383.0,196.2L384.7,187.3L385.1,185.4L384.8,183.4L384.1,179.3L386.7,171.0L386.8,165.9L389.8,165.2L391.4,163.0L396.8,158.7L396.6,158.2L388.9,153.3L388.0,151.4L385.6,136.9L383.0,132.9L382.8,131.3L363.7,132.0L308.0,133.5L305.6,133.5Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M302.6,225.7L302.6,225.7L303.0,225.8L303.7,228.3L306.8,229.0L310.3,232.7L309.9,233.4L318.1,239.7L317.8,241.0L319.8,244.0L324.1,246.8L325.0,249.8L325.5,250.3L325.7,250.8L331.0,255.6L339.2,254.5L342.5,255.7L349.1,261.2L349.3,261.5L349.5,261.1L355.9,259.2L356.9,260.6L364.1,258.6L366.4,259.5L369.2,257.8L370.8,256.2L372.1,254.8L373.5,253.3L378.2,248.4L379.4,247.1L379.3,247.0L373.8,237.3L364.0,230.9L363.5,230.1L370.8,225.5L370.4,219.6L370.4,219.4L370.4,219.4L370.4,219.4L368.9,214.2L363.8,209.9L363.3,202.9L360.4,201.1L356.1,201.8L357.9,203.8L358.2,207.1L353.7,214.3L350.9,217.3L345.8,216.1L339.8,215.6L339.8,216.6L334.7,219.9L329.3,220.9L327.6,219.1L322.6,218.9L319.8,219.9L313.7,213.4L310.2,214.2L307.1,217.5L305.3,224.2L302.7,225.5L302.6,225.7Z " data-iso="SSD" data-name="S. Sudan" data-pop="8260490.0"/><path d="M57.1,179.4L52.8,174.4L50.8,170.2L44.0,165.6L32.9,165.9L30.4,170.8L30.1,171.5L28.0,174.6L23.8,178.5L25.3,179.2L28.4,186.2L28.4,187.0L35.3,187.3L39.2,186.0L44.2,188.0L46.0,189.5L33.1,189.1L32.9,190.3L26.7,190.7L26.7,191.3L26.5,194.1L26.4,195.5L26.6,195.8L32.3,195.4L36.7,193.9L44.1,194.2L46.3,194.3L48.5,194.5L54.0,196.7L61.2,196.7L61.6,196.8L61.7,196.3L61.9,193.0L58.0,187.9L58.5,184.8L57.8,180.6L57.3,179.5L57.1,179.4Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M47.4,220.8L48.4,224.9L47.2,224.4L49.5,229.0L52.9,232.8L58.1,235.7L58.4,236.0L66.8,226.2L67.1,225.2L67.1,224.9L66.6,224.9L64.3,218.4L61.1,214.0L53.4,214.5L50.4,218.6L47.3,220.4L47.4,220.8Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M468.8,203.9L467.3,203.5L457.9,205.4L456.3,206.8L443.1,210.7L439.4,210.9L432.7,204.5L431.3,203.5L430.8,204.5L430.1,205.7L429.4,207.1L429.3,207.4L428.4,208.7L431.9,215.8L437.6,221.2L462.1,227.7L464.4,227.6L465.3,225.9L470.1,216.9L469.8,213.1L469.1,203.9L468.8,203.9Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M423.3,296.9L425.7,292.5L435.8,281.1L441.6,275.5L445.5,272.5L453.0,267.6L458.5,261.7L465.5,252.8L469.8,245.5L476.3,229.7L481.4,219.0L482.5,210.6L483.8,207.7L483.5,204.6L480.7,198.2L476.6,201.6L469.9,203.8L469.1,203.9L469.8,213.1L470.1,216.9L465.3,225.9L464.4,227.6L462.9,229.4L451.5,242.3L444.9,250.3L439.0,250.1L433.0,252.4L430.8,254.9L424.9,256.9L424.7,257.2L423.9,258.5L418.6,265.6L418.9,291.8L422.7,297.7L423.3,296.9Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M348.8,466.3L344.3,465.4L343.5,466.3L343.9,474.9L348.2,475.4L349.3,472.2L349.4,472.3L349.6,470.1L349.4,468.5L349.5,468.0L349.1,466.4L349.0,466.3L348.8,466.3Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M398.6,25.2L388.5,27.5L382.7,30.2L375.8,29.2L371.8,31.2L367.0,30.7L365.4,37.1L363.8,36.7L363.5,37.2L363.4,39.0L364.4,40.0L365.0,43.8L365.7,45.3L367.5,44.8L369.7,47.8L366.6,53.1L366.3,53.4L366.3,53.8L366.9,55.4L366.7,55.7L366.6,57.8L366.6,58.1L367.2,58.2L371.1,60.4L373.2,60.6L382.2,53.7L383.6,52.7L385.1,51.7L395.3,38.8L395.6,36.3L394.7,30.4L396.7,29.7L399.1,26.1L399.1,26.0L398.6,25.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M296.4,149.2L261.3,131.6L246.6,124.1L242.5,126.0L240.1,127.1L240.8,131.1L242.1,138.0L246.2,144.9L243.1,168.9L238.2,174.1L231.8,182.2L229.7,188.0L230.3,191.0L231.4,192.4L232.5,194.0L233.4,195.3L234.6,195.3L238.7,199.3L240.6,206.0L239.9,208.9L241.6,214.2L244.2,216.6L234.5,216.8L232.8,219.5L238.7,225.0L241.4,228.3L243.3,233.3L243.0,233.8L243.7,233.9L246.8,233.5L250.3,231.6L252.7,233.1L257.9,230.6L264.4,230.1L266.6,227.7L266.9,224.0L276.4,222.6L279.4,220.7L285.7,212.8L291.1,209.6L293.3,210.1L293.6,210.1L293.8,209.4L293.9,207.2L286.4,196.7L289.0,193.4L291.0,187.7L289.8,185.0L293.5,180.7L294.6,177.0L299.7,153.8L299.6,150.8L296.4,149.2Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M141.7,208.9L141.1,209.1L140.6,208.8L138.4,208.2L136.9,207.9L137.3,208.3L139.6,214.1L139.3,218.5L140.5,220.0L139.3,224.4L140.0,225.7L140.6,231.7L140.4,238.6L141.3,240.6L144.3,243.2L145.2,242.8L147.3,242.4L148.4,241.8L147.5,236.9L147.7,222.5L146.1,218.9L146.1,215.9L142.4,213.1L143.2,209.6L143.5,208.9L141.7,208.9Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M462.4,17.3L473.3,10.4L473.2,9.7L478.8,9.6L479.2,10.3L488.4,11.2L491.0,12.3L498.4,17.0L500.0,16.7L500.0,0.0L453.6,0.0L458.7,7.0L462.1,16.8L462.4,17.3Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M203.8,32.8L201.3,40.2L201.3,45.0L200.0,48.5L196.3,51.3L195.9,53.3L206.4,76.1L206.7,77.7L207.4,77.4L211.2,74.1L210.8,69.5L219.6,63.2L219.8,58.1L219.1,57.8L216.6,55.1L213.6,54.8L212.3,50.2L218.0,44.3L217.5,41.7L214.7,39.0L214.9,37.1L218.6,33.5L217.6,32.2L214.0,33.5L207.2,31.1L205.2,32.4L203.8,32.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M363.8,36.7L365.4,37.1L367.0,30.7L371.8,31.2L375.8,29.2L382.7,30.2L388.5,27.5L398.6,25.2L399.1,26.0L399.6,25.8L400.8,24.1L407.2,24.4L412.3,24.4L412.5,24.5L412.5,24.4L408.7,16.8L407.7,16.2L404.6,9.8L406.2,9.6L406.9,7.0L408.2,7.7L408.4,7.7L408.1,7.5L408.0,7.3L407.7,7.1L404.8,5.4L402.9,5.7L399.7,0.0L383.6,0.0L378.9,1.4L376.6,0.8L373.7,1.6L358.5,0.0L336.5,0.0L329.5,4.1L326.9,3.5L321.2,3.5L319.9,4.4L321.8,6.3L324.5,6.6L320.2,9.1L313.0,8.8L311.7,9.9L307.5,9.5L304.6,12.3L304.6,15.8L308.5,15.0L306.6,21.7L307.7,24.3L311.9,25.4L311.7,27.9L314.2,30.7L312.7,32.0L318.3,31.7L314.0,33.7L322.8,33.4L325.4,36.3L332.2,34.3L332.1,32.4L336.6,32.2L345.7,36.9L350.7,35.6L353.8,32.6L358.8,32.1L363.1,33.4L364.0,36.1L363.8,36.7Z M304.3,1.0L304.8,1.1L304.6,4.1L304.9,5.7L303.4,7.5L303.5,7.8L307.6,8.0L311.3,5.6L315.6,4.8L319.4,5.1L313.5,0.0L305.4,0.0L305.2,0.2L304.4,0.4L304.2,0.8L304.3,1.0Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M347.2,293.4L346.9,293.5L349.3,296.9L349.5,301.8L347.7,302.7L347.4,302.8L347.3,302.9L346.5,311.1L345.9,312.4L341.5,317.1L339.4,317.1L339.4,317.4L338.9,320.8L340.6,326.0L339.8,327.7L343.9,334.3L348.0,342.7L348.1,343.3L348.3,343.8L350.3,346.2L352.2,346.2L362.3,351.7L362.7,351.9L362.8,351.8L370.0,352.6L372.2,354.4L374.1,360.5L374.6,365.3L375.9,367.0L376.0,367.2L377.5,367.2L381.6,366.4L385.0,368.2L388.2,367.6L391.2,368.2L398.7,365.7L399.8,366.4L413.5,359.9L413.4,359.7L408.7,356.5L408.4,350.8L406.3,345.5L407.4,342.5L408.4,335.5L404.0,330.6L404.8,324.8L406.5,319.6L406.6,319.0L396.8,311.5L396.1,307.3L371.1,292.9L370.6,292.9L369.8,292.9L356.3,293.0L351.4,293.0L347.2,293.4L347.2,293.4Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M370.5,291.7L370.8,284.6L374.5,278.5L377.8,274.3L377.2,268.8L374.0,260.5L371.9,258.5L370.8,256.2L369.2,257.8L366.4,259.5L364.1,258.6L356.9,260.6L355.9,259.2L349.5,261.1L349.3,261.5L349.7,261.7L348.6,268.7L351.7,270.0L350.1,274.1L343.1,281.2L341.7,285.3L340.8,295.5L340.7,295.7L341.0,295.7L345.9,293.8L346.9,293.4L347.2,293.4L347.2,293.4L351.4,293.0L356.3,293.0L369.8,292.9L370.6,292.9L370.5,291.7Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M365.1,60.5L362.5,60.2L363.1,65.5L365.6,66.7L365.8,66.7L365.8,66.1L366.2,64.7L365.8,63.3L365.8,61.5L365.5,60.5L365.1,60.5Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/><path d="M482.0,147.2L480.6,147.5L464.8,151.0L458.7,154.7L455.3,160.9L452.1,163.7L447.6,161.9L437.3,161.0L428.6,160.8L427.2,162.0L425.4,169.1L425.9,171.5L425.2,177.2L427.3,179.2L428.9,185.7L429.9,186.7L430.2,190.9L433.2,194.6L435.7,195.4L440.6,194.2L447.9,189.4L457.5,187.1L461.0,184.1L465.4,183.9L467.6,180.9L470.6,178.8L479.7,175.3L487.0,171.2L486.6,167.4L488.5,165.1L491.6,163.7L489.1,159.3L488.6,159.1L482.4,147.9L482.0,147.2Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M334.4,440.2L332.8,440.3L326.6,443.4L323.5,446.8L318.9,449.3L317.1,453.8L310.7,457.5L308.5,463.0L304.7,463.9L300.4,463.8L292.1,460.8L288.3,466.9L285.3,469.6L277.1,471.0L276.4,469.2L274.9,458.7L272.8,457.2L272.5,457.0L272.5,459.8L272.0,481.8L269.2,482.6L266.8,485.0L256.0,483.4L253.5,478.9L249.7,482.8L249.9,483.0L257.3,498.9L260.5,503.8L260.7,509.8L258.4,511.9L264.0,521.2L268.8,523.8L271.1,524.1L281.8,521.4L284.7,519.5L296.4,519.6L298.8,520.4L305.2,519.5L307.4,517.5L310.1,517.9L322.9,510.7L333.1,502.2L335.3,499.9L342.8,489.4L345.9,486.5L349.3,484.4L351.2,481.6L353.9,474.1L354.3,472.5L353.6,472.5L351.0,472.5L350.0,472.3L349.4,472.3L349.3,472.2L348.2,475.4L343.9,474.9L343.5,466.3L344.3,465.4L348.8,466.3L349.0,466.3L348.9,465.8L350.0,457.3L349.3,452.1L348.2,449.8L346.8,442.2L346.8,441.8L346.2,441.4L336.3,439.9L334.4,440.1L334.4,440.2Z M325.4,483.7L330.3,487.1L330.8,488.3L326.2,493.8L324.1,494.0L321.5,497.3L319.9,497.0L316.0,490.3L318.0,489.2L320.6,485.8L325.4,483.7Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M326.2,493.8L330.8,488.3L330.3,487.1L325.4,483.7L320.6,485.8L318.0,489.2L316.0,490.3L319.9,497.0L321.5,497.3L324.1,494.0L326.2,493.8Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M362.3,351.7L352.2,346.2L350.3,346.2L348.3,343.8L348.1,343.3L347.0,343.5L335.5,346.8L331.8,350.7L333.3,354.6L333.2,360.5L331.6,367.6L335.8,372.2L338.7,372.4L340.8,370.9L340.5,379.3L337.7,378.9L326.1,371.5L322.9,366.7L319.9,369.4L314.0,368.3L310.4,364.3L303.7,365.2L303.9,363.5L301.5,361.7L301.2,361.7L301.4,362.6L301.2,372.4L300.1,376.4L287.4,376.4L287.0,396.7L289.1,401.8L294.9,407.2L296.2,408.4L297.6,408.1L305.3,407.6L307.6,408.4L308.7,409.6L310.0,409.9L320.5,410.8L324.8,406.1L330.1,402.0L333.0,400.4L334.7,396.8L342.8,395.1L343.8,395.1L343.7,394.2L342.9,390.6L361.8,384.5L363.2,384.1L362.9,383.6L360.4,380.8L362.1,376.0L364.0,373.9L364.9,362.0L366.1,361.5L365.3,354.7L362.7,352.1L362.7,351.9L362.3,351.7Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M347.8,441.2L355.8,429.7L359.2,425.5L358.1,421.3L360.1,413.9L360.4,406.5L358.4,401.9L353.9,400.7L343.8,396.2L343.8,395.1L342.8,395.1L334.7,396.8L333.0,400.4L330.1,402.0L324.8,406.1L320.5,410.8L310.0,409.9L308.7,409.6L308.6,409.9L311.9,415.5L313.8,420.4L321.4,428.2L322.6,428.2L323.9,432.5L325.6,435.3L332.4,437.5L334.1,439.9L334.4,440.2L334.4,440.1L336.3,439.9L346.2,441.4L346.8,441.8L347.8,441.2Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/AS.svg b/plugins/UserCountryMap/svg/AS.svg
index 883ef13149eff074f427512fd2c8cd41f5c4fe5c..0ae36a2fc8d474a237e796ebe48c216486e680dc 100644
--- a/plugins/UserCountryMap/svg/AS.svg
+++ b/plugins/UserCountryMap/svg/AS.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 276" height="276px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 450 276" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="276.168144542" padding="0" w="450"><proj id="laea" lat0="39.5" lon0="104.5"/><bbox h="858.81" w="1404.46" x="297.77" y="525.07"/></view></views></metadata><g class="" id="countries"><path d="M202.3,195.2L196.6,193.8L197.4,192.3L195.2,190.1L191.3,190.1L187.3,192.1L186.2,192.0L180.1,194.8L180.2,194.1L175.5,192.0L173.1,192.3L170.4,195.1L170.0,194.5L162.8,190.6L161.0,191.1L160.2,189.7L155.4,185.2L155.5,184.6L149.6,179.4L149.5,178.7L146.0,179.1L140.7,171.8L139.7,171.6L139.7,167.2L141.2,168.2L142.5,164.7L141.9,163.4L142.6,161.2L142.9,161.1L145.9,160.9L148.4,157.4L152.1,159.2L155.4,158.2L158.6,160.3L166.5,160.2L167.3,159.1L174.6,159.3L177.8,161.3L177.0,164.0L177.8,166.2L177.0,169.8L178.2,171.6L182.0,172.9L184.4,175.5L188.1,176.7L192.1,176.8L194.6,180.5L198.1,181.0L201.3,178.3L202.5,178.2L204.8,180.6L206.2,185.6L206.3,188.2L205.6,193.1L204.5,194.8L202.5,195.3L202.3,195.2Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M134.2,145.5L133.4,145.1L132.7,145.2L133.0,145.9L133.1,145.9L132.7,146.0L125.7,144.6L122.3,146.6L122.4,148.7L121.4,150.4L119.3,151.5L119.2,153.2L116.9,153.0L115.7,155.1L113.6,155.4L110.8,159.3L108.9,159.7L104.3,159.6L103.1,158.8L100.4,159.7L98.5,163.1L91.5,161.9L83.5,156.2L82.6,155.2L83.8,154.6L87.5,151.3L85.4,148.4L88.7,138.9L91.7,137.0L93.4,134.7L93.5,134.4L93.7,134.5L95.5,137.5L98.1,137.7L99.0,136.3L103.6,136.4L105.5,134.1L108.0,134.5L109.1,133.6L110.6,135.3L110.8,135.4L111.7,135.7L112.3,136.1L113.2,136.9L114.0,137.5L113.9,137.6L113.9,137.8L115.6,138.5L121.1,139.1L124.1,136.5L125.5,139.8L124.2,143.9L130.6,143.1L134.3,145.4L134.3,145.5L134.2,145.5Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M32.9,27.0L32.4,28.2L32.0,29.0L31.2,29.7L31.0,29.8L31.0,29.8L29.7,30.4L27.9,33.4L27.9,33.5L27.6,33.6L25.0,34.6L24.1,34.1L22.9,33.9L23.2,33.6L25.0,30.4L26.1,29.5L29.9,27.0L29.8,26.7L32.8,25.6L32.8,25.9L32.9,26.8L32.9,26.8L32.9,27.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M62.4,163.7L61.5,165.8L61.5,165.9L59.5,165.3L57.0,168.2L54.5,171.8L54.2,172.3L53.9,172.5L47.2,166.9L46.2,159.5L46.4,159.4L47.2,161.8L54.4,164.9L55.6,164.1L62.3,161.4L62.3,161.4L61.9,162.9L62.0,163.1L62.3,163.3L62.4,163.7Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M64.2,97.4L63.9,97.1L63.4,97.0L63.3,96.8L63.5,96.5L64.3,93.9L63.5,93.5L62.8,91.6L62.6,91.4L62.6,91.2L62.4,89.4L61.7,88.7L63.4,84.3L63.5,84.2L63.7,84.3L65.4,85.4L67.0,86.6L67.1,86.6L67.1,86.8L65.1,92.3L65.3,94.6L64.4,97.1L64.2,97.4Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M52.7,5.4L52.1,5.5L51.9,5.6L50.7,6.9L50.6,7.1L50.4,7.0L48.5,7.0L47.7,6.7L46.1,7.1L45.6,7.0L45.5,6.9L44.8,6.5L44.2,5.3L42.9,1.9L42.9,1.8L42.9,1.2L43.7,-2.9L44.3,-3.2L42.7,-7.1L42.9,-7.1L43.2,-9.5L46.7,-4.3L46.2,-1.8L50.7,-2.8L51.5,-2.4L51.6,-2.4L51.7,-0.1L53.0,-0.0L52.8,5.3L52.7,5.4L52.7,5.4Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M63.3,96.8L63.0,96.3L62.3,95.1L62.5,91.8L62.5,91.7L62.6,91.5L62.6,91.4L62.8,91.6L63.5,93.5L64.3,93.9L63.5,96.5L63.3,96.8Z M76.0,91.8L76.1,99.9L74.1,98.8L70.6,102.0L69.2,102.2L68.4,103.6L67.4,100.5L69.4,99.2L69.4,97.7L64.4,97.6L64.2,97.4L64.4,97.1L65.3,94.6L65.1,92.3L67.1,86.8L67.1,86.6L67.9,86.6L69.8,90.2L70.6,89.8L71.4,87.4L71.6,87.3L71.8,87.6L71.9,90.8L72.9,92.2L75.9,91.4L76.0,91.8Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M181.1,217.7L181.1,217.9L180.9,220.5L179.7,222.2L179.6,222.2L178.9,220.6L178.4,216.4L177.1,214.0L174.5,212.5L173.9,215.7L168.3,215.8L168.3,215.5L167.3,209.1L167.9,207.9L166.0,204.7L167.7,203.1L166.8,200.2L170.1,199.1L171.7,200.6L174.0,204.1L179.4,205.0L180.9,206.3L179.4,208.8L177.6,208.9L176.9,212.8L180.5,211.0L181.0,217.5L181.1,217.7Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M45.9,45.0L42.3,45.3L41.1,45.3L40.4,47.7L40.2,48.0L39.4,46.7L37.2,44.5L37.1,44.6L37.1,44.2L35.8,45.0L34.4,43.5L31.8,37.5L31.7,37.2L31.8,37.2L32.7,36.6L33.1,36.4L34.1,34.0L34.4,33.2L34.6,33.3L36.4,32.1L36.8,32.6L41.4,29.1L41.5,29.2L41.5,29.5L45.3,38.6L45.9,39.3L46.8,44.4L45.9,45.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M40.3,18.6L40.4,18.7L39.0,19.8L37.8,22.0L35.9,22.3L35.6,22.2L35.6,22.1L33.3,22.0L32.9,21.7L31.5,22.7L31.5,22.6L31.5,22.3L32.0,20.4L37.4,10.6L38.9,11.0L40.3,18.4L40.3,18.6Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M89.4,12.7L89.2,15.8L90.2,16.4L90.1,18.6L86.0,22.4L84.8,24.6L82.6,26.9L82.3,25.4L79.0,28.8L78.9,28.8L78.7,28.5L74.9,27.3L72.7,20.6L68.7,13.9L68.6,13.9L69.0,13.5L71.1,11.4L73.1,11.8L76.4,9.2L77.6,8.3L77.6,8.5L80.6,11.5L82.8,10.8L84.9,11.6L86.4,10.6L86.5,10.5L86.6,10.5L87.5,11.0L87.6,11.5L89.6,12.2L89.6,12.3L89.4,12.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M170.7,194.5L175.1,191.9L178.8,193.4L180.1,194.6L180.1,194.8L181.4,196.8L179.8,198.5L175.2,197.5L172.6,197.8L170.4,195.1L170.7,194.5Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M26.8,79.8L27.8,79.5L28.6,80.9L28.9,82.7L28.8,83.1L28.1,82.5L28.0,81.5L26.8,79.6L26.8,79.8Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M28.8,83.2L25.2,81.2L25.1,80.6L26.7,79.4L26.8,79.6L28.0,81.5L28.1,82.5L28.8,83.1L28.8,83.2Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M57.4,7.8L57.4,7.8L55.2,7.1L54.5,6.7L53.0,5.3L52.7,5.4L52.8,5.3L53.0,-0.0L51.7,-0.1L51.6,-2.4L51.8,-2.6L53.3,-5.8L56.5,-8.6L57.4,-8.4L60.0,-5.4L60.2,-4.0L60.2,-4.0L60.6,-3.0L58.4,1.8L59.7,1.8L58.7,6.3L57.5,7.7L57.4,7.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M-1.4,190.9L-1.6,190.8L-4.8,188.3L-3.6,185.5L-1.3,184.3L-0.8,184.0L-0.6,184.0L-0.0,185.1L0.3,185.1L1.8,184.8L1.8,185.0L1.9,187.5L1.1,188.0L0.2,189.3L0.3,189.8L-0.1,190.1L-0.7,190.5L-1.4,190.9Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M-19.6,27.7L-19.8,27.5L-22.4,30.7L-31.5,38.9L-33.8,39.0L-37.6,47.7L-39.5,55.3L-41.0,54.4L-52.5,47.6L-58.4,45.9L-61.8,38.2L-60.6,36.3L-58.5,28.6L-56.8,23.8L-56.1,23.1L-53.4,14.8L-50.7,7.4L-46.2,-3.6L-38.1,-20.8L-33.0,-30.4L-27.6,-33.2L-26.7,-32.2L-24.3,-27.3L-23.7,-23.4L-22.3,-23.0L-20.7,-19.4L-17.9,-20.1L-16.6,-13.3L-11.9,-17.2L-7.8,-19.7L-4.6,-20.8L-2.8,-19.2L0.1,-14.6L0.8,-10.6L2.2,-6.6L3.7,6.8L4.0,8.1L-0.4,9.7L-3.0,11.6L-5.0,12.2L-8.0,12.0L-18.8,26.8L-19.6,27.7Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M18.7,96.3L18.4,97.2L17.3,99.5L16.9,100.7L15.6,103.7L15.4,103.7L11.1,107.2L9.5,105.7L9.8,102.6L11.8,96.1L9.4,100.7L8.7,105.6L6.4,111.0L3.9,121.7L4.0,125.1L3.4,124.6L1.6,128.4L2.3,134.8L2.3,134.9L-1.7,130.6L-8.5,122.8L-15.3,114.2L-23.1,103.2L-23.8,102.0L-23.2,101.3L-11.0,86.2L-4.0,78.2L-1.6,74.5L2.2,71.1L3.6,70.9L3.4,71.5L6.2,77.5L7.8,84.2L13.7,87.0L15.1,92.3L18.9,95.8L19.0,95.8L18.9,95.9L18.7,96.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M-1.9,156.8L-3.8,165.4L-1.8,170.6L-0.4,176.5L0.7,179.4L1.1,183.5L1.9,184.3L1.8,184.8L0.3,185.1L-0.0,185.1L-0.6,184.0L-0.8,184.0L-0.9,183.4L-2.7,173.7L-6.6,167.7L-8.6,167.0L-9.5,163.8L-11.7,165.7L-14.2,162.6L-14.3,162.6L-13.8,161.4L-12.9,159.0L-10.8,157.3L-7.7,153.4L-6.4,154.3L-1.5,153.9L-1.9,156.8Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M101.9,4.7L98.6,5.3L95.2,7.5L94.2,7.7L94.1,7.8L94.0,7.7L94.1,4.3L94.4,2.7L93.1,1.7L93.3,1.6L97.7,-2.4L100.7,0.2L101.8,4.7L101.9,4.7Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M-0.8,184.0L-1.3,184.3L-3.6,185.5L-4.8,188.3L-1.6,190.8L-1.4,190.9L-1.5,191.1L-2.2,191.4L-0.9,201.3L7.0,211.6L9.3,213.3L10.4,214.0L9.3,214.4L1.3,217.3L-3.3,219.3L-9.4,216.3L-10.9,216.9L-14.2,216.0L-14.6,215.6L-17.3,212.1L-20.1,211.6L-22.3,212.2L-26.4,207.9L-31.6,199.1L-32.5,185.6L-34.9,177.4L-29.5,174.6L-29.5,174.5L-27.1,170.9L-24.7,171.3L-21.9,168.0L-19.9,166.7L-18.2,167.3L-15.0,163.4L-14.3,162.6L-14.2,162.6L-11.7,165.7L-9.5,163.8L-8.6,167.0L-6.6,167.7L-2.7,173.7L-0.9,183.4L-0.8,184.0Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M139.2,-12.7L136.3,-11.9L130.8,-8.5L128.1,-5.8L124.1,-4.3L121.9,-2.3L119.3,-0.9L118.3,1.7L114.8,3.2L105.7,2.1L105.7,2.1L100.7,-4.0L99.8,-4.4L103.8,-9.4L108.9,-11.7L112.4,-12.8L113.2,-11.8L122.0,-10.6L123.6,-11.3L126.2,-14.9L128.0,-15.2L133.1,-18.3L135.9,-22.8L137.1,-21.9L135.2,-19.3L135.6,-16.8L142.8,-15.7L141.8,-13.6L139.3,-12.8L139.2,-12.7Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M26.6,-1.8L24.1,-0.3L21.3,0.3L24.0,-3.2L25.3,-3.4L26.6,-1.8Z M38.1,-14.3L37.6,-14.6L34.0,-13.3L31.5,-11.5L29.6,-9.1L29.6,-9.2L27.2,-10.6L26.9,-13.1L28.0,-17.9L26.7,-19.9L24.3,-19.3L23.3,-20.4L25.5,-29.5L25.5,-30.3L28.3,-34.2L33.2,-34.8L40.1,-37.3L44.3,-40.0L44.5,-41.4L47.3,-46.1L50.5,-48.5L49.6,-43.2L49.6,-40.1L54.1,-42.3L52.0,-37.6L53.6,-37.2L55.7,-34.5L58.6,-34.5L58.9,-33.1L55.3,-28.1L54.8,-26.3L53.4,-25.6L50.1,-16.4L44.8,-15.5L41.6,-17.3L38.8,-17.1L40.0,-16.3L38.2,-14.4L38.1,-14.3Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M18.9,95.9L19.0,95.8L19.8,95.7L20.2,95.6L19.4,96.0L19.2,96.2L18.7,96.3L18.9,95.9Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M71.4,87.4L70.6,89.8L69.8,90.2L67.9,86.6L67.1,86.6L67.0,86.6L65.4,85.4L63.7,84.3L63.5,84.2L63.6,84.1L61.3,79.9L60.9,79.0L61.8,78.8L64.1,74.9L63.8,74.1L63.5,70.7L63.4,69.9L64.9,70.9L65.7,73.7L71.7,84.1L70.9,85.1L71.6,87.2L71.6,87.3L71.4,87.4Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M33.6,46.4L32.0,42.0L30.7,40.9L29.7,43.6L28.0,41.6L28.5,38.7L26.9,39.8L23.7,43.7L23.1,42.9L21.1,48.7L20.7,47.1L18.1,48.0L17.3,49.2L15.2,49.1L16.2,46.7L15.0,47.0L16.9,44.6L17.8,42.1L20.4,42.8L20.3,46.4L21.3,46.6L20.7,42.6L19.8,41.5L20.4,39.3L22.8,34.3L22.9,33.9L24.1,34.1L25.0,34.6L27.6,33.6L27.9,33.5L28.0,33.8L29.1,35.3L31.6,37.0L31.7,37.2L31.8,37.5L34.4,43.5L35.8,45.0L37.1,44.2L37.1,44.6L37.2,44.9L35.6,45.9L34.8,46.7L33.5,46.6L33.6,46.4Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M259.9,216.6L260.2,216.4L260.3,216.4L260.9,216.4L260.9,216.4L259.5,217.0L259.9,216.7L259.9,216.6Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M32.0,20.4L31.5,22.3L31.5,22.6L31.3,22.7L31.2,22.9L31.1,23.2L31.3,22.4L32.1,18.4L31.9,20.1L32.0,20.4Z M44.1,15.9L44.0,15.9L42.3,17.3L42.0,18.3L40.4,18.5L40.3,18.6L40.3,18.4L38.9,11.0L37.4,10.6L32.1,19.3L33.4,15.0L38.7,6.4L38.8,3.4L38.9,3.5L39.7,7.9L42.8,7.3L44.5,8.5L44.5,8.8L44.5,9.0L42.8,13.5L42.8,13.9L44.1,15.9L44.1,15.9Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M56.1,18.0L55.6,18.6L55.6,19.1L55.0,20.4L54.9,20.5L54.8,20.5L52.5,19.6L47.1,20.3L46.0,18.7L45.9,18.7L45.9,18.6L45.2,16.9L44.5,16.3L44.2,15.9L44.1,15.9L44.1,15.9L42.8,13.9L42.8,13.5L44.5,9.0L44.5,8.8L44.6,8.7L45.2,7.9L45.7,7.5L45.6,7.0L46.1,7.1L47.7,6.7L48.5,7.0L50.4,7.0L50.6,7.1L50.6,7.1L50.9,11.3L52.0,11.2L55.2,14.0L55.9,17.7L55.9,17.8L56.1,18.0Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M145.8,178.4L141.5,182.6L142.5,183.9L151.2,191.1L155.6,192.4L162.5,197.2L163.6,197.4L167.5,196.1L168.0,192.5L168.0,192.3L169.7,191.9L170.5,192.3L170.2,194.9L170.4,195.1L172.6,197.8L175.2,197.5L179.8,198.5L181.4,196.8L180.1,194.8L180.4,194.8L183.8,193.9L186.0,192.1L191.5,190.5L195.9,189.9L196.9,190.9L196.9,194.1L199.9,195.0L200.0,195.1L198.4,197.2L191.8,200.7L189.4,205.9L189.8,206.6L187.0,210.8L185.0,210.3L183.1,217.1L181.3,217.6L181.1,217.7L181.0,217.5L180.5,211.0L176.9,212.8L177.6,208.9L179.4,208.8L180.9,206.3L179.4,205.0L174.0,204.1L171.7,200.6L170.1,199.1L166.8,200.2L167.7,203.1L166.0,204.7L167.9,207.9L167.3,209.1L168.3,215.5L168.1,216.1L164.7,216.7L164.1,215.9L159.9,217.5L157.0,221.6L154.3,222.6L154.0,221.7L148.1,226.9L146.3,227.4L140.9,230.1L139.7,232.3L136.9,232.1L134.3,233.5L132.7,233.4L131.1,242.7L130.3,245.2L127.8,249.1L127.4,253.9L125.7,253.6L123.5,256.0L123.7,256.9L120.3,257.8L118.3,260.1L115.3,258.4L113.4,253.8L111.8,244.3L110.2,240.3L109.6,232.6L108.5,227.2L107.5,225.3L107.8,214.1L108.4,213.3L108.0,209.8L109.7,206.2L110.2,203.1L109.9,200.7L108.9,200.0L108.2,202.7L102.1,203.9L98.3,197.1L98.5,195.4L102.2,196.2L103.8,194.6L101.0,194.8L98.2,192.5L96.9,189.1L97.0,188.6L99.6,187.7L102.8,189.6L107.5,189.1L107.2,186.9L104.8,179.1L109.9,176.2L112.7,177.6L114.4,176.9L123.1,171.3L126.0,168.5L128.9,163.8L126.8,159.8L129.6,154.3L133.5,156.8L138.1,155.9L138.2,155.7L138.7,155.6L140.1,155.2L140.6,155.1L140.9,155.0L141.0,155.0L141.3,156.1L141.6,158.9L143.0,161.0L142.4,161.3L142.3,167.6L139.7,166.9L139.7,171.5L143.7,176.2L145.8,178.1L145.8,178.4Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M63.3,96.8L63.4,97.0L63.9,97.1L64.2,97.4L64.4,97.6L69.4,97.7L69.4,99.2L67.4,100.5L68.4,103.6L68.3,103.7L68.8,110.7L71.0,115.2L75.5,117.2L77.6,117.0L77.8,116.4L85.3,117.7L87.9,119.4L89.4,122.4L91.7,124.9L92.9,129.3L94.9,130.5L93.5,134.3L93.5,134.4L93.4,134.7L91.7,137.0L88.7,138.9L85.4,148.4L87.5,151.3L83.8,154.6L82.7,155.1L82.6,155.2L82.8,156.2L83.6,161.7L85.3,165.1L85.5,168.5L84.4,170.8L83.5,170.3L79.8,170.6L77.7,173.8L77.5,173.8L65.8,163.0L65.9,162.0L62.6,157.2L59.7,157.4L56.6,154.6L52.4,144.8L53.3,134.9L51.5,133.9L51.1,131.7L49.0,132.8L48.8,132.8L48.8,127.3L50.9,124.8L50.0,112.5L51.0,111.4L54.3,109.7L56.1,107.4L54.8,105.2L56.1,100.0L56.1,100.0L56.2,100.0L60.3,91.0L62.5,91.6L62.5,91.7L62.5,91.8L62.3,95.1L63.0,96.3L63.3,96.8Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M56.1,100.0L54.8,105.2L56.1,107.4L54.3,109.7L51.0,111.4L50.0,112.5L50.9,124.8L48.8,127.3L48.8,132.8L48.5,132.7L48.3,132.4L47.5,131.4L47.4,131.5L46.5,130.2L45.3,129.8L42.6,131.5L41.8,131.7L41.3,131.5L35.7,117.5L33.6,108.3L31.8,105.5L31.4,104.9L32.0,104.8L32.1,103.5L33.3,100.8L33.7,99.8L34.7,100.0L43.8,98.9L47.4,95.2L50.9,95.2L50.9,95.2L51.1,95.3L52.3,95.1L54.3,97.9L56.1,99.9L56.1,100.0L56.1,100.0Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M25.8,94.9L25.4,94.7L25.2,94.8L24.5,95.5L24.4,95.3L21.6,96.7L21.8,98.2L21.9,98.3L21.5,98.8L18.9,100.9L17.9,101.9L15.9,103.6L15.6,103.7L16.9,100.7L17.3,99.5L18.4,97.2L18.7,96.3L19.2,96.2L19.4,96.0L20.2,95.6L20.2,95.6L21.4,95.1L22.5,94.4L25.1,92.5L25.5,92.2L26.1,92.9L26.3,93.0L27.8,92.9L27.9,92.9L27.7,93.0L27.2,93.9L27.0,94.0L26.1,94.8L25.9,95.0L25.8,94.9Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M13.4,25.6L10.0,26.3L8.9,27.8L7.5,27.8L7.5,26.1L9.1,18.2L11.1,18.6L11.1,20.7L13.4,25.6Z M19.3,2.6L13.5,5.8L11.5,4.6L12.7,2.4L15.9,0.8L18.8,-1.4L20.4,0.9L19.3,2.6Z M42.9,1.8L42.6,1.8L41.9,1.4L40.7,2.6L39.3,3.7L39.5,3.8L38.0,0.3L34.1,2.5L31.0,8.3L28.0,11.6L27.2,13.1L24.4,24.3L22.8,28.8L21.6,29.2L22.9,23.9L21.2,23.8L18.9,26.9L17.2,27.6L12.9,27.6L12.6,26.7L16.6,25.5L19.9,21.5L21.5,17.7L22.6,11.4L27.6,0.7L30.9,-1.8L32.6,-6.9L29.9,-8.5L29.6,-9.1L31.5,-11.5L34.0,-13.3L37.6,-14.6L38.1,-14.3L38.0,-14.1L40.3,-11.4L39.1,-9.8L40.6,-7.6L42.2,-6.9L42.7,-7.1L44.3,-3.2L43.7,-2.9L42.9,1.2L42.9,1.8Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M30.8,105.0L25.1,101.9L24.8,107.7L22.4,108.2L20.5,106.9L17.4,107.5L15.4,104.3L15.8,103.9L15.9,103.6L17.9,101.9L18.9,100.9L21.5,98.8L21.9,98.3L22.2,98.1L22.9,97.6L23.4,96.8L24.2,96.1L24.5,95.5L25.2,94.8L25.4,94.7L25.8,94.9L25.9,95.0L26.1,95.3L26.3,97.9L26.9,98.8L32.9,99.7L33.7,99.8L33.3,100.8L32.1,103.5L32.0,104.8L31.4,104.9L30.8,105.0Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M311.0,162.3L312.8,161.9L312.5,163.2L313.9,169.5L312.2,172.1L310.0,171.7L310.4,166.6L308.5,165.5L307.9,167.3L307.1,164.6L308.6,162.0L311.0,162.3Z M320.0,156.6L320.9,156.4L320.6,160.2L317.8,161.1L316.5,164.1L315.0,161.8L318.7,156.7L320.0,156.6Z M329.4,122.0L334.0,127.1L334.2,133.1L333.8,134.3L336.0,142.6L336.7,143.2L335.7,147.8L335.2,145.0L334.6,147.2L331.5,148.7L331.0,151.0L326.5,150.8L325.0,158.1L324.2,158.1L322.8,154.1L321.6,154.5L313.6,158.9L313.8,160.4L309.8,161.1L310.4,159.2L314.9,152.9L318.0,151.9L320.6,150.1L323.2,149.4L322.8,148.2L324.3,143.2L325.6,143.8L326.8,142.0L329.2,136.9L329.4,135.7L328.5,129.1L328.0,129.2L327.4,123.5L329.4,122.0Z M331.2,108.7L333.9,108.1L334.4,106.0L334.9,108.4L337.1,109.9L333.5,113.8L333.5,117.0L329.0,116.8L325.4,118.8L328.3,120.7L327.2,121.0L326.5,123.1L323.9,119.1L324.7,116.6L324.0,115.8L326.5,114.3L323.6,106.6L331.2,108.7Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M140.6,155.1L140.1,155.2L138.7,155.6L138.2,155.7L138.2,155.4L138.1,154.3L138.1,153.8L138.0,153.4L138.3,153.7L139.4,154.5L139.9,154.7L140.7,155.0L140.9,155.0L140.6,155.1Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M180.9,109.4L180.7,109.3L178.3,111.2L175.8,111.9L175.0,115.6L172.4,116.7L167.8,115.0L164.8,119.6L164.6,121.8L162.8,120.3L158.1,120.4L157.9,127.6L155.4,131.3L155.3,131.3L155.0,130.8L152.8,128.2L147.6,125.7L142.1,124.1L138.3,122.3L135.8,123.2L134.3,121.8L131.9,120.9L130.3,122.1L130.3,122.4L130.0,122.4L124.0,123.5L121.8,124.9L117.8,121.7L118.0,117.9L117.2,117.5L119.1,114.0L117.2,109.8L116.0,109.8L113.1,108.0L110.1,106.9L109.3,102.9L106.0,94.6L99.3,92.9L91.7,104.9L91.3,105.7L91.2,105.6L90.0,105.1L89.4,99.5L84.3,98.4L84.5,98.0L86.8,95.0L85.0,91.6L85.7,85.9L87.6,86.0L88.8,87.5L88.8,85.1L90.5,84.5L94.1,87.4L93.8,85.9L96.1,84.4L97.5,81.5L94.6,78.4L88.7,77.4L88.6,77.6L90.2,71.3L88.6,69.4L89.7,65.9L96.3,61.6L96.8,65.1L98.7,63.0L105.6,62.5L108.1,64.7L108.1,65.7L111.7,73.4L115.5,73.6L115.9,74.7L118.1,75.4L118.8,77.8L123.7,79.9L124.3,77.3L127.7,72.2L129.8,72.9L128.7,71.1L130.4,68.8L135.8,71.0L144.6,72.8L146.2,72.3L149.5,73.2L151.4,75.7L150.3,78.4L154.6,81.4L154.0,83.2L155.9,83.9L161.4,84.0L163.2,87.3L166.1,98.1L167.0,97.0L168.3,99.3L170.7,100.3L172.2,100.0L176.2,106.1L178.4,107.2L179.9,106.4L180.9,109.2L180.9,109.4Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M155.3,131.6L145.8,133.4L144.5,133.1L142.3,135.0L138.4,133.1L133.9,135.8L133.6,135.8L133.5,135.7L129.4,135.2L127.9,133.0L121.8,130.7L122.5,129.0L127.3,130.0L127.4,129.9L127.5,129.9L129.5,131.0L134.1,130.0L129.6,126.9L129.5,123.4L130.4,122.3L130.3,122.4L130.3,122.1L131.9,120.9L134.3,121.8L135.8,123.2L138.3,122.3L142.1,124.1L147.6,125.7L152.8,128.2L155.0,130.8L155.3,131.3L155.3,131.6Z M127.5,131.5L127.1,130.5L127.2,131.0L127.5,131.5Z M126.1,131.2L125.5,130.8L125.6,131.0L126.1,131.2Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M224.0,264.5L221.6,264.6L221.6,262.5L219.6,263.0L218.8,259.9L218.8,260.0L216.4,252.9L218.8,250.7L221.3,249.6L227.6,250.0L227.7,249.9L227.7,250.0L231.1,251.5L233.9,249.9L236.6,248.5L236.8,248.4L236.8,248.6L237.2,252.9L236.5,257.8L232.3,260.1L230.8,260.1L230.0,262.8L228.5,263.0L224.7,265.0L224.0,264.5Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M298.5,146.9L302.8,153.1L303.3,158.0L296.4,162.6L294.5,160.1L295.1,157.7L292.9,153.4L293.9,151.8L293.0,150.1L293.0,150.0L293.7,147.9L297.3,145.4L298.5,146.9Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M33.4,31.4L31.9,29.9L31.0,29.9L31.0,29.8L31.2,29.7L32.0,29.0L32.4,28.2L32.9,27.0L32.9,26.8L33.0,26.8L33.5,26.3L33.7,26.3L34.0,26.6L34.2,26.9L34.4,27.1L35.8,26.6L35.8,28.0L33.5,31.3L33.4,31.4L33.4,31.4Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M45.6,137.7L43.6,136.1L43.6,135.6L42.3,132.2L41.8,131.7L42.6,131.5L45.3,129.8L46.5,130.2L47.4,131.5L47.3,131.7L47.0,133.3L46.6,132.8L45.7,137.2L45.6,137.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M216.5,219.1L219.3,221.5L219.0,223.4L224.4,224.9L224.5,226.4L226.6,228.0L222.8,230.9L227.3,233.2L227.5,234.5L232.8,240.1L232.9,241.0L236.2,243.2L235.3,244.2L236.7,247.9L236.8,248.4L236.6,248.5L233.9,249.9L231.1,251.5L227.7,250.0L227.7,249.9L227.9,249.8L229.0,247.2L228.5,243.6L226.0,239.4L226.2,238.5L222.9,234.6L220.7,234.2L219.6,235.3L219.6,235.2L219.6,235.3L219.6,235.3L217.2,235.8L215.6,235.1L212.0,237.6L212.8,231.9L211.7,229.4L209.6,229.1L208.6,226.7L208.6,226.5L208.6,226.3L210.3,224.3L210.2,224.2L212.3,222.1L212.5,221.8L212.7,222.0L215.0,223.2L214.9,218.2L216.1,218.6L216.3,218.7L216.5,219.1Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M27.8,92.9L26.3,93.0L26.1,92.9L25.5,92.2L25.8,92.1L29.0,90.3L29.7,89.7L31.2,89.5L31.4,89.2L32.1,89.8L31.5,92.0L28.1,92.9L27.9,92.9L27.8,92.9Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M-23.8,102.0L-25.1,103.7L-27.7,107.2L-28.9,109.0L-32.2,107.7L-32.5,105.4L-34.7,75.2L-34.7,69.0L-39.5,65.8L-38.8,62.1L-39.2,57.4L-39.5,55.3L-37.6,47.7L-33.8,39.0L-31.5,38.9L-22.4,30.7L-19.8,27.5L-19.6,27.7L-19.3,27.9L-17.1,28.5L-14.8,26.3L-10.4,28.3L-7.7,26.3L-7.8,26.9L-8.0,31.2L-7.1,34.5L-7.7,40.9L-9.6,43.4L-9.9,45.8L-9.1,50.0L-9.4,57.8L-7.9,58.9L-3.5,55.6L-1.9,54.9L3.1,58.8L3.0,62.9L4.1,69.9L3.7,70.7L3.6,70.9L2.2,71.1L-1.6,74.5L-4.0,78.2L-11.0,86.2L-23.2,101.3L-23.8,102.0Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M127.7,256.0L131.3,260.3L133.9,267.3L132.9,270.1L127.0,270.8L125.7,267.3L125.9,262.5L127.0,260.3L127.7,256.0Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M80.9,0.5L80.9,0.4L81.4,0.4L81.8,0.4L81.2,0.5L80.9,0.5Z M86.5,10.5L86.4,10.6L84.9,11.6L82.8,10.8L80.6,11.5L77.6,8.5L77.6,8.3L77.6,8.2L78.3,7.8L78.8,6.0L78.6,6.0L78.8,5.8L79.6,5.3L80.5,5.1L81.0,1.1L81.1,1.1L81.3,0.9L83.0,-0.3L83.8,-0.8L84.0,-0.9L86.0,0.5L87.4,7.8L86.5,10.4L86.5,10.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M94.1,8.0L93.1,9.4L92.3,9.6L89.8,12.2L89.6,12.3L89.6,12.2L87.6,11.5L87.5,11.0L86.6,10.5L86.5,10.5L86.5,10.4L87.4,7.8L86.0,0.5L84.0,-0.9L84.7,-1.3L90.3,-2.5L89.2,2.3L92.8,1.8L93.1,1.7L94.4,2.7L94.1,4.3L94.0,7.7L94.1,7.8L94.1,8.0Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M258.3,217.9L258.3,217.9L258.1,218.0L258.1,218.0L258.1,218.0L258.1,218.0L258.1,217.9L258.2,217.8L258.3,217.9Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M52.1,38.6L56.5,35.2L57.0,34.5L59.9,28.3L59.8,28.1L60.0,28.0L61.7,30.3L61.6,34.2L58.6,39.1L52.2,38.9L52.0,38.9L52.1,38.6Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M34.1,34.0L33.1,36.4L32.7,36.6L31.8,37.2L31.7,37.2L31.6,37.0L29.1,35.3L28.0,33.8L27.9,33.5L27.9,33.4L29.7,30.4L31.0,29.8L31.0,29.8L31.0,29.9L31.9,29.9L33.4,31.4L33.4,31.4L33.4,31.6L33.6,31.8L34.4,33.1L34.4,33.2L34.1,34.0Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M202.6,195.4L204.5,197.9L204.6,201.8L199.8,209.7L200.0,212.1L202.2,211.3L204.5,211.6L204.2,212.9L205.7,215.5L205.8,219.4L208.2,220.0L208.1,220.9L210.8,222.0L212.6,221.7L212.5,221.8L212.3,222.1L210.2,224.2L210.3,224.3L208.6,226.3L208.6,226.5L208.2,226.2L204.4,227.4L204.0,228.4L201.0,228.2L198.0,233.0L201.1,238.4L202.6,241.7L202.0,245.2L200.5,245.9L201.8,249.2L203.5,250.9L204.2,255.6L205.6,259.3L202.2,263.3L201.8,265.2L201.6,265.2L200.9,263.3L201.9,256.2L201.1,252.5L199.0,247.1L198.9,244.9L196.9,238.5L194.7,240.2L192.3,241.2L187.0,242.1L187.3,239.8L185.3,241.1L187.2,235.7L182.3,224.2L179.9,222.5L179.7,222.2L180.9,220.5L181.1,217.9L181.1,217.7L181.3,217.6L183.1,217.1L185.0,210.3L187.0,210.8L189.8,206.6L189.4,205.9L191.8,200.7L198.4,197.2L200.0,195.1L200.1,194.9L201.6,194.6L202.0,194.7L202.4,195.3L202.6,195.4Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M35.6,22.2L34.7,24.3L34.7,24.7L34.3,26.8L34.2,26.9L34.0,26.6L33.7,26.3L33.5,26.3L33.0,26.8L32.9,26.8L32.9,26.8L32.8,25.9L32.8,25.6L29.8,26.7L30.0,26.1L30.8,24.6L31.0,23.6L31.1,23.3L31.1,23.2L31.2,22.9L31.3,22.7L31.5,22.6L31.5,22.7L32.9,21.7L33.3,22.0L35.6,22.1L35.6,22.2L35.6,22.2Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M255.8,109.4L255.2,117.4L256.0,116.6L259.9,115.5L266.3,119.7L263.5,119.8L259.9,121.1L259.8,122.0L255.8,126.2L252.7,126.9L250.4,129.6L247.6,129.2L245.3,132.9L245.8,133.3L242.1,138.2L239.4,139.6L231.6,140.5L227.4,142.7L225.0,142.3L216.9,139.8L210.4,139.1L203.9,137.8L201.5,137.9L198.4,131.4L196.2,129.7L192.5,127.6L190.8,127.4L187.0,124.9L188.3,122.7L188.1,119.1L187.2,116.2L182.2,111.8L182.2,109.6L182.2,109.4L182.2,109.4L183.4,108.5L187.4,108.0L188.7,106.8L194.3,105.3L196.3,105.8L199.9,108.8L207.6,109.9L208.8,109.4L208.4,105.5L211.5,101.6L215.1,103.3L219.5,107.4L222.8,109.8L226.9,108.5L233.8,110.7L235.6,112.7L240.0,112.9L244.5,111.7L249.2,108.1L253.2,108.9L255.8,108.6L255.9,108.8L255.8,109.4Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M215.9,280.9L219.7,284.5L220.8,287.8L221.0,293.8L222.1,294.6L224.0,299.0L220.2,298.4L215.2,295.7L209.4,289.1L208.1,282.3L207.3,280.2L207.1,279.7L211.0,280.9L210.6,282.4L215.2,280.7L215.9,280.9Z M275.1,276.3L278.7,277.2L278.5,278.8L280.1,278.1L285.3,280.1L281.4,282.0L282.8,283.9L278.2,285.4L271.8,285.5L271.0,286.2L270.4,290.0L267.8,295.2L266.1,296.8L263.2,298.0L260.1,297.1L258.2,297.2L250.5,300.2L246.5,297.7L249.3,297.2L252.2,297.6L254.9,292.6L260.3,290.9L265.0,285.7L266.5,287.2L268.6,285.7L272.5,278.7L275.1,276.3Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M145.9,178.7L147.3,178.1L149.4,178.6L153.5,184.3L155.3,184.5L155.5,185.8L159.0,189.1L165.2,192.1L167.7,192.4L168.0,192.5L167.5,196.1L163.6,197.4L162.5,197.2L155.6,192.4L151.2,191.1L142.5,183.9L141.5,182.6L145.8,178.4L145.9,178.7Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M61.4,167.1L62.3,171.4L66.0,174.8L67.2,179.9L68.3,181.2L61.0,186.8L59.2,186.2L56.9,191.0L52.6,190.5L50.9,192.3L48.3,191.3L44.3,193.2L43.2,192.2L39.3,191.3L38.5,191.2L38.5,188.3L38.3,188.0L38.5,180.6L38.6,180.1L39.1,180.2L49.4,182.1L53.1,177.5L54.2,172.9L54.2,172.3L54.5,171.8L57.0,168.2L59.5,165.3L61.5,165.9L61.4,167.1Z M62.3,163.3L62.0,163.1L61.9,162.9L62.3,161.4L62.8,161.0L63.4,161.8L62.4,163.1L62.3,163.3Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M138.1,153.8L138.1,154.3L138.2,155.4L138.2,155.7L138.1,155.9L133.5,156.8L129.6,154.3L126.8,159.8L128.9,163.8L126.0,168.5L123.1,171.3L114.4,176.9L112.7,177.6L109.9,176.2L104.8,179.1L107.2,186.9L107.5,189.1L102.8,189.6L99.6,187.7L97.0,188.6L96.8,188.8L94.5,186.2L93.4,182.8L93.2,179.4L87.0,178.2L77.6,173.9L77.7,173.8L79.8,170.6L83.5,170.3L84.4,170.8L85.5,168.5L85.3,165.1L83.6,161.7L82.8,156.2L82.6,155.2L83.5,156.2L91.5,161.9L98.5,163.1L100.4,159.7L103.1,158.8L104.3,159.6L108.9,159.7L110.8,159.3L113.6,155.4L115.7,155.1L116.9,153.0L119.2,153.2L119.3,151.5L121.4,150.4L122.4,148.7L122.3,146.6L125.7,144.6L132.7,146.0L133.1,145.9L133.3,145.9L136.5,148.9L136.6,152.3L137.9,153.3L138.0,153.4L138.1,153.8Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M310.8,260.5L311.7,263.2L312.6,263.4L313.9,268.2L312.9,270.2L310.8,268.3L309.5,271.0L310.9,273.5L309.8,275.2L305.8,273.9L304.0,270.4L303.9,268.6L301.3,269.8L298.1,268.9L296.3,272.5L295.5,271.5L299.4,266.9L299.9,265.7L302.4,265.1L304.0,266.2L306.5,262.7L309.0,262.1L308.3,259.6L310.8,260.5Z M299.6,263.6L296.5,261.7L298.1,259.9L298.3,256.8L300.4,257.6L299.5,261.6L299.6,263.6Z M300.4,262.0L300.3,260.0L302.0,254.9L302.5,257.9L300.4,262.0Z M276.7,269.4L276.7,268.4L283.9,260.3L282.7,262.7L279.2,267.4L276.7,269.4Z M296.1,254.3L298.5,255.5L297.5,257.2L294.5,257.1L294.4,254.2L296.1,254.3Z M306.3,248.8L308.8,253.7L303.4,250.9L303.7,249.4L306.3,248.8Z M288.4,248.3L290.3,248.2L291.8,249.3L292.0,251.0L290.5,252.8L287.0,248.8L288.4,248.3Z M287.6,228.3L291.9,228.0L293.7,233.1L290.5,240.0L292.8,245.5L296.7,244.2L301.8,247.7L298.5,248.1L295.5,245.5L295.8,248.2L292.3,245.9L287.8,246.4L288.9,244.0L287.3,243.0L285.4,243.4L283.9,237.9L286.0,238.0L285.3,232.5L286.2,228.8L287.6,228.3Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M434.3,281.9L433.2,283.2L429.3,280.5L429.8,279.3L433.7,280.9L434.3,281.9Z M418.1,279.7L419.7,281.7L418.6,284.7L414.4,289.0L410.5,291.2L405.5,291.2L405.5,290.0L415.1,285.7L418.1,279.7Z M388.1,290.1L394.9,291.6L395.1,293.8L403.5,294.4L403.7,295.1L400.3,297.5L403.6,300.4L405.3,300.6L408.1,303.4L409.3,302.6L410.1,304.2L413.0,303.8L412.6,305.3L415.0,306.7L410.6,307.2L403.5,308.4L401.0,306.0L397.1,303.6L391.0,303.9L387.2,306.9L386.6,309.7L383.7,313.2L382.7,313.0L377.4,314.5L376.6,306.0L375.4,289.8L388.1,290.1Z M422.3,279.7L420.9,277.8L412.9,275.7L413.1,274.9L418.0,275.4L422.1,277.1L422.3,279.7Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M78.6,6.0L78.8,6.0L78.3,7.8L77.6,8.2L77.6,8.3L76.4,9.2L73.1,11.8L71.1,11.4L69.0,13.5L68.6,13.9L68.4,14.1L64.9,17.2L64.5,16.7L59.0,17.8L58.8,17.2L58.7,17.1L58.7,17.0L59.2,15.1L58.1,11.5L57.1,11.3L57.5,8.1L57.4,7.8L57.5,7.7L58.7,6.3L59.7,1.8L58.4,1.8L60.6,-3.0L60.2,-4.0L60.3,-4.0L65.0,-6.4L67.6,-8.7L71.9,-10.4L77.5,-4.4L76.8,-0.6L76.9,-0.6L78.2,4.8L78.6,5.9L78.6,6.0Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M299.1,128.6L299.2,128.8L299.7,129.3L299.8,129.3L299.7,129.5L297.9,132.9L298.8,135.4L293.8,141.6L293.9,143.9L297.1,145.2L297.3,145.4L293.7,147.9L293.0,150.0L293.0,150.0L286.9,150.1L289.0,147.3L287.6,146.9L287.6,144.2L284.3,143.0L284.3,143.0L285.6,140.9L288.1,138.4L290.8,135.1L293.8,134.9L292.9,133.1L295.8,130.9L296.8,128.3L299.0,128.5L299.1,128.6Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M45.1,156.0L48.7,152.0L46.3,157.8L45.9,157.7L44.8,156.6L44.9,156.1L45.1,156.0Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M51.8,39.4L51.8,39.8L52.6,41.1L53.3,42.7L53.0,42.9L51.1,41.8L50.8,42.2L47.0,44.2L46.8,44.4L45.9,39.3L45.3,38.6L41.5,29.5L41.5,29.2L41.6,29.1L42.1,25.7L43.8,22.8L45.7,19.0L45.9,18.7L46.0,18.7L47.1,20.3L52.5,19.6L54.8,20.5L54.9,20.5L55.0,20.6L56.0,23.5L56.1,25.6L59.7,28.0L59.8,28.1L59.9,28.3L57.0,34.5L56.5,35.2L52.1,38.6L52.0,38.9L51.8,39.4Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M309.2,73.0L318.9,85.8L322.3,90.0L320.0,91.2L321.2,96.6L326.5,100.9L326.7,102.2L323.7,100.6L323.1,103.8L321.6,100.3L318.1,94.2L317.2,90.9L314.2,84.9L311.1,81.7L309.2,73.0Z M81.0,1.1L80.5,5.1L79.6,5.3L78.8,5.8L78.6,6.0L78.6,5.9L78.2,4.8L76.9,-0.6L77.3,-0.4L77.7,-0.4L79.3,0.1L80.7,0.4L80.9,0.4L80.9,0.5L80.5,0.5L79.5,0.4L80.4,1.4L81.0,1.1Z M311.2,-12.7L319.6,-16.2L322.8,-15.0L324.0,-16.2L321.4,-17.6L322.7,-19.7L325.5,-20.6L328.8,-18.6L327.9,-17.0L330.3,-16.3L332.4,-13.1L326.3,-10.9L325.6,-8.3L322.1,-7.8L324.8,-7.0L325.2,-5.7L311.0,-12.6L311.2,-12.7Z M172.6,2.2L173.2,3.3L168.5,6.5L167.3,11.5L164.8,9.8L163.6,7.7L165.1,7.6L164.2,4.2L171.4,1.2L172.6,2.2Z M265.9,0.5L269.7,-1.2L268.7,1.4L265.8,1.4L265.9,0.5Z M259.2,2.5L259.6,0.9L264.1,0.7L263.5,3.3L261.8,2.7L263.6,4.6L260.9,5.5L259.7,6.8L257.8,5.8L257.4,1.8L259.2,2.5Z M190.8,0.7L183.1,0.3L173.7,3.2L171.9,1.4L172.7,-0.1L186.1,-2.6L189.5,-1.4L193.0,-1.2L190.8,0.7Z M299.8,129.3L299.7,129.3L299.2,128.8L299.1,128.6L299.2,128.4L300.1,126.5L298.5,118.5L299.4,117.0L302.7,116.5L302.3,104.4L300.8,103.3L298.6,105.2L297.5,107.3L293.9,108.6L291.6,105.2L289.0,103.8L283.7,103.7L279.9,98.6L278.4,96.2L274.7,92.1L266.7,92.2L263.2,94.2L264.2,98.8L263.0,100.5L261.7,105.5L262.2,106.8L259.1,109.5L256.5,109.0L255.9,108.8L255.8,108.6L253.2,108.9L249.2,108.1L244.5,111.7L240.0,112.9L235.6,112.7L233.8,110.7L226.9,108.5L222.8,109.8L219.5,107.4L215.1,103.3L211.5,101.6L208.4,105.5L208.8,109.4L207.6,109.9L199.9,108.8L196.3,105.8L194.3,105.3L188.7,106.8L187.4,108.0L183.4,108.5L182.2,109.4L182.2,109.4L182.1,109.4L181.5,109.4L181.3,109.5L181.2,109.5L180.9,109.4L180.9,109.2L179.9,106.4L178.4,107.2L176.2,106.1L172.2,100.0L170.7,100.3L168.3,99.3L167.0,97.0L166.1,98.1L163.2,87.3L161.4,84.0L155.9,83.9L154.0,83.2L154.6,81.4L150.3,78.4L151.4,75.7L149.5,73.2L146.2,72.3L144.6,72.8L135.8,71.0L130.4,68.8L128.7,71.1L129.8,72.9L127.7,72.2L124.3,77.3L123.7,79.9L118.8,77.8L118.1,75.4L115.9,74.7L115.5,73.6L111.7,73.4L108.1,65.7L108.1,64.7L105.6,62.5L98.7,63.0L96.8,65.1L96.3,61.6L89.7,65.9L88.6,69.4L90.2,71.3L88.6,77.6L88.5,77.8L78.8,79.6L78.9,82.9L76.6,85.4L75.9,91.0L75.9,91.4L72.9,92.2L71.9,90.8L71.8,87.6L71.6,87.3L71.6,87.2L70.9,85.1L71.7,84.1L65.7,73.7L64.9,70.9L63.4,69.9L63.4,69.5L63.0,57.7L65.4,59.1L66.1,58.4L68.7,58.8L69.0,56.1L72.6,57.2L72.0,55.5L71.3,55.2L72.9,54.0L77.6,55.1L79.5,52.4L81.7,51.5L80.6,46.7L79.8,46.7L79.3,36.3L82.0,31.9L78.9,28.9L78.9,28.8L79.0,28.8L82.3,25.4L82.6,26.9L84.8,24.6L86.0,22.4L90.1,18.6L90.2,16.4L89.2,15.8L89.4,12.7L89.6,12.3L89.8,12.2L92.3,9.6L93.1,9.4L94.1,8.0L94.1,7.8L94.2,7.7L95.2,7.5L98.6,5.3L101.9,4.7L102.2,4.6L103.8,5.4L105.4,4.9L106.1,2.7L105.7,2.1L114.8,3.2L118.3,1.7L119.3,-0.9L121.9,-2.3L124.1,-4.3L128.1,-5.8L130.8,-8.5L136.3,-11.9L139.2,-12.7L139.4,-12.5L140.5,-12.7L144.4,-10.9L143.8,-5.9L142.5,1.5L142.3,3.9L139.8,6.2L134.6,5.2L133.3,0.6L133.9,-4.9L131.6,-1.7L131.1,0.5L128.8,1.4L126.9,3.3L126.1,9.1L126.6,9.4L128.8,5.2L131.6,10.5L132.3,9.8L136.6,8.2L139.9,10.3L139.3,11.8L146.9,6.1L147.5,4.4L149.2,7.3L148.3,9.4L145.0,8.9L144.5,12.5L145.7,13.1L148.1,11.7L156.5,13.1L158.9,14.0L155.7,15.0L161.3,17.6L163.9,17.7L162.6,19.6L166.1,19.3L167.1,16.8L168.4,16.7L170.6,19.0L173.0,24.1L173.5,26.9L175.3,25.2L177.1,17.5L180.2,15.9L185.1,12.1L187.8,14.7L184.3,18.4L184.0,21.1L177.5,32.1L174.3,34.6L172.5,34.1L171.2,32.5L172.0,34.9L173.1,35.4L178.1,34.9L180.9,32.8L182.1,29.5L185.3,29.4L184.2,34.1L186.2,32.8L186.8,30.3L185.1,28.3L182.8,27.7L184.1,23.9L185.5,22.7L185.7,19.1L190.7,15.3L190.3,17.5L189.2,18.4L188.4,21.1L191.3,23.2L189.7,20.2L193.6,18.3L198.1,22.8L195.9,24.8L196.8,25.5L195.6,27.6L197.2,27.0L198.4,22.2L197.3,19.9L197.1,17.3L197.8,15.0L206.0,14.2L204.8,12.8L210.4,10.4L219.2,9.1L220.3,10.0L221.6,8.2L222.2,5.7L224.2,4.1L227.8,6.7L227.1,8.1L231.6,7.4L234.5,12.3L229.3,18.8L227.6,20.2L228.9,20.8L231.0,19.6L230.9,18.3L235.2,18.2L235.5,19.0L238.8,17.9L241.1,17.8L241.4,19.1L247.0,18.9L248.1,15.7L252.9,16.0L254.4,20.3L257.6,23.2L259.8,23.9L259.7,19.1L262.4,20.3L267.3,18.2L268.0,16.2L266.1,13.8L268.2,11.5L272.0,11.8L274.5,9.4L277.4,8.6L277.5,10.0L280.1,10.7L280.7,9.7L284.7,9.1L286.0,6.8L288.1,5.2L291.0,4.8L293.2,6.9L296.4,6.5L296.8,4.0L300.5,-0.7L302.4,-0.1L305.7,-1.4L305.2,-2.4L302.5,-2.8L301.0,-4.2L304.3,-7.8L305.1,-9.4L311.0,-12.6L326.2,-5.2L327.5,-0.4L330.7,-0.0L335.8,1.8L333.1,4.1L333.8,5.7L333.7,11.1L335.3,18.0L336.5,20.3L334.2,20.1L332.4,21.4L332.2,26.6L331.2,25.6L328.7,29.4L329.1,30.9L335.6,38.5L337.1,39.9L339.8,41.0L338.5,42.1L339.6,45.6L342.3,47.2L341.3,49.2L341.0,52.8L343.0,55.4L342.4,59.2L343.3,60.3L343.8,67.1L332.7,57.1L330.3,54.6L327.4,49.8L326.6,44.4L327.1,42.7L326.8,38.6L326.3,37.3L323.7,24.4L321.9,21.6L320.2,22.9L322.2,25.5L321.9,26.6L322.7,31.3L322.2,32.4L319.9,30.7L318.8,28.7L317.3,29.7L315.1,33.0L316.0,37.2L316.3,42.0L317.0,44.6L314.3,48.5L311.5,47.0L309.4,47.4L309.4,49.8L308.0,50.1L304.7,53.2L303.6,52.8L299.7,55.3L298.4,57.6L297.8,60.6L298.0,63.2L296.2,67.8L295.6,72.5L293.7,76.9L293.4,78.8L296.9,78.1L299.4,81.3L302.1,80.2L303.3,76.5L308.5,78.4L308.0,79.8L311.1,83.3L310.8,84.8L311.7,89.2L314.2,95.0L314.3,98.6L313.6,107.4L312.0,112.8L310.1,120.6L306.0,125.6L299.9,129.2L299.8,129.3Z M223.7,-1.9L225.7,0.9L222.2,2.0L223.7,-1.9Z M220.1,-5.5L221.2,-4.8L221.2,-1.5L220.4,-0.4L216.7,-3.9L220.1,-5.5Z M219.8,-8.9L219.8,-5.8L217.3,-5.2L215.9,-6.4L219.8,-8.9Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M41.8,131.7L42.3,132.2L43.6,135.6L43.6,136.1L45.6,137.7L45.6,138.1L45.0,141.9L46.4,147.0L45.5,150.0L44.8,155.7L44.9,156.1L44.8,156.6L45.9,157.7L46.0,158.0L45.9,158.4L45.5,158.8L46.1,159.4L46.2,159.5L47.2,166.9L53.9,172.5L54.2,172.3L54.2,172.9L53.1,177.5L49.4,182.1L39.1,180.2L38.6,180.1L37.8,179.8L29.5,175.9L25.7,175.5L22.4,177.3L20.2,177.4L18.7,174.9L10.8,167.3L9.8,167.4L7.0,170.2L7.1,169.8L7.2,163.5L6.8,162.0L7.5,154.0L6.4,148.6L9.0,138.2L9.3,126.7L10.4,123.8L12.5,109.3L11.8,107.8L13.4,106.0L15.4,104.3L17.4,107.5L20.5,106.9L22.4,108.2L24.8,107.7L25.1,101.9L30.8,105.0L31.4,104.9L31.8,105.5L33.6,108.3L35.7,117.5L41.3,131.5L41.8,131.7Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M1.8,135.7L0.1,141.0L-2.9,148.0L-1.5,153.5L-1.5,153.9L-6.4,154.3L-7.7,153.4L-10.8,157.3L-12.9,159.0L-13.8,161.4L-14.3,162.6L-15.0,163.4L-18.2,167.3L-19.9,166.7L-21.9,168.0L-24.7,171.3L-27.1,170.9L-29.5,174.5L-29.5,174.5L-29.5,174.4L-28.7,171.1L-29.6,166.7L-27.8,162.7L-30.2,159.1L-30.9,162.8L-36.5,165.2L-38.2,162.4L-43.3,159.6L-45.5,157.8L-45.7,156.1L-48.7,153.0L-48.9,146.8L-50.3,145.6L-53.7,147.5L-54.9,148.8L-56.2,148.4L-57.4,146.0L-55.1,142.4L-54.6,135.7L-53.6,134.6L-52.5,125.1L-50.6,124.6L-48.0,122.5L-47.4,120.5L-41.9,120.3L-41.5,121.2L-33.3,109.3L-32.2,107.7L-28.9,109.0L-27.7,107.2L-25.1,103.7L-23.8,102.0L-23.1,103.2L-15.3,114.2L-8.5,122.8L-1.7,130.6L2.3,134.9L1.8,135.7Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M10.4,214.0L9.3,213.3L7.0,211.6L-0.9,201.3L-2.2,191.4L-1.5,191.1L-1.4,190.9L-0.7,190.5L-0.1,190.1L0.3,189.8L0.7,190.8L2.2,196.6L4.0,197.8L7.3,198.2L11.0,200.5L12.1,200.4L17.0,202.6L17.6,203.4L17.7,203.4L15.5,210.0L15.4,210.4L11.2,213.4L10.4,214.0Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M-14.2,216.0L-10.9,216.9L-9.4,216.3L-3.3,219.3L1.3,217.3L9.3,214.4L10.4,214.0L11.2,213.4L15.4,210.4L15.5,210.0L17.7,203.4L18.1,203.6L24.7,204.5L22.8,211.4L20.5,215.3L15.9,219.1L9.7,225.2L1.4,230.1L-2.2,231.5L-9.1,231.9L-12.7,233.0L-21.2,237.6L-22.3,233.2L-20.1,224.2L-15.5,216.9L-14.8,216.4L-14.2,216.0Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M45.9,18.7L45.7,19.0L43.8,22.8L42.1,25.7L41.6,29.1L41.5,29.2L41.4,29.1L36.8,32.6L36.4,32.1L34.6,33.3L34.4,33.2L34.4,33.1L33.6,31.8L33.4,31.6L33.4,31.4L33.5,31.3L35.8,28.0L35.8,26.6L34.4,27.1L34.2,26.9L34.3,26.8L34.7,24.7L34.7,24.3L35.6,22.2L35.6,22.2L35.9,22.3L37.8,22.0L39.0,19.8L40.4,18.7L40.3,18.6L40.4,18.5L42.0,18.3L42.3,17.3L44.0,15.9L44.1,15.9L44.2,15.9L44.5,16.3L45.2,16.9L45.9,18.6L45.9,18.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M58.6,17.2L57.9,17.3L57.4,17.4L56.5,17.4L55.9,17.8L55.9,17.7L55.2,14.0L52.0,11.2L50.9,11.3L50.6,7.1L50.6,7.1L50.7,6.9L51.9,5.6L52.1,5.5L52.7,5.4L52.7,5.4L53.0,5.3L54.5,6.7L55.2,7.1L57.4,7.8L57.4,7.8L57.5,8.1L57.1,11.3L58.1,11.5L59.2,15.1L58.7,17.0L58.7,17.1L58.6,17.2Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M44.5,8.5L42.8,7.3L39.7,7.9L38.9,3.5L39.0,3.6L39.3,3.7L40.7,2.6L41.9,1.4L42.6,1.8L42.9,1.8L42.9,1.9L44.2,5.3L44.8,6.5L45.5,6.9L45.6,7.0L45.7,7.5L45.2,7.9L44.6,8.7L44.5,8.8L44.5,8.5Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M50.9,95.2L47.4,95.2L43.8,98.9L34.7,100.0L33.7,99.8L32.9,99.7L26.9,98.8L26.3,97.9L26.1,95.3L25.9,95.0L26.1,94.8L27.0,94.0L27.2,93.9L27.7,93.0L27.9,92.9L28.1,92.9L31.5,92.0L32.1,89.8L31.4,89.2L31.8,88.3L33.4,86.5L33.5,85.6L34.5,84.9L34.7,84.8L35.0,85.7L38.5,83.7L39.7,86.0L41.9,86.9L43.6,90.2L46.7,91.5L51.1,94.7L50.9,95.2L50.9,95.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M208.6,226.5L208.6,226.7L209.6,229.1L211.7,229.4L212.8,231.9L212.0,237.6L215.6,235.1L217.2,235.8L219.6,235.3L220.7,234.2L222.9,234.6L226.2,238.5L226.0,239.4L228.5,243.6L229.0,247.2L227.9,249.8L227.7,249.9L227.6,250.0L221.3,249.6L218.8,250.7L216.4,252.9L218.8,260.0L218.7,260.0L214.0,256.1L211.1,253.2L208.2,252.9L207.2,253.8L207.2,257.2L205.0,262.7L203.6,264.8L204.2,269.0L206.5,269.5L206.7,271.2L208.7,277.0L210.8,278.3L212.4,278.2L214.0,279.8L215.2,280.7L210.6,282.4L211.0,280.9L207.1,279.7L206.1,278.5L199.7,271.8L201.2,266.5L201.8,265.2L202.2,263.3L205.6,259.3L204.2,255.6L203.5,250.9L201.8,249.2L200.5,245.9L202.0,245.2L202.6,241.7L201.1,238.4L198.0,233.0L201.0,228.2L204.0,228.4L204.4,227.4L208.2,226.2L208.6,226.5Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M126.1,131.2L125.6,131.0L125.5,130.8L126.1,131.2Z M127.4,129.9L127.3,130.0L122.5,129.0L121.8,130.7L127.9,133.0L129.4,135.2L133.5,135.7L133.6,135.8L133.6,136.0L133.0,139.1L135.7,141.0L134.4,145.5L134.3,145.5L134.3,145.4L130.6,143.1L124.2,143.9L125.5,139.8L124.1,136.5L121.1,139.1L115.6,138.5L113.9,137.8L113.9,137.6L114.2,137.4L117.0,132.4L116.1,129.4L122.7,128.1L123.1,126.7L127.1,126.4L127.2,129.9L127.4,129.9Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M110.8,135.4L110.6,135.3L109.1,133.6L108.0,134.5L105.5,134.1L103.6,136.4L99.0,136.3L98.1,137.7L95.5,137.5L93.7,134.5L93.5,134.4L93.5,134.3L94.9,130.5L92.9,129.3L91.7,124.9L89.4,122.4L87.9,119.4L85.3,117.7L77.8,116.4L77.9,116.1L81.0,111.0L81.1,105.8L83.5,102.5L84.9,104.7L87.8,104.3L87.3,102.4L88.0,99.6L85.8,98.6L84.0,99.5L84.3,98.4L89.4,99.5L90.0,105.1L91.2,105.6L91.3,105.7L91.9,106.2L93.6,107.6L94.7,105.4L96.3,105.0L99.3,106.0L99.2,105.0L102.1,109.5L101.3,111.7L105.2,115.4L104.6,120.4L110.9,135.0L110.8,135.4Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M-7.7,26.3L-10.4,28.3L-14.8,26.3L-17.1,28.5L-19.3,27.9L-19.6,27.7L-18.8,26.8L-8.0,12.0L-5.0,12.2L-3.0,11.6L-0.4,9.7L4.0,8.1L4.3,8.7L5.8,11.3L4.7,13.6L5.2,15.9L2.8,15.5L1.7,16.1L-0.7,19.9L-4.5,19.3L-6.8,21.8L-7.7,25.8L-7.7,26.3Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M60.9,79.0L61.3,79.9L63.6,84.1L63.5,84.2L63.4,84.3L61.7,88.7L62.4,89.4L62.6,91.2L62.6,91.4L62.6,91.5L62.5,91.7L62.5,91.6L60.3,91.0L56.2,100.0L56.1,100.0L56.1,99.9L54.3,97.9L52.3,95.1L51.1,95.3L50.9,95.2L51.1,94.7L46.7,91.5L43.6,90.2L41.9,86.9L39.7,86.0L38.5,83.7L35.0,85.7L34.7,84.8L35.1,84.7L37.8,82.0L36.3,81.8L33.7,78.9L31.4,78.8L29.4,77.1L29.1,71.2L27.8,69.3L27.0,70.1L24.2,67.9L25.0,65.6L22.6,61.7L24.7,62.9L24.2,60.6L25.0,58.3L26.3,57.4L25.8,55.1L26.9,53.6L30.8,51.9L29.5,50.4L31.3,49.0L33.3,49.3L34.1,51.3L36.5,54.8L38.8,55.8L38.8,52.9L41.4,57.1L46.2,58.9L51.1,64.1L51.9,69.6L55.9,76.0L56.2,77.2L60.5,79.1L60.9,79.0Z M39.8,48.2L37.7,51.2L36.2,49.5L34.2,48.8L33.4,46.8L33.5,46.6L34.8,46.7L35.6,45.9L37.2,44.9L37.1,44.6L37.2,44.5L39.4,46.7L40.2,48.0L39.8,48.2Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M285.3,212.8L282.7,213.2L281.7,211.3L283.0,205.8L285.5,202.3L287.2,204.9L285.3,212.8Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M71.2,55.2L64.8,51.2L62.2,52.9L61.7,54.1L63.3,56.2L62.3,57.6L61.2,55.7L59.5,55.7L56.1,53.7L57.5,48.4L61.0,47.7L60.0,43.2L62.4,41.8L60.7,43.6L59.0,41.6L53.6,42.6L53.3,42.7L52.6,41.1L51.8,39.8L51.8,39.4L52.0,38.9L52.2,38.9L58.6,39.1L61.6,34.2L61.7,30.3L60.0,28.0L59.8,28.1L59.7,28.0L56.1,25.6L56.0,23.5L55.0,20.6L54.9,20.5L55.0,20.4L55.6,19.1L55.6,18.6L56.1,18.0L55.9,17.8L56.5,17.4L57.4,17.4L57.9,17.3L58.6,17.2L58.7,17.1L58.8,17.2L59.0,17.8L64.5,16.7L64.9,17.2L68.4,14.1L68.6,13.9L68.7,13.9L72.7,20.6L74.9,27.3L78.7,28.5L78.9,28.8L78.9,28.9L82.0,31.9L79.3,36.3L79.8,46.7L80.6,46.7L81.7,51.5L79.5,52.4L77.6,55.1L72.9,54.0L71.3,55.2L71.2,55.2Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M510.9,42.7L507.1,39.2L508.0,38.1L510.0,38.5L510.9,42.7Z M294.2,-159.7L303.0,-157.9L309.8,-156.2L340.3,-146.1L346.2,-143.7L359.6,-137.9L374.4,-130.5L392.6,-120.1L396.6,-117.6L408.0,-108.3L406.3,-106.6L395.7,-105.9L383.7,-106.3L381.4,-106.1L375.6,-103.4L372.6,-108.1L374.7,-109.6L369.4,-107.5L364.1,-113.7L355.7,-122.2L348.6,-128.6L338.7,-136.3L330.4,-141.8L319.2,-148.4L310.0,-153.1L299.0,-157.9L294.6,-158.4L294.2,-159.7Z M356.5,-80.1L359.3,-83.8L360.9,-84.0L358.6,-80.6L356.5,-80.1Z M362.8,-41.2L364.8,-41.3L366.9,-37.5L363.9,-38.3L362.8,-41.2Z M351.0,-75.2L351.4,-76.9L352.9,-77.1L353.6,-75.6L352.9,-73.7L351.0,-75.2Z M336.3,-15.2L338.6,-19.0L339.4,-17.3L337.5,-14.6L336.3,-15.2Z M307.8,-43.6L306.9,-46.9L308.7,-48.3L307.9,-50.9L308.5,-54.3L307.9,-57.6L307.9,-61.9L311.5,-62.4L340.8,-64.8L346.9,-64.9L345.3,-68.4L349.9,-71.6L348.1,-73.3L344.9,-74.8L348.3,-79.6L351.3,-82.3L353.4,-85.1L353.3,-87.2L358.2,-87.4L359.2,-86.8L357.5,-83.1L354.7,-84.3L352.9,-81.4L353.1,-80.0L351.1,-80.1L348.6,-78.4L348.0,-76.2L350.0,-76.5L350.6,-74.9L348.1,-74.2L349.5,-72.9L351.0,-74.4L349.2,-67.2L347.3,-68.2L349.0,-66.1L348.5,-64.4L349.6,-60.3L347.9,-54.9L346.6,-55.3L348.6,-51.6L351.0,-51.7L356.3,-46.0L354.3,-44.6L350.1,-46.2L348.6,-47.9L348.8,-50.2L347.5,-47.8L349.5,-45.5L353.6,-43.3L356.0,-40.7L359.0,-40.9L361.7,-38.7L364.9,-34.2L366.7,-32.8L369.5,-28.3L370.1,-28.6L372.3,-25.2L371.5,-25.0L372.1,-21.3L373.7,-19.6L373.7,-16.8L372.0,-19.4L370.8,-23.7L369.4,-24.6L367.5,-28.1L365.5,-29.8L358.5,-34.4L359.0,-31.2L360.9,-29.9L359.2,-29.3L358.8,-26.6L359.7,-24.7L357.7,-25.6L353.1,-25.8L354.1,-24.3L351.6,-21.0L349.7,-22.1L348.7,-21.2L344.8,-22.0L341.8,-24.6L339.4,-30.8L338.0,-32.3L333.4,-32.9L335.2,-29.2L334.8,-26.1L329.1,-23.2L326.1,-29.2L327.6,-29.7L328.5,-32.6L327.5,-33.5L324.4,-33.8L323.9,-31.3L319.7,-29.7L316.0,-29.5L315.1,-33.2L309.8,-38.6L308.3,-39.1L306.2,-42.5L307.8,-43.6Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M127.5,131.5L127.2,131.0L127.1,130.5L127.5,131.5Z M130.3,122.4L130.4,122.3L129.5,123.4L129.6,126.9L134.1,130.0L129.5,131.0L127.5,129.9L127.4,129.9L127.2,129.9L127.1,126.4L123.1,126.7L122.7,128.1L116.1,129.4L117.0,132.4L114.2,137.4L113.9,137.6L114.0,137.5L113.2,136.9L112.3,136.1L111.7,135.7L110.8,135.4L110.9,135.0L104.6,120.4L105.2,115.4L101.3,111.7L102.1,109.5L99.2,105.0L99.3,106.0L96.3,105.0L94.7,105.4L93.6,107.6L91.9,106.2L91.3,105.7L91.7,104.9L99.3,92.9L106.0,94.6L109.3,102.9L110.1,106.9L113.1,108.0L116.0,109.8L117.2,109.8L119.1,114.0L117.2,117.5L118.0,117.9L117.8,121.7L121.8,124.9L124.0,123.5L130.0,122.4L130.3,122.4Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M237.7,222.0L233.1,224.3L233.4,225.1L229.2,232.1L233.6,238.2L237.7,241.8L238.6,242.0L241.8,245.6L243.8,251.4L244.4,254.8L242.9,261.1L233.4,267.0L230.3,266.5L231.7,268.8L226.3,271.1L226.6,267.3L225.1,265.3L224.7,265.0L228.5,263.0L230.0,262.8L230.8,260.1L232.3,260.1L236.5,257.8L237.2,252.9L236.8,248.6L236.8,248.4L236.7,247.9L235.3,244.2L236.2,243.2L232.9,241.0L232.8,240.1L227.5,234.5L227.3,233.2L222.8,230.9L226.6,228.0L224.5,226.4L224.4,224.9L219.0,223.4L219.3,221.5L216.5,219.1L216.3,218.7L216.4,218.6L221.8,217.3L222.8,218.2L226.2,216.0L233.4,217.2L233.2,220.2L237.9,222.0L237.7,222.0Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M24.2,96.1L23.4,96.8L22.9,97.6L22.2,98.1L21.9,98.3L21.8,98.2L21.6,96.7L24.4,95.3L24.5,95.5L24.2,96.1Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/><path d="M36.6,190.9L35.1,191.4L34.3,193.3L22.6,191.4L20.8,192.1L14.8,190.4L11.3,188.6L4.3,187.3L3.4,185.9L3.0,183.0L4.9,175.9L4.6,174.1L6.5,171.5L7.0,170.2L9.8,167.4L10.8,167.3L18.7,174.9L20.2,177.4L22.4,177.3L25.7,175.5L29.5,175.9L37.8,179.8L38.6,180.1L38.5,180.6L38.3,188.0L38.5,188.3L38.5,191.2L36.6,190.9Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M249.0,227.3L247.4,232.5L244.1,234.5L241.0,233.4L242.6,228.6L245.3,227.7L249.0,227.3Z M299.1,128.6L299.0,128.5L296.8,128.3L295.8,130.9L292.9,133.1L293.8,134.9L290.8,135.1L288.1,138.4L285.6,140.9L284.3,143.0L284.2,143.0L280.7,145.2L277.7,148.5L275.7,147.3L277.6,143.0L274.3,141.5L272.7,144.5L269.8,146.9L269.6,148.3L265.4,150.1L265.1,151.2L266.6,153.7L269.6,153.8L270.0,156.6L272.6,156.8L274.0,154.7L276.2,153.9L281.4,154.2L281.2,156.1L276.8,158.4L276.1,160.2L274.8,160.2L272.2,166.2L275.0,167.3L278.8,172.4L279.0,173.8L282.8,176.5L278.9,176.5L282.5,178.5L283.5,180.0L282.4,182.9L284.8,183.9L284.7,186.9L283.4,186.7L284.2,190.4L281.8,192.2L279.5,198.0L278.1,197.4L277.4,200.8L278.2,200.5L278.8,203.0L276.6,204.3L275.9,206.4L273.1,207.4L273.9,208.1L271.4,210.6L264.9,215.3L261.1,216.2L260.9,216.4L260.3,216.4L260.2,216.4L259.9,216.6L259.6,216.6L257.7,215.2L257.3,215.3L258.3,217.9L258.2,217.8L258.1,217.9L258.1,218.0L258.1,218.0L258.1,218.0L256.6,218.1L254.9,220.0L252.5,219.9L249.2,221.4L246.2,224.1L247.5,225.4L246.1,226.5L243.9,221.1L240.8,221.4L239.7,220.4L238.2,221.9L237.9,222.0L233.2,220.2L233.4,217.2L226.2,216.0L222.8,218.2L221.8,217.3L216.4,218.6L216.3,218.7L216.1,218.6L214.9,218.2L215.0,223.2L212.7,222.0L212.5,221.8L212.6,221.7L210.8,222.0L208.1,220.9L208.2,220.0L205.8,219.4L205.7,215.5L204.2,212.9L204.5,211.6L202.2,211.3L200.0,212.1L199.8,209.7L204.6,201.8L204.5,197.9L202.6,195.4L202.4,195.3L202.5,195.3L204.5,194.8L205.6,193.1L206.3,188.2L206.2,185.6L204.8,180.6L202.5,178.2L201.3,178.3L198.1,181.0L194.6,180.5L192.1,176.8L188.1,176.7L184.4,175.5L182.0,172.9L178.2,171.6L177.0,169.8L177.8,166.2L177.0,164.0L177.8,161.3L174.6,159.3L167.3,159.1L166.5,160.2L158.6,160.3L155.4,158.2L152.1,159.2L148.4,157.4L145.9,160.9L142.9,161.1L142.7,161.2L143.0,161.0L141.6,158.9L141.3,156.1L141.0,155.0L141.0,155.0L140.9,155.0L140.7,155.0L139.9,154.7L139.4,154.5L138.3,153.7L138.0,153.4L137.9,153.3L136.6,152.3L136.5,148.9L133.3,145.9L133.1,145.9L133.0,145.9L132.7,145.2L133.4,145.1L134.2,145.5L134.3,145.5L134.4,145.5L135.7,141.0L133.0,139.1L133.6,136.0L133.6,135.8L133.9,135.8L138.4,133.1L142.3,135.0L144.5,133.1L145.8,133.4L155.3,131.6L155.3,131.3L155.4,131.3L157.9,127.6L158.1,120.4L162.8,120.3L164.6,121.8L164.8,119.6L167.8,115.0L172.4,116.7L175.0,115.6L175.8,111.9L178.3,111.2L180.7,109.3L180.9,109.4L181.2,109.5L181.3,109.5L181.5,109.4L182.1,109.4L182.2,109.4L182.2,109.6L182.2,111.8L187.2,116.2L188.1,119.1L188.3,122.7L187.0,124.9L190.8,127.4L192.5,127.6L196.2,129.7L198.4,131.4L201.5,137.9L203.9,137.8L210.4,139.1L216.9,139.8L225.0,142.3L227.4,142.7L231.6,140.5L239.4,139.6L242.1,138.2L245.8,133.3L245.3,132.9L247.6,129.2L250.4,129.6L252.7,126.9L255.8,126.2L259.8,122.0L259.9,121.1L263.5,119.8L266.3,119.7L259.9,115.5L256.0,116.6L255.2,117.4L255.8,109.4L255.9,108.8L256.5,109.0L259.1,109.5L262.2,106.8L261.7,105.5L263.0,100.5L264.2,98.8L263.2,94.2L266.7,92.2L274.7,92.1L278.4,96.2L279.9,98.6L283.7,103.7L289.0,103.8L291.6,105.2L293.9,108.6L297.5,107.3L298.6,105.2L300.8,103.3L302.3,104.4L302.7,116.5L299.4,117.0L298.5,118.5L300.1,126.5L299.2,128.4L299.1,128.6Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 276" height="276px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 450 276" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="276.168144542" padding="0" w="450"><proj id="laea" lat0="39.5" lon0="104.5"/><bbox h="858.81" w="1404.46" x="297.77" y="525.07"/></view></views></metadata><g class="" id="countries"><path d="M202.3,195.2L196.6,193.8L197.4,192.3L195.2,190.1L191.3,190.1L187.3,192.1L186.2,192.0L180.1,194.8L180.2,194.1L175.5,192.0L173.1,192.3L170.4,195.1L170.0,194.5L162.8,190.6L161.0,191.1L160.2,189.7L155.4,185.2L155.5,184.6L149.6,179.4L149.5,178.7L146.0,179.1L140.7,171.8L139.7,171.6L139.7,167.2L141.2,168.2L142.5,164.7L141.9,163.4L142.6,161.2L142.9,161.1L145.9,160.9L148.4,157.4L152.1,159.2L155.4,158.2L158.6,160.3L166.5,160.2L167.3,159.1L174.6,159.3L177.8,161.3L177.0,164.0L177.8,166.2L177.0,169.8L178.2,171.6L182.0,172.9L184.4,175.5L188.1,176.7L192.1,176.8L194.6,180.5L198.1,181.0L201.3,178.3L202.5,178.2L204.8,180.6L206.2,185.6L206.3,188.2L205.6,193.1L204.5,194.8L202.5,195.3L202.3,195.2Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M134.2,145.5L133.4,145.1L132.7,145.2L133.0,145.9L133.1,145.9L132.7,146.0L125.7,144.6L122.3,146.6L122.4,148.7L121.4,150.4L119.3,151.5L119.2,153.2L116.9,153.0L115.7,155.1L113.6,155.4L110.8,159.3L108.9,159.7L104.3,159.6L103.1,158.8L100.4,159.7L98.5,163.1L91.5,161.9L83.5,156.2L82.6,155.2L83.8,154.6L87.5,151.3L85.4,148.4L88.7,138.9L91.7,137.0L93.4,134.7L93.5,134.4L93.7,134.5L95.5,137.5L98.1,137.7L99.0,136.3L103.6,136.4L105.5,134.1L108.0,134.5L109.1,133.6L110.6,135.3L110.8,135.4L111.7,135.7L112.3,136.1L113.2,136.9L114.0,137.5L113.9,137.6L113.9,137.8L115.6,138.5L121.1,139.1L124.1,136.5L125.5,139.8L124.2,143.9L130.6,143.1L134.3,145.4L134.3,145.5L134.2,145.5Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M32.9,27.0L32.4,28.2L32.0,29.0L31.2,29.7L31.0,29.8L31.0,29.8L29.7,30.4L27.9,33.4L27.9,33.5L27.6,33.6L25.0,34.6L24.1,34.1L22.9,33.9L23.2,33.6L25.0,30.4L26.1,29.5L29.9,27.0L29.8,26.7L32.8,25.6L32.8,25.9L32.9,26.8L32.9,26.8L32.9,27.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M62.4,163.7L61.5,165.8L61.5,165.9L59.5,165.3L57.0,168.2L54.5,171.8L54.2,172.3L53.9,172.5L47.2,166.9L46.2,159.5L46.4,159.4L47.2,161.8L54.4,164.9L55.6,164.1L62.3,161.4L62.3,161.4L61.9,162.9L62.0,163.1L62.3,163.3L62.4,163.7Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M64.2,97.4L63.9,97.1L63.4,97.0L63.3,96.8L63.5,96.5L64.3,93.9L63.5,93.5L62.8,91.6L62.6,91.4L62.6,91.2L62.4,89.4L61.7,88.7L63.4,84.3L63.5,84.2L63.7,84.3L65.4,85.4L67.0,86.6L67.1,86.6L67.1,86.8L65.1,92.3L65.3,94.6L64.4,97.1L64.2,97.4Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M52.7,5.4L52.1,5.5L51.9,5.6L50.7,6.9L50.6,7.1L50.4,7.0L48.5,7.0L47.7,6.7L46.1,7.1L45.6,7.0L45.5,6.9L44.8,6.5L44.2,5.3L42.9,1.9L42.9,1.8L42.9,1.2L43.7,-2.9L44.3,-3.2L42.7,-7.1L42.9,-7.1L43.2,-9.5L46.7,-4.3L46.2,-1.8L50.7,-2.8L51.5,-2.4L51.6,-2.4L51.7,-0.1L53.0,-0.0L52.8,5.3L52.7,5.4L52.7,5.4Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M63.3,96.8L63.0,96.3L62.3,95.1L62.5,91.8L62.5,91.7L62.6,91.5L62.6,91.4L62.8,91.6L63.5,93.5L64.3,93.9L63.5,96.5L63.3,96.8Z M76.0,91.8L76.1,99.9L74.1,98.8L70.6,102.0L69.2,102.2L68.4,103.6L67.4,100.5L69.4,99.2L69.4,97.7L64.4,97.6L64.2,97.4L64.4,97.1L65.3,94.6L65.1,92.3L67.1,86.8L67.1,86.6L67.9,86.6L69.8,90.2L70.6,89.8L71.4,87.4L71.6,87.3L71.8,87.6L71.9,90.8L72.9,92.2L75.9,91.4L76.0,91.8Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M181.1,217.7L181.1,217.9L180.9,220.5L179.7,222.2L179.6,222.2L178.9,220.6L178.4,216.4L177.1,214.0L174.5,212.5L173.9,215.7L168.3,215.8L168.3,215.5L167.3,209.1L167.9,207.9L166.0,204.7L167.7,203.1L166.8,200.2L170.1,199.1L171.7,200.6L174.0,204.1L179.4,205.0L180.9,206.3L179.4,208.8L177.6,208.9L176.9,212.8L180.5,211.0L181.0,217.5L181.1,217.7Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M45.9,45.0L42.3,45.3L41.1,45.3L40.4,47.7L40.2,48.0L39.4,46.7L37.2,44.5L37.1,44.6L37.1,44.2L35.8,45.0L34.4,43.5L31.8,37.5L31.7,37.2L31.8,37.2L32.7,36.6L33.1,36.4L34.1,34.0L34.4,33.2L34.6,33.3L36.4,32.1L36.8,32.6L41.4,29.1L41.5,29.2L41.5,29.5L45.3,38.6L45.9,39.3L46.8,44.4L45.9,45.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M40.3,18.6L40.4,18.7L39.0,19.8L37.8,22.0L35.9,22.3L35.6,22.2L35.6,22.1L33.3,22.0L32.9,21.7L31.5,22.7L31.5,22.6L31.5,22.3L32.0,20.4L37.4,10.6L38.9,11.0L40.3,18.4L40.3,18.6Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M89.4,12.7L89.2,15.8L90.2,16.4L90.1,18.6L86.0,22.4L84.8,24.6L82.6,26.9L82.3,25.4L79.0,28.8L78.9,28.8L78.7,28.5L74.9,27.3L72.7,20.6L68.7,13.9L68.6,13.9L69.0,13.5L71.1,11.4L73.1,11.8L76.4,9.2L77.6,8.3L77.6,8.5L80.6,11.5L82.8,10.8L84.9,11.6L86.4,10.6L86.5,10.5L86.6,10.5L87.5,11.0L87.6,11.5L89.6,12.2L89.6,12.3L89.4,12.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M170.7,194.5L175.1,191.9L178.8,193.4L180.1,194.6L180.1,194.8L181.4,196.8L179.8,198.5L175.2,197.5L172.6,197.8L170.4,195.1L170.7,194.5Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M26.8,79.8L27.8,79.5L28.6,80.9L28.9,82.7L28.8,83.1L28.1,82.5L28.0,81.5L26.8,79.6L26.8,79.8Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M28.8,83.2L25.2,81.2L25.1,80.6L26.7,79.4L26.8,79.6L28.0,81.5L28.1,82.5L28.8,83.1L28.8,83.2Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M57.4,7.8L57.4,7.8L55.2,7.1L54.5,6.7L53.0,5.3L52.7,5.4L52.8,5.3L53.0,-0.0L51.7,-0.1L51.6,-2.4L51.8,-2.6L53.3,-5.8L56.5,-8.6L57.4,-8.4L60.0,-5.4L60.2,-4.0L60.2,-4.0L60.6,-3.0L58.4,1.8L59.7,1.8L58.7,6.3L57.5,7.7L57.4,7.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M-1.4,190.9L-1.6,190.8L-4.8,188.3L-3.6,185.5L-1.3,184.3L-0.8,184.0L-0.6,184.0L-0.0,185.1L0.3,185.1L1.8,184.8L1.8,185.0L1.9,187.5L1.1,188.0L0.2,189.3L0.3,189.8L-0.1,190.1L-0.7,190.5L-1.4,190.9Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M-19.6,27.7L-19.8,27.5L-22.4,30.7L-31.5,38.9L-33.8,39.0L-37.6,47.7L-39.5,55.3L-41.0,54.4L-52.5,47.6L-58.4,45.9L-61.8,38.2L-60.6,36.3L-58.5,28.6L-56.8,23.8L-56.1,23.1L-53.4,14.8L-50.7,7.4L-46.2,-3.6L-38.1,-20.8L-33.0,-30.4L-27.6,-33.2L-26.7,-32.2L-24.3,-27.3L-23.7,-23.4L-22.3,-23.0L-20.7,-19.4L-17.9,-20.1L-16.6,-13.3L-11.9,-17.2L-7.8,-19.7L-4.6,-20.8L-2.8,-19.2L0.1,-14.6L0.8,-10.6L2.2,-6.6L3.7,6.8L4.0,8.1L-0.4,9.7L-3.0,11.6L-5.0,12.2L-8.0,12.0L-18.8,26.8L-19.6,27.7Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M18.7,96.3L18.4,97.2L17.3,99.5L16.9,100.7L15.6,103.7L15.4,103.7L11.1,107.2L9.5,105.7L9.8,102.6L11.8,96.1L9.4,100.7L8.7,105.6L6.4,111.0L3.9,121.7L4.0,125.1L3.4,124.6L1.6,128.4L2.3,134.8L2.3,134.9L-1.7,130.6L-8.5,122.8L-15.3,114.2L-23.1,103.2L-23.8,102.0L-23.2,101.3L-11.0,86.2L-4.0,78.2L-1.6,74.5L2.2,71.1L3.6,70.9L3.4,71.5L6.2,77.5L7.8,84.2L13.7,87.0L15.1,92.3L18.9,95.8L19.0,95.8L18.9,95.9L18.7,96.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M-1.9,156.8L-3.8,165.4L-1.8,170.6L-0.4,176.5L0.7,179.4L1.1,183.5L1.9,184.3L1.8,184.8L0.3,185.1L-0.0,185.1L-0.6,184.0L-0.8,184.0L-0.9,183.4L-2.7,173.7L-6.6,167.7L-8.6,167.0L-9.5,163.8L-11.7,165.7L-14.2,162.6L-14.3,162.6L-13.8,161.4L-12.9,159.0L-10.8,157.3L-7.7,153.4L-6.4,154.3L-1.5,153.9L-1.9,156.8Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M101.9,4.7L98.6,5.3L95.2,7.5L94.2,7.7L94.1,7.8L94.0,7.7L94.1,4.3L94.4,2.7L93.1,1.7L93.3,1.6L97.7,-2.4L100.7,0.2L101.8,4.7L101.9,4.7Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M-0.8,184.0L-1.3,184.3L-3.6,185.5L-4.8,188.3L-1.6,190.8L-1.4,190.9L-1.5,191.1L-2.2,191.4L-0.9,201.3L7.0,211.6L9.3,213.3L10.4,214.0L9.3,214.4L1.3,217.3L-3.3,219.3L-9.4,216.3L-10.9,216.9L-14.2,216.0L-14.6,215.6L-17.3,212.1L-20.1,211.6L-22.3,212.2L-26.4,207.9L-31.6,199.1L-32.5,185.6L-34.9,177.4L-29.5,174.6L-29.5,174.5L-27.1,170.9L-24.7,171.3L-21.9,168.0L-19.9,166.7L-18.2,167.3L-15.0,163.4L-14.3,162.6L-14.2,162.6L-11.7,165.7L-9.5,163.8L-8.6,167.0L-6.6,167.7L-2.7,173.7L-0.9,183.4L-0.8,184.0Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M139.2,-12.7L136.3,-11.9L130.8,-8.5L128.1,-5.8L124.1,-4.3L121.9,-2.3L119.3,-0.9L118.3,1.7L114.8,3.2L105.7,2.1L105.7,2.1L100.7,-4.0L99.8,-4.4L103.8,-9.4L108.9,-11.7L112.4,-12.8L113.2,-11.8L122.0,-10.6L123.6,-11.3L126.2,-14.9L128.0,-15.2L133.1,-18.3L135.9,-22.8L137.1,-21.9L135.2,-19.3L135.6,-16.8L142.8,-15.7L141.8,-13.6L139.3,-12.8L139.2,-12.7Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M26.6,-1.8L24.1,-0.3L21.3,0.3L24.0,-3.2L25.3,-3.4L26.6,-1.8Z M38.1,-14.3L37.6,-14.6L34.0,-13.3L31.5,-11.5L29.6,-9.1L29.6,-9.2L27.2,-10.6L26.9,-13.1L28.0,-17.9L26.7,-19.9L24.3,-19.3L23.3,-20.4L25.5,-29.5L25.5,-30.3L28.3,-34.2L33.2,-34.8L40.1,-37.3L44.3,-40.0L44.5,-41.4L47.3,-46.1L50.5,-48.5L49.6,-43.2L49.6,-40.1L54.1,-42.3L52.0,-37.6L53.6,-37.2L55.7,-34.5L58.6,-34.5L58.9,-33.1L55.3,-28.1L54.8,-26.3L53.4,-25.6L50.1,-16.4L44.8,-15.5L41.6,-17.3L38.8,-17.1L40.0,-16.3L38.2,-14.4L38.1,-14.3Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M18.9,95.9L19.0,95.8L19.8,95.7L20.2,95.6L19.4,96.0L19.2,96.2L18.7,96.3L18.9,95.9Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M71.4,87.4L70.6,89.8L69.8,90.2L67.9,86.6L67.1,86.6L67.0,86.6L65.4,85.4L63.7,84.3L63.5,84.2L63.6,84.1L61.3,79.9L60.9,79.0L61.8,78.8L64.1,74.9L63.8,74.1L63.5,70.7L63.4,69.9L64.9,70.9L65.7,73.7L71.7,84.1L70.9,85.1L71.6,87.2L71.6,87.3L71.4,87.4Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M33.6,46.4L32.0,42.0L30.7,40.9L29.7,43.6L28.0,41.6L28.5,38.7L26.9,39.8L23.7,43.7L23.1,42.9L21.1,48.7L20.7,47.1L18.1,48.0L17.3,49.2L15.2,49.1L16.2,46.7L15.0,47.0L16.9,44.6L17.8,42.1L20.4,42.8L20.3,46.4L21.3,46.6L20.7,42.6L19.8,41.5L20.4,39.3L22.8,34.3L22.9,33.9L24.1,34.1L25.0,34.6L27.6,33.6L27.9,33.5L28.0,33.8L29.1,35.3L31.6,37.0L31.7,37.2L31.8,37.5L34.4,43.5L35.8,45.0L37.1,44.2L37.1,44.6L37.2,44.9L35.6,45.9L34.8,46.7L33.5,46.6L33.6,46.4Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M259.9,216.6L260.2,216.4L260.3,216.4L260.9,216.4L260.9,216.4L259.5,217.0L259.9,216.7L259.9,216.6Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M32.0,20.4L31.5,22.3L31.5,22.6L31.3,22.7L31.2,22.9L31.1,23.2L31.3,22.4L32.1,18.4L31.9,20.1L32.0,20.4Z M44.1,15.9L44.0,15.9L42.3,17.3L42.0,18.3L40.4,18.5L40.3,18.6L40.3,18.4L38.9,11.0L37.4,10.6L32.1,19.3L33.4,15.0L38.7,6.4L38.8,3.4L38.9,3.5L39.7,7.9L42.8,7.3L44.5,8.5L44.5,8.8L44.5,9.0L42.8,13.5L42.8,13.9L44.1,15.9L44.1,15.9Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M56.1,18.0L55.6,18.6L55.6,19.1L55.0,20.4L54.9,20.5L54.8,20.5L52.5,19.6L47.1,20.3L46.0,18.7L45.9,18.7L45.9,18.6L45.2,16.9L44.5,16.3L44.2,15.9L44.1,15.9L44.1,15.9L42.8,13.9L42.8,13.5L44.5,9.0L44.5,8.8L44.6,8.7L45.2,7.9L45.7,7.5L45.6,7.0L46.1,7.1L47.7,6.7L48.5,7.0L50.4,7.0L50.6,7.1L50.6,7.1L50.9,11.3L52.0,11.2L55.2,14.0L55.9,17.7L55.9,17.8L56.1,18.0Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M145.8,178.4L141.5,182.6L142.5,183.9L151.2,191.1L155.6,192.4L162.5,197.2L163.6,197.4L167.5,196.1L168.0,192.5L168.0,192.3L169.7,191.9L170.5,192.3L170.2,194.9L170.4,195.1L172.6,197.8L175.2,197.5L179.8,198.5L181.4,196.8L180.1,194.8L180.4,194.8L183.8,193.9L186.0,192.1L191.5,190.5L195.9,189.9L196.9,190.9L196.9,194.1L199.9,195.0L200.0,195.1L198.4,197.2L191.8,200.7L189.4,205.9L189.8,206.6L187.0,210.8L185.0,210.3L183.1,217.1L181.3,217.6L181.1,217.7L181.0,217.5L180.5,211.0L176.9,212.8L177.6,208.9L179.4,208.8L180.9,206.3L179.4,205.0L174.0,204.1L171.7,200.6L170.1,199.1L166.8,200.2L167.7,203.1L166.0,204.7L167.9,207.9L167.3,209.1L168.3,215.5L168.1,216.1L164.7,216.7L164.1,215.9L159.9,217.5L157.0,221.6L154.3,222.6L154.0,221.7L148.1,226.9L146.3,227.4L140.9,230.1L139.7,232.3L136.9,232.1L134.3,233.5L132.7,233.4L131.1,242.7L130.3,245.2L127.8,249.1L127.4,253.9L125.7,253.6L123.5,256.0L123.7,256.9L120.3,257.8L118.3,260.1L115.3,258.4L113.4,253.8L111.8,244.3L110.2,240.3L109.6,232.6L108.5,227.2L107.5,225.3L107.8,214.1L108.4,213.3L108.0,209.8L109.7,206.2L110.2,203.1L109.9,200.7L108.9,200.0L108.2,202.7L102.1,203.9L98.3,197.1L98.5,195.4L102.2,196.2L103.8,194.6L101.0,194.8L98.2,192.5L96.9,189.1L97.0,188.6L99.6,187.7L102.8,189.6L107.5,189.1L107.2,186.9L104.8,179.1L109.9,176.2L112.7,177.6L114.4,176.9L123.1,171.3L126.0,168.5L128.9,163.8L126.8,159.8L129.6,154.3L133.5,156.8L138.1,155.9L138.2,155.7L138.7,155.6L140.1,155.2L140.6,155.1L140.9,155.0L141.0,155.0L141.3,156.1L141.6,158.9L143.0,161.0L142.4,161.3L142.3,167.6L139.7,166.9L139.7,171.5L143.7,176.2L145.8,178.1L145.8,178.4Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M63.3,96.8L63.4,97.0L63.9,97.1L64.2,97.4L64.4,97.6L69.4,97.7L69.4,99.2L67.4,100.5L68.4,103.6L68.3,103.7L68.8,110.7L71.0,115.2L75.5,117.2L77.6,117.0L77.8,116.4L85.3,117.7L87.9,119.4L89.4,122.4L91.7,124.9L92.9,129.3L94.9,130.5L93.5,134.3L93.5,134.4L93.4,134.7L91.7,137.0L88.7,138.9L85.4,148.4L87.5,151.3L83.8,154.6L82.7,155.1L82.6,155.2L82.8,156.2L83.6,161.7L85.3,165.1L85.5,168.5L84.4,170.8L83.5,170.3L79.8,170.6L77.7,173.8L77.5,173.8L65.8,163.0L65.9,162.0L62.6,157.2L59.7,157.4L56.6,154.6L52.4,144.8L53.3,134.9L51.5,133.9L51.1,131.7L49.0,132.8L48.8,132.8L48.8,127.3L50.9,124.8L50.0,112.5L51.0,111.4L54.3,109.7L56.1,107.4L54.8,105.2L56.1,100.0L56.1,100.0L56.2,100.0L60.3,91.0L62.5,91.6L62.5,91.7L62.5,91.8L62.3,95.1L63.0,96.3L63.3,96.8Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M56.1,100.0L54.8,105.2L56.1,107.4L54.3,109.7L51.0,111.4L50.0,112.5L50.9,124.8L48.8,127.3L48.8,132.8L48.5,132.7L48.3,132.4L47.5,131.4L47.4,131.5L46.5,130.2L45.3,129.8L42.6,131.5L41.8,131.7L41.3,131.5L35.7,117.5L33.6,108.3L31.8,105.5L31.4,104.9L32.0,104.8L32.1,103.5L33.3,100.8L33.7,99.8L34.7,100.0L43.8,98.9L47.4,95.2L50.9,95.2L50.9,95.2L51.1,95.3L52.3,95.1L54.3,97.9L56.1,99.9L56.1,100.0L56.1,100.0Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M25.8,94.9L25.4,94.7L25.2,94.8L24.5,95.5L24.4,95.3L21.6,96.7L21.8,98.2L21.9,98.3L21.5,98.8L18.9,100.9L17.9,101.9L15.9,103.6L15.6,103.7L16.9,100.7L17.3,99.5L18.4,97.2L18.7,96.3L19.2,96.2L19.4,96.0L20.2,95.6L20.2,95.6L21.4,95.1L22.5,94.4L25.1,92.5L25.5,92.2L26.1,92.9L26.3,93.0L27.8,92.9L27.9,92.9L27.7,93.0L27.2,93.9L27.0,94.0L26.1,94.8L25.9,95.0L25.8,94.9Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M13.4,25.6L10.0,26.3L8.9,27.8L7.5,27.8L7.5,26.1L9.1,18.2L11.1,18.6L11.1,20.7L13.4,25.6Z M19.3,2.6L13.5,5.8L11.5,4.6L12.7,2.4L15.9,0.8L18.8,-1.4L20.4,0.9L19.3,2.6Z M42.9,1.8L42.6,1.8L41.9,1.4L40.7,2.6L39.3,3.7L39.5,3.8L38.0,0.3L34.1,2.5L31.0,8.3L28.0,11.6L27.2,13.1L24.4,24.3L22.8,28.8L21.6,29.2L22.9,23.9L21.2,23.8L18.9,26.9L17.2,27.6L12.9,27.6L12.6,26.7L16.6,25.5L19.9,21.5L21.5,17.7L22.6,11.4L27.6,0.7L30.9,-1.8L32.6,-6.9L29.9,-8.5L29.6,-9.1L31.5,-11.5L34.0,-13.3L37.6,-14.6L38.1,-14.3L38.0,-14.1L40.3,-11.4L39.1,-9.8L40.6,-7.6L42.2,-6.9L42.7,-7.1L44.3,-3.2L43.7,-2.9L42.9,1.2L42.9,1.8Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M30.8,105.0L25.1,101.9L24.8,107.7L22.4,108.2L20.5,106.9L17.4,107.5L15.4,104.3L15.8,103.9L15.9,103.6L17.9,101.9L18.9,100.9L21.5,98.8L21.9,98.3L22.2,98.1L22.9,97.6L23.4,96.8L24.2,96.1L24.5,95.5L25.2,94.8L25.4,94.7L25.8,94.9L25.9,95.0L26.1,95.3L26.3,97.9L26.9,98.8L32.9,99.7L33.7,99.8L33.3,100.8L32.1,103.5L32.0,104.8L31.4,104.9L30.8,105.0Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M311.0,162.3L312.8,161.9L312.5,163.2L313.9,169.5L312.2,172.1L310.0,171.7L310.4,166.6L308.5,165.5L307.9,167.3L307.1,164.6L308.6,162.0L311.0,162.3Z M320.0,156.6L320.9,156.4L320.6,160.2L317.8,161.1L316.5,164.1L315.0,161.8L318.7,156.7L320.0,156.6Z M329.4,122.0L334.0,127.1L334.2,133.1L333.8,134.3L336.0,142.6L336.7,143.2L335.7,147.8L335.2,145.0L334.6,147.2L331.5,148.7L331.0,151.0L326.5,150.8L325.0,158.1L324.2,158.1L322.8,154.1L321.6,154.5L313.6,158.9L313.8,160.4L309.8,161.1L310.4,159.2L314.9,152.9L318.0,151.9L320.6,150.1L323.2,149.4L322.8,148.2L324.3,143.2L325.6,143.8L326.8,142.0L329.2,136.9L329.4,135.7L328.5,129.1L328.0,129.2L327.4,123.5L329.4,122.0Z M331.2,108.7L333.9,108.1L334.4,106.0L334.9,108.4L337.1,109.9L333.5,113.8L333.5,117.0L329.0,116.8L325.4,118.8L328.3,120.7L327.2,121.0L326.5,123.1L323.9,119.1L324.7,116.6L324.0,115.8L326.5,114.3L323.6,106.6L331.2,108.7Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M140.6,155.1L140.1,155.2L138.7,155.6L138.2,155.7L138.2,155.4L138.1,154.3L138.1,153.8L138.0,153.4L138.3,153.7L139.4,154.5L139.9,154.7L140.7,155.0L140.9,155.0L140.6,155.1Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M180.9,109.4L180.7,109.3L178.3,111.2L175.8,111.9L175.0,115.6L172.4,116.7L167.8,115.0L164.8,119.6L164.6,121.8L162.8,120.3L158.1,120.4L157.9,127.6L155.4,131.3L155.3,131.3L155.0,130.8L152.8,128.2L147.6,125.7L142.1,124.1L138.3,122.3L135.8,123.2L134.3,121.8L131.9,120.9L130.3,122.1L130.3,122.4L130.0,122.4L124.0,123.5L121.8,124.9L117.8,121.7L118.0,117.9L117.2,117.5L119.1,114.0L117.2,109.8L116.0,109.8L113.1,108.0L110.1,106.9L109.3,102.9L106.0,94.6L99.3,92.9L91.7,104.9L91.3,105.7L91.2,105.6L90.0,105.1L89.4,99.5L84.3,98.4L84.5,98.0L86.8,95.0L85.0,91.6L85.7,85.9L87.6,86.0L88.8,87.5L88.8,85.1L90.5,84.5L94.1,87.4L93.8,85.9L96.1,84.4L97.5,81.5L94.6,78.4L88.7,77.4L88.6,77.6L90.2,71.3L88.6,69.4L89.7,65.9L96.3,61.6L96.8,65.1L98.7,63.0L105.6,62.5L108.1,64.7L108.1,65.7L111.7,73.4L115.5,73.6L115.9,74.7L118.1,75.4L118.8,77.8L123.7,79.9L124.3,77.3L127.7,72.2L129.8,72.9L128.7,71.1L130.4,68.8L135.8,71.0L144.6,72.8L146.2,72.3L149.5,73.2L151.4,75.7L150.3,78.4L154.6,81.4L154.0,83.2L155.9,83.9L161.4,84.0L163.2,87.3L166.1,98.1L167.0,97.0L168.3,99.3L170.7,100.3L172.2,100.0L176.2,106.1L178.4,107.2L179.9,106.4L180.9,109.2L180.9,109.4Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M155.3,131.6L145.8,133.4L144.5,133.1L142.3,135.0L138.4,133.1L133.9,135.8L133.6,135.8L133.5,135.7L129.4,135.2L127.9,133.0L121.8,130.7L122.5,129.0L127.3,130.0L127.4,129.9L127.5,129.9L129.5,131.0L134.1,130.0L129.6,126.9L129.5,123.4L130.4,122.3L130.3,122.4L130.3,122.1L131.9,120.9L134.3,121.8L135.8,123.2L138.3,122.3L142.1,124.1L147.6,125.7L152.8,128.2L155.0,130.8L155.3,131.3L155.3,131.6Z M127.5,131.5L127.1,130.5L127.2,131.0L127.5,131.5Z M126.1,131.2L125.5,130.8L125.6,131.0L126.1,131.2Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M224.0,264.5L221.6,264.6L221.6,262.5L219.6,263.0L218.8,259.9L218.8,260.0L216.4,252.9L218.8,250.7L221.3,249.6L227.6,250.0L227.7,249.9L227.7,250.0L231.1,251.5L233.9,249.9L236.6,248.5L236.8,248.4L236.8,248.6L237.2,252.9L236.5,257.8L232.3,260.1L230.8,260.1L230.0,262.8L228.5,263.0L224.7,265.0L224.0,264.5Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M298.5,146.9L302.8,153.1L303.3,158.0L296.4,162.6L294.5,160.1L295.1,157.7L292.9,153.4L293.9,151.8L293.0,150.1L293.0,150.0L293.7,147.9L297.3,145.4L298.5,146.9Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M33.4,31.4L31.9,29.9L31.0,29.9L31.0,29.8L31.2,29.7L32.0,29.0L32.4,28.2L32.9,27.0L32.9,26.8L33.0,26.8L33.5,26.3L33.7,26.3L34.0,26.6L34.2,26.9L34.4,27.1L35.8,26.6L35.8,28.0L33.5,31.3L33.4,31.4L33.4,31.4Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M45.6,137.7L43.6,136.1L43.6,135.6L42.3,132.2L41.8,131.7L42.6,131.5L45.3,129.8L46.5,130.2L47.4,131.5L47.3,131.7L47.0,133.3L46.6,132.8L45.7,137.2L45.6,137.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M216.5,219.1L219.3,221.5L219.0,223.4L224.4,224.9L224.5,226.4L226.6,228.0L222.8,230.9L227.3,233.2L227.5,234.5L232.8,240.1L232.9,241.0L236.2,243.2L235.3,244.2L236.7,247.9L236.8,248.4L236.6,248.5L233.9,249.9L231.1,251.5L227.7,250.0L227.7,249.9L227.9,249.8L229.0,247.2L228.5,243.6L226.0,239.4L226.2,238.5L222.9,234.6L220.7,234.2L219.6,235.3L219.6,235.2L219.6,235.3L219.6,235.3L217.2,235.8L215.6,235.1L212.0,237.6L212.8,231.9L211.7,229.4L209.6,229.1L208.6,226.7L208.6,226.5L208.6,226.3L210.3,224.3L210.2,224.2L212.3,222.1L212.5,221.8L212.7,222.0L215.0,223.2L214.9,218.2L216.1,218.6L216.3,218.7L216.5,219.1Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M27.8,92.9L26.3,93.0L26.1,92.9L25.5,92.2L25.8,92.1L29.0,90.3L29.7,89.7L31.2,89.5L31.4,89.2L32.1,89.8L31.5,92.0L28.1,92.9L27.9,92.9L27.8,92.9Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M-23.8,102.0L-25.1,103.7L-27.7,107.2L-28.9,109.0L-32.2,107.7L-32.5,105.4L-34.7,75.2L-34.7,69.0L-39.5,65.8L-38.8,62.1L-39.2,57.4L-39.5,55.3L-37.6,47.7L-33.8,39.0L-31.5,38.9L-22.4,30.7L-19.8,27.5L-19.6,27.7L-19.3,27.9L-17.1,28.5L-14.8,26.3L-10.4,28.3L-7.7,26.3L-7.8,26.9L-8.0,31.2L-7.1,34.5L-7.7,40.9L-9.6,43.4L-9.9,45.8L-9.1,50.0L-9.4,57.8L-7.9,58.9L-3.5,55.6L-1.9,54.9L3.1,58.8L3.0,62.9L4.1,69.9L3.7,70.7L3.6,70.9L2.2,71.1L-1.6,74.5L-4.0,78.2L-11.0,86.2L-23.2,101.3L-23.8,102.0Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M127.7,256.0L131.3,260.3L133.9,267.3L132.9,270.1L127.0,270.8L125.7,267.3L125.9,262.5L127.0,260.3L127.7,256.0Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M80.9,0.5L80.9,0.4L81.4,0.4L81.8,0.4L81.2,0.5L80.9,0.5Z M86.5,10.5L86.4,10.6L84.9,11.6L82.8,10.8L80.6,11.5L77.6,8.5L77.6,8.3L77.6,8.2L78.3,7.8L78.8,6.0L78.6,6.0L78.8,5.8L79.6,5.3L80.5,5.1L81.0,1.1L81.1,1.1L81.3,0.9L83.0,-0.3L83.8,-0.8L84.0,-0.9L86.0,0.5L87.4,7.8L86.5,10.4L86.5,10.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M94.1,8.0L93.1,9.4L92.3,9.6L89.8,12.2L89.6,12.3L89.6,12.2L87.6,11.5L87.5,11.0L86.6,10.5L86.5,10.5L86.5,10.4L87.4,7.8L86.0,0.5L84.0,-0.9L84.7,-1.3L90.3,-2.5L89.2,2.3L92.8,1.8L93.1,1.7L94.4,2.7L94.1,4.3L94.0,7.7L94.1,7.8L94.1,8.0Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M258.3,217.9L258.3,217.9L258.1,218.0L258.1,218.0L258.1,218.0L258.1,218.0L258.1,217.9L258.2,217.8L258.3,217.9Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M52.1,38.6L56.5,35.2L57.0,34.5L59.9,28.3L59.8,28.1L60.0,28.0L61.7,30.3L61.6,34.2L58.6,39.1L52.2,38.9L52.0,38.9L52.1,38.6Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M34.1,34.0L33.1,36.4L32.7,36.6L31.8,37.2L31.7,37.2L31.6,37.0L29.1,35.3L28.0,33.8L27.9,33.5L27.9,33.4L29.7,30.4L31.0,29.8L31.0,29.8L31.0,29.9L31.9,29.9L33.4,31.4L33.4,31.4L33.4,31.6L33.6,31.8L34.4,33.1L34.4,33.2L34.1,34.0Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M202.6,195.4L204.5,197.9L204.6,201.8L199.8,209.7L200.0,212.1L202.2,211.3L204.5,211.6L204.2,212.9L205.7,215.5L205.8,219.4L208.2,220.0L208.1,220.9L210.8,222.0L212.6,221.7L212.5,221.8L212.3,222.1L210.2,224.2L210.3,224.3L208.6,226.3L208.6,226.5L208.2,226.2L204.4,227.4L204.0,228.4L201.0,228.2L198.0,233.0L201.1,238.4L202.6,241.7L202.0,245.2L200.5,245.9L201.8,249.2L203.5,250.9L204.2,255.6L205.6,259.3L202.2,263.3L201.8,265.2L201.6,265.2L200.9,263.3L201.9,256.2L201.1,252.5L199.0,247.1L198.9,244.9L196.9,238.5L194.7,240.2L192.3,241.2L187.0,242.1L187.3,239.8L185.3,241.1L187.2,235.7L182.3,224.2L179.9,222.5L179.7,222.2L180.9,220.5L181.1,217.9L181.1,217.7L181.3,217.6L183.1,217.1L185.0,210.3L187.0,210.8L189.8,206.6L189.4,205.9L191.8,200.7L198.4,197.2L200.0,195.1L200.1,194.9L201.6,194.6L202.0,194.7L202.4,195.3L202.6,195.4Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M35.6,22.2L34.7,24.3L34.7,24.7L34.3,26.8L34.2,26.9L34.0,26.6L33.7,26.3L33.5,26.3L33.0,26.8L32.9,26.8L32.9,26.8L32.8,25.9L32.8,25.6L29.8,26.7L30.0,26.1L30.8,24.6L31.0,23.6L31.1,23.3L31.1,23.2L31.2,22.9L31.3,22.7L31.5,22.6L31.5,22.7L32.9,21.7L33.3,22.0L35.6,22.1L35.6,22.2L35.6,22.2Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M255.8,109.4L255.2,117.4L256.0,116.6L259.9,115.5L266.3,119.7L263.5,119.8L259.9,121.1L259.8,122.0L255.8,126.2L252.7,126.9L250.4,129.6L247.6,129.2L245.3,132.9L245.8,133.3L242.1,138.2L239.4,139.6L231.6,140.5L227.4,142.7L225.0,142.3L216.9,139.8L210.4,139.1L203.9,137.8L201.5,137.9L198.4,131.4L196.2,129.7L192.5,127.6L190.8,127.4L187.0,124.9L188.3,122.7L188.1,119.1L187.2,116.2L182.2,111.8L182.2,109.6L182.2,109.4L182.2,109.4L183.4,108.5L187.4,108.0L188.7,106.8L194.3,105.3L196.3,105.8L199.9,108.8L207.6,109.9L208.8,109.4L208.4,105.5L211.5,101.6L215.1,103.3L219.5,107.4L222.8,109.8L226.9,108.5L233.8,110.7L235.6,112.7L240.0,112.9L244.5,111.7L249.2,108.1L253.2,108.9L255.8,108.6L255.9,108.8L255.8,109.4Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M215.9,280.9L219.7,284.5L220.8,287.8L221.0,293.8L222.1,294.6L224.0,299.0L220.2,298.4L215.2,295.7L209.4,289.1L208.1,282.3L207.3,280.2L207.1,279.7L211.0,280.9L210.6,282.4L215.2,280.7L215.9,280.9Z M275.1,276.3L278.7,277.2L278.5,278.8L280.1,278.1L285.3,280.1L281.4,282.0L282.8,283.9L278.2,285.4L271.8,285.5L271.0,286.2L270.4,290.0L267.8,295.2L266.1,296.8L263.2,298.0L260.1,297.1L258.2,297.2L250.5,300.2L246.5,297.7L249.3,297.2L252.2,297.6L254.9,292.6L260.3,290.9L265.0,285.7L266.5,287.2L268.6,285.7L272.5,278.7L275.1,276.3Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M145.9,178.7L147.3,178.1L149.4,178.6L153.5,184.3L155.3,184.5L155.5,185.8L159.0,189.1L165.2,192.1L167.7,192.4L168.0,192.5L167.5,196.1L163.6,197.4L162.5,197.2L155.6,192.4L151.2,191.1L142.5,183.9L141.5,182.6L145.8,178.4L145.9,178.7Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M61.4,167.1L62.3,171.4L66.0,174.8L67.2,179.9L68.3,181.2L61.0,186.8L59.2,186.2L56.9,191.0L52.6,190.5L50.9,192.3L48.3,191.3L44.3,193.2L43.2,192.2L39.3,191.3L38.5,191.2L38.5,188.3L38.3,188.0L38.5,180.6L38.6,180.1L39.1,180.2L49.4,182.1L53.1,177.5L54.2,172.9L54.2,172.3L54.5,171.8L57.0,168.2L59.5,165.3L61.5,165.9L61.4,167.1Z M62.3,163.3L62.0,163.1L61.9,162.9L62.3,161.4L62.8,161.0L63.4,161.8L62.4,163.1L62.3,163.3Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M138.1,153.8L138.1,154.3L138.2,155.4L138.2,155.7L138.1,155.9L133.5,156.8L129.6,154.3L126.8,159.8L128.9,163.8L126.0,168.5L123.1,171.3L114.4,176.9L112.7,177.6L109.9,176.2L104.8,179.1L107.2,186.9L107.5,189.1L102.8,189.6L99.6,187.7L97.0,188.6L96.8,188.8L94.5,186.2L93.4,182.8L93.2,179.4L87.0,178.2L77.6,173.9L77.7,173.8L79.8,170.6L83.5,170.3L84.4,170.8L85.5,168.5L85.3,165.1L83.6,161.7L82.8,156.2L82.6,155.2L83.5,156.2L91.5,161.9L98.5,163.1L100.4,159.7L103.1,158.8L104.3,159.6L108.9,159.7L110.8,159.3L113.6,155.4L115.7,155.1L116.9,153.0L119.2,153.2L119.3,151.5L121.4,150.4L122.4,148.7L122.3,146.6L125.7,144.6L132.7,146.0L133.1,145.9L133.3,145.9L136.5,148.9L136.6,152.3L137.9,153.3L138.0,153.4L138.1,153.8Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M310.8,260.5L311.7,263.2L312.6,263.4L313.9,268.2L312.9,270.2L310.8,268.3L309.5,271.0L310.9,273.5L309.8,275.2L305.8,273.9L304.0,270.4L303.9,268.6L301.3,269.8L298.1,268.9L296.3,272.5L295.5,271.5L299.4,266.9L299.9,265.7L302.4,265.1L304.0,266.2L306.5,262.7L309.0,262.1L308.3,259.6L310.8,260.5Z M299.6,263.6L296.5,261.7L298.1,259.9L298.3,256.8L300.4,257.6L299.5,261.6L299.6,263.6Z M300.4,262.0L300.3,260.0L302.0,254.9L302.5,257.9L300.4,262.0Z M276.7,269.4L276.7,268.4L283.9,260.3L282.7,262.7L279.2,267.4L276.7,269.4Z M296.1,254.3L298.5,255.5L297.5,257.2L294.5,257.1L294.4,254.2L296.1,254.3Z M306.3,248.8L308.8,253.7L303.4,250.9L303.7,249.4L306.3,248.8Z M288.4,248.3L290.3,248.2L291.8,249.3L292.0,251.0L290.5,252.8L287.0,248.8L288.4,248.3Z M287.6,228.3L291.9,228.0L293.7,233.1L290.5,240.0L292.8,245.5L296.7,244.2L301.8,247.7L298.5,248.1L295.5,245.5L295.8,248.2L292.3,245.9L287.8,246.4L288.9,244.0L287.3,243.0L285.4,243.4L283.9,237.9L286.0,238.0L285.3,232.5L286.2,228.8L287.6,228.3Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M434.3,281.9L433.2,283.2L429.3,280.5L429.8,279.3L433.7,280.9L434.3,281.9Z M418.1,279.7L419.7,281.7L418.6,284.7L414.4,289.0L410.5,291.2L405.5,291.2L405.5,290.0L415.1,285.7L418.1,279.7Z M388.1,290.1L394.9,291.6L395.1,293.8L403.5,294.4L403.7,295.1L400.3,297.5L403.6,300.4L405.3,300.6L408.1,303.4L409.3,302.6L410.1,304.2L413.0,303.8L412.6,305.3L415.0,306.7L410.6,307.2L403.5,308.4L401.0,306.0L397.1,303.6L391.0,303.9L387.2,306.9L386.6,309.7L383.7,313.2L382.7,313.0L377.4,314.5L376.6,306.0L375.4,289.8L388.1,290.1Z M422.3,279.7L420.9,277.8L412.9,275.7L413.1,274.9L418.0,275.4L422.1,277.1L422.3,279.7Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M78.6,6.0L78.8,6.0L78.3,7.8L77.6,8.2L77.6,8.3L76.4,9.2L73.1,11.8L71.1,11.4L69.0,13.5L68.6,13.9L68.4,14.1L64.9,17.2L64.5,16.7L59.0,17.8L58.8,17.2L58.7,17.1L58.7,17.0L59.2,15.1L58.1,11.5L57.1,11.3L57.5,8.1L57.4,7.8L57.5,7.7L58.7,6.3L59.7,1.8L58.4,1.8L60.6,-3.0L60.2,-4.0L60.3,-4.0L65.0,-6.4L67.6,-8.7L71.9,-10.4L77.5,-4.4L76.8,-0.6L76.9,-0.6L78.2,4.8L78.6,5.9L78.6,6.0Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M299.1,128.6L299.2,128.8L299.7,129.3L299.8,129.3L299.7,129.5L297.9,132.9L298.8,135.4L293.8,141.6L293.9,143.9L297.1,145.2L297.3,145.4L293.7,147.9L293.0,150.0L293.0,150.0L286.9,150.1L289.0,147.3L287.6,146.9L287.6,144.2L284.3,143.0L284.3,143.0L285.6,140.9L288.1,138.4L290.8,135.1L293.8,134.9L292.9,133.1L295.8,130.9L296.8,128.3L299.0,128.5L299.1,128.6Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M45.1,156.0L48.7,152.0L46.3,157.8L45.9,157.7L44.8,156.6L44.9,156.1L45.1,156.0Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M51.8,39.4L51.8,39.8L52.6,41.1L53.3,42.7L53.0,42.9L51.1,41.8L50.8,42.2L47.0,44.2L46.8,44.4L45.9,39.3L45.3,38.6L41.5,29.5L41.5,29.2L41.6,29.1L42.1,25.7L43.8,22.8L45.7,19.0L45.9,18.7L46.0,18.7L47.1,20.3L52.5,19.6L54.8,20.5L54.9,20.5L55.0,20.6L56.0,23.5L56.1,25.6L59.7,28.0L59.8,28.1L59.9,28.3L57.0,34.5L56.5,35.2L52.1,38.6L52.0,38.9L51.8,39.4Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M309.2,73.0L318.9,85.8L322.3,90.0L320.0,91.2L321.2,96.6L326.5,100.9L326.7,102.2L323.7,100.6L323.1,103.8L321.6,100.3L318.1,94.2L317.2,90.9L314.2,84.9L311.1,81.7L309.2,73.0Z M81.0,1.1L80.5,5.1L79.6,5.3L78.8,5.8L78.6,6.0L78.6,5.9L78.2,4.8L76.9,-0.6L77.3,-0.4L77.7,-0.4L79.3,0.1L80.7,0.4L80.9,0.4L80.9,0.5L80.5,0.5L79.5,0.4L80.4,1.4L81.0,1.1Z M311.2,-12.7L319.6,-16.2L322.8,-15.0L324.0,-16.2L321.4,-17.6L322.7,-19.7L325.5,-20.6L328.8,-18.6L327.9,-17.0L330.3,-16.3L332.4,-13.1L326.3,-10.9L325.6,-8.3L322.1,-7.8L324.8,-7.0L325.2,-5.7L311.0,-12.6L311.2,-12.7Z M172.6,2.2L173.2,3.3L168.5,6.5L167.3,11.5L164.8,9.8L163.6,7.7L165.1,7.6L164.2,4.2L171.4,1.2L172.6,2.2Z M265.9,0.5L269.7,-1.2L268.7,1.4L265.8,1.4L265.9,0.5Z M259.2,2.5L259.6,0.9L264.1,0.7L263.5,3.3L261.8,2.7L263.6,4.6L260.9,5.5L259.7,6.8L257.8,5.8L257.4,1.8L259.2,2.5Z M190.8,0.7L183.1,0.3L173.7,3.2L171.9,1.4L172.7,-0.1L186.1,-2.6L189.5,-1.4L193.0,-1.2L190.8,0.7Z M299.8,129.3L299.7,129.3L299.2,128.8L299.1,128.6L299.2,128.4L300.1,126.5L298.5,118.5L299.4,117.0L302.7,116.5L302.3,104.4L300.8,103.3L298.6,105.2L297.5,107.3L293.9,108.6L291.6,105.2L289.0,103.8L283.7,103.7L279.9,98.6L278.4,96.2L274.7,92.1L266.7,92.2L263.2,94.2L264.2,98.8L263.0,100.5L261.7,105.5L262.2,106.8L259.1,109.5L256.5,109.0L255.9,108.8L255.8,108.6L253.2,108.9L249.2,108.1L244.5,111.7L240.0,112.9L235.6,112.7L233.8,110.7L226.9,108.5L222.8,109.8L219.5,107.4L215.1,103.3L211.5,101.6L208.4,105.5L208.8,109.4L207.6,109.9L199.9,108.8L196.3,105.8L194.3,105.3L188.7,106.8L187.4,108.0L183.4,108.5L182.2,109.4L182.2,109.4L182.1,109.4L181.5,109.4L181.3,109.5L181.2,109.5L180.9,109.4L180.9,109.2L179.9,106.4L178.4,107.2L176.2,106.1L172.2,100.0L170.7,100.3L168.3,99.3L167.0,97.0L166.1,98.1L163.2,87.3L161.4,84.0L155.9,83.9L154.0,83.2L154.6,81.4L150.3,78.4L151.4,75.7L149.5,73.2L146.2,72.3L144.6,72.8L135.8,71.0L130.4,68.8L128.7,71.1L129.8,72.9L127.7,72.2L124.3,77.3L123.7,79.9L118.8,77.8L118.1,75.4L115.9,74.7L115.5,73.6L111.7,73.4L108.1,65.7L108.1,64.7L105.6,62.5L98.7,63.0L96.8,65.1L96.3,61.6L89.7,65.9L88.6,69.4L90.2,71.3L88.6,77.6L88.5,77.8L78.8,79.6L78.9,82.9L76.6,85.4L75.9,91.0L75.9,91.4L72.9,92.2L71.9,90.8L71.8,87.6L71.6,87.3L71.6,87.2L70.9,85.1L71.7,84.1L65.7,73.7L64.9,70.9L63.4,69.9L63.4,69.5L63.0,57.7L65.4,59.1L66.1,58.4L68.7,58.8L69.0,56.1L72.6,57.2L72.0,55.5L71.3,55.2L72.9,54.0L77.6,55.1L79.5,52.4L81.7,51.5L80.6,46.7L79.8,46.7L79.3,36.3L82.0,31.9L78.9,28.9L78.9,28.8L79.0,28.8L82.3,25.4L82.6,26.9L84.8,24.6L86.0,22.4L90.1,18.6L90.2,16.4L89.2,15.8L89.4,12.7L89.6,12.3L89.8,12.2L92.3,9.6L93.1,9.4L94.1,8.0L94.1,7.8L94.2,7.7L95.2,7.5L98.6,5.3L101.9,4.7L102.2,4.6L103.8,5.4L105.4,4.9L106.1,2.7L105.7,2.1L114.8,3.2L118.3,1.7L119.3,-0.9L121.9,-2.3L124.1,-4.3L128.1,-5.8L130.8,-8.5L136.3,-11.9L139.2,-12.7L139.4,-12.5L140.5,-12.7L144.4,-10.9L143.8,-5.9L142.5,1.5L142.3,3.9L139.8,6.2L134.6,5.2L133.3,0.6L133.9,-4.9L131.6,-1.7L131.1,0.5L128.8,1.4L126.9,3.3L126.1,9.1L126.6,9.4L128.8,5.2L131.6,10.5L132.3,9.8L136.6,8.2L139.9,10.3L139.3,11.8L146.9,6.1L147.5,4.4L149.2,7.3L148.3,9.4L145.0,8.9L144.5,12.5L145.7,13.1L148.1,11.7L156.5,13.1L158.9,14.0L155.7,15.0L161.3,17.6L163.9,17.7L162.6,19.6L166.1,19.3L167.1,16.8L168.4,16.7L170.6,19.0L173.0,24.1L173.5,26.9L175.3,25.2L177.1,17.5L180.2,15.9L185.1,12.1L187.8,14.7L184.3,18.4L184.0,21.1L177.5,32.1L174.3,34.6L172.5,34.1L171.2,32.5L172.0,34.9L173.1,35.4L178.1,34.9L180.9,32.8L182.1,29.5L185.3,29.4L184.2,34.1L186.2,32.8L186.8,30.3L185.1,28.3L182.8,27.7L184.1,23.9L185.5,22.7L185.7,19.1L190.7,15.3L190.3,17.5L189.2,18.4L188.4,21.1L191.3,23.2L189.7,20.2L193.6,18.3L198.1,22.8L195.9,24.8L196.8,25.5L195.6,27.6L197.2,27.0L198.4,22.2L197.3,19.9L197.1,17.3L197.8,15.0L206.0,14.2L204.8,12.8L210.4,10.4L219.2,9.1L220.3,10.0L221.6,8.2L222.2,5.7L224.2,4.1L227.8,6.7L227.1,8.1L231.6,7.4L234.5,12.3L229.3,18.8L227.6,20.2L228.9,20.8L231.0,19.6L230.9,18.3L235.2,18.2L235.5,19.0L238.8,17.9L241.1,17.8L241.4,19.1L247.0,18.9L248.1,15.7L252.9,16.0L254.4,20.3L257.6,23.2L259.8,23.9L259.7,19.1L262.4,20.3L267.3,18.2L268.0,16.2L266.1,13.8L268.2,11.5L272.0,11.8L274.5,9.4L277.4,8.6L277.5,10.0L280.1,10.7L280.7,9.7L284.7,9.1L286.0,6.8L288.1,5.2L291.0,4.8L293.2,6.9L296.4,6.5L296.8,4.0L300.5,-0.7L302.4,-0.1L305.7,-1.4L305.2,-2.4L302.5,-2.8L301.0,-4.2L304.3,-7.8L305.1,-9.4L311.0,-12.6L326.2,-5.2L327.5,-0.4L330.7,-0.0L335.8,1.8L333.1,4.1L333.8,5.7L333.7,11.1L335.3,18.0L336.5,20.3L334.2,20.1L332.4,21.4L332.2,26.6L331.2,25.6L328.7,29.4L329.1,30.9L335.6,38.5L337.1,39.9L339.8,41.0L338.5,42.1L339.6,45.6L342.3,47.2L341.3,49.2L341.0,52.8L343.0,55.4L342.4,59.2L343.3,60.3L343.8,67.1L332.7,57.1L330.3,54.6L327.4,49.8L326.6,44.4L327.1,42.7L326.8,38.6L326.3,37.3L323.7,24.4L321.9,21.6L320.2,22.9L322.2,25.5L321.9,26.6L322.7,31.3L322.2,32.4L319.9,30.7L318.8,28.7L317.3,29.7L315.1,33.0L316.0,37.2L316.3,42.0L317.0,44.6L314.3,48.5L311.5,47.0L309.4,47.4L309.4,49.8L308.0,50.1L304.7,53.2L303.6,52.8L299.7,55.3L298.4,57.6L297.8,60.6L298.0,63.2L296.2,67.8L295.6,72.5L293.7,76.9L293.4,78.8L296.9,78.1L299.4,81.3L302.1,80.2L303.3,76.5L308.5,78.4L308.0,79.8L311.1,83.3L310.8,84.8L311.7,89.2L314.2,95.0L314.3,98.6L313.6,107.4L312.0,112.8L310.1,120.6L306.0,125.6L299.9,129.2L299.8,129.3Z M223.7,-1.9L225.7,0.9L222.2,2.0L223.7,-1.9Z M220.1,-5.5L221.2,-4.8L221.2,-1.5L220.4,-0.4L216.7,-3.9L220.1,-5.5Z M219.8,-8.9L219.8,-5.8L217.3,-5.2L215.9,-6.4L219.8,-8.9Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M41.8,131.7L42.3,132.2L43.6,135.6L43.6,136.1L45.6,137.7L45.6,138.1L45.0,141.9L46.4,147.0L45.5,150.0L44.8,155.7L44.9,156.1L44.8,156.6L45.9,157.7L46.0,158.0L45.9,158.4L45.5,158.8L46.1,159.4L46.2,159.5L47.2,166.9L53.9,172.5L54.2,172.3L54.2,172.9L53.1,177.5L49.4,182.1L39.1,180.2L38.6,180.1L37.8,179.8L29.5,175.9L25.7,175.5L22.4,177.3L20.2,177.4L18.7,174.9L10.8,167.3L9.8,167.4L7.0,170.2L7.1,169.8L7.2,163.5L6.8,162.0L7.5,154.0L6.4,148.6L9.0,138.2L9.3,126.7L10.4,123.8L12.5,109.3L11.8,107.8L13.4,106.0L15.4,104.3L17.4,107.5L20.5,106.9L22.4,108.2L24.8,107.7L25.1,101.9L30.8,105.0L31.4,104.9L31.8,105.5L33.6,108.3L35.7,117.5L41.3,131.5L41.8,131.7Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M1.8,135.7L0.1,141.0L-2.9,148.0L-1.5,153.5L-1.5,153.9L-6.4,154.3L-7.7,153.4L-10.8,157.3L-12.9,159.0L-13.8,161.4L-14.3,162.6L-15.0,163.4L-18.2,167.3L-19.9,166.7L-21.9,168.0L-24.7,171.3L-27.1,170.9L-29.5,174.5L-29.5,174.5L-29.5,174.4L-28.7,171.1L-29.6,166.7L-27.8,162.7L-30.2,159.1L-30.9,162.8L-36.5,165.2L-38.2,162.4L-43.3,159.6L-45.5,157.8L-45.7,156.1L-48.7,153.0L-48.9,146.8L-50.3,145.6L-53.7,147.5L-54.9,148.8L-56.2,148.4L-57.4,146.0L-55.1,142.4L-54.6,135.7L-53.6,134.6L-52.5,125.1L-50.6,124.6L-48.0,122.5L-47.4,120.5L-41.9,120.3L-41.5,121.2L-33.3,109.3L-32.2,107.7L-28.9,109.0L-27.7,107.2L-25.1,103.7L-23.8,102.0L-23.1,103.2L-15.3,114.2L-8.5,122.8L-1.7,130.6L2.3,134.9L1.8,135.7Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M10.4,214.0L9.3,213.3L7.0,211.6L-0.9,201.3L-2.2,191.4L-1.5,191.1L-1.4,190.9L-0.7,190.5L-0.1,190.1L0.3,189.8L0.7,190.8L2.2,196.6L4.0,197.8L7.3,198.2L11.0,200.5L12.1,200.4L17.0,202.6L17.6,203.4L17.7,203.4L15.5,210.0L15.4,210.4L11.2,213.4L10.4,214.0Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M-14.2,216.0L-10.9,216.9L-9.4,216.3L-3.3,219.3L1.3,217.3L9.3,214.4L10.4,214.0L11.2,213.4L15.4,210.4L15.5,210.0L17.7,203.4L18.1,203.6L24.7,204.5L22.8,211.4L20.5,215.3L15.9,219.1L9.7,225.2L1.4,230.1L-2.2,231.5L-9.1,231.9L-12.7,233.0L-21.2,237.6L-22.3,233.2L-20.1,224.2L-15.5,216.9L-14.8,216.4L-14.2,216.0Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M45.9,18.7L45.7,19.0L43.8,22.8L42.1,25.7L41.6,29.1L41.5,29.2L41.4,29.1L36.8,32.6L36.4,32.1L34.6,33.3L34.4,33.2L34.4,33.1L33.6,31.8L33.4,31.6L33.4,31.4L33.5,31.3L35.8,28.0L35.8,26.6L34.4,27.1L34.2,26.9L34.3,26.8L34.7,24.7L34.7,24.3L35.6,22.2L35.6,22.2L35.9,22.3L37.8,22.0L39.0,19.8L40.4,18.7L40.3,18.6L40.4,18.5L42.0,18.3L42.3,17.3L44.0,15.9L44.1,15.9L44.2,15.9L44.5,16.3L45.2,16.9L45.9,18.6L45.9,18.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M58.6,17.2L57.9,17.3L57.4,17.4L56.5,17.4L55.9,17.8L55.9,17.7L55.2,14.0L52.0,11.2L50.9,11.3L50.6,7.1L50.6,7.1L50.7,6.9L51.9,5.6L52.1,5.5L52.7,5.4L52.7,5.4L53.0,5.3L54.5,6.7L55.2,7.1L57.4,7.8L57.4,7.8L57.5,8.1L57.1,11.3L58.1,11.5L59.2,15.1L58.7,17.0L58.7,17.1L58.6,17.2Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M44.5,8.5L42.8,7.3L39.7,7.9L38.9,3.5L39.0,3.6L39.3,3.7L40.7,2.6L41.9,1.4L42.6,1.8L42.9,1.8L42.9,1.9L44.2,5.3L44.8,6.5L45.5,6.9L45.6,7.0L45.7,7.5L45.2,7.9L44.6,8.7L44.5,8.8L44.5,8.5Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M50.9,95.2L47.4,95.2L43.8,98.9L34.7,100.0L33.7,99.8L32.9,99.7L26.9,98.8L26.3,97.9L26.1,95.3L25.9,95.0L26.1,94.8L27.0,94.0L27.2,93.9L27.7,93.0L27.9,92.9L28.1,92.9L31.5,92.0L32.1,89.8L31.4,89.2L31.8,88.3L33.4,86.5L33.5,85.6L34.5,84.9L34.7,84.8L35.0,85.7L38.5,83.7L39.7,86.0L41.9,86.9L43.6,90.2L46.7,91.5L51.1,94.7L50.9,95.2L50.9,95.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M208.6,226.5L208.6,226.7L209.6,229.1L211.7,229.4L212.8,231.9L212.0,237.6L215.6,235.1L217.2,235.8L219.6,235.3L220.7,234.2L222.9,234.6L226.2,238.5L226.0,239.4L228.5,243.6L229.0,247.2L227.9,249.8L227.7,249.9L227.6,250.0L221.3,249.6L218.8,250.7L216.4,252.9L218.8,260.0L218.7,260.0L214.0,256.1L211.1,253.2L208.2,252.9L207.2,253.8L207.2,257.2L205.0,262.7L203.6,264.8L204.2,269.0L206.5,269.5L206.7,271.2L208.7,277.0L210.8,278.3L212.4,278.2L214.0,279.8L215.2,280.7L210.6,282.4L211.0,280.9L207.1,279.7L206.1,278.5L199.7,271.8L201.2,266.5L201.8,265.2L202.2,263.3L205.6,259.3L204.2,255.6L203.5,250.9L201.8,249.2L200.5,245.9L202.0,245.2L202.6,241.7L201.1,238.4L198.0,233.0L201.0,228.2L204.0,228.4L204.4,227.4L208.2,226.2L208.6,226.5Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M126.1,131.2L125.6,131.0L125.5,130.8L126.1,131.2Z M127.4,129.9L127.3,130.0L122.5,129.0L121.8,130.7L127.9,133.0L129.4,135.2L133.5,135.7L133.6,135.8L133.6,136.0L133.0,139.1L135.7,141.0L134.4,145.5L134.3,145.5L134.3,145.4L130.6,143.1L124.2,143.9L125.5,139.8L124.1,136.5L121.1,139.1L115.6,138.5L113.9,137.8L113.9,137.6L114.2,137.4L117.0,132.4L116.1,129.4L122.7,128.1L123.1,126.7L127.1,126.4L127.2,129.9L127.4,129.9Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M110.8,135.4L110.6,135.3L109.1,133.6L108.0,134.5L105.5,134.1L103.6,136.4L99.0,136.3L98.1,137.7L95.5,137.5L93.7,134.5L93.5,134.4L93.5,134.3L94.9,130.5L92.9,129.3L91.7,124.9L89.4,122.4L87.9,119.4L85.3,117.7L77.8,116.4L77.9,116.1L81.0,111.0L81.1,105.8L83.5,102.5L84.9,104.7L87.8,104.3L87.3,102.4L88.0,99.6L85.8,98.6L84.0,99.5L84.3,98.4L89.4,99.5L90.0,105.1L91.2,105.6L91.3,105.7L91.9,106.2L93.6,107.6L94.7,105.4L96.3,105.0L99.3,106.0L99.2,105.0L102.1,109.5L101.3,111.7L105.2,115.4L104.6,120.4L110.9,135.0L110.8,135.4Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M-7.7,26.3L-10.4,28.3L-14.8,26.3L-17.1,28.5L-19.3,27.9L-19.6,27.7L-18.8,26.8L-8.0,12.0L-5.0,12.2L-3.0,11.6L-0.4,9.7L4.0,8.1L4.3,8.7L5.8,11.3L4.7,13.6L5.2,15.9L2.8,15.5L1.7,16.1L-0.7,19.9L-4.5,19.3L-6.8,21.8L-7.7,25.8L-7.7,26.3Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M60.9,79.0L61.3,79.9L63.6,84.1L63.5,84.2L63.4,84.3L61.7,88.7L62.4,89.4L62.6,91.2L62.6,91.4L62.6,91.5L62.5,91.7L62.5,91.6L60.3,91.0L56.2,100.0L56.1,100.0L56.1,99.9L54.3,97.9L52.3,95.1L51.1,95.3L50.9,95.2L51.1,94.7L46.7,91.5L43.6,90.2L41.9,86.9L39.7,86.0L38.5,83.7L35.0,85.7L34.7,84.8L35.1,84.7L37.8,82.0L36.3,81.8L33.7,78.9L31.4,78.8L29.4,77.1L29.1,71.2L27.8,69.3L27.0,70.1L24.2,67.9L25.0,65.6L22.6,61.7L24.7,62.9L24.2,60.6L25.0,58.3L26.3,57.4L25.8,55.1L26.9,53.6L30.8,51.9L29.5,50.4L31.3,49.0L33.3,49.3L34.1,51.3L36.5,54.8L38.8,55.8L38.8,52.9L41.4,57.1L46.2,58.9L51.1,64.1L51.9,69.6L55.9,76.0L56.2,77.2L60.5,79.1L60.9,79.0Z M39.8,48.2L37.7,51.2L36.2,49.5L34.2,48.8L33.4,46.8L33.5,46.6L34.8,46.7L35.6,45.9L37.2,44.9L37.1,44.6L37.2,44.5L39.4,46.7L40.2,48.0L39.8,48.2Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M285.3,212.8L282.7,213.2L281.7,211.3L283.0,205.8L285.5,202.3L287.2,204.9L285.3,212.8Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M71.2,55.2L64.8,51.2L62.2,52.9L61.7,54.1L63.3,56.2L62.3,57.6L61.2,55.7L59.5,55.7L56.1,53.7L57.5,48.4L61.0,47.7L60.0,43.2L62.4,41.8L60.7,43.6L59.0,41.6L53.6,42.6L53.3,42.7L52.6,41.1L51.8,39.8L51.8,39.4L52.0,38.9L52.2,38.9L58.6,39.1L61.6,34.2L61.7,30.3L60.0,28.0L59.8,28.1L59.7,28.0L56.1,25.6L56.0,23.5L55.0,20.6L54.9,20.5L55.0,20.4L55.6,19.1L55.6,18.6L56.1,18.0L55.9,17.8L56.5,17.4L57.4,17.4L57.9,17.3L58.6,17.2L58.7,17.1L58.8,17.2L59.0,17.8L64.5,16.7L64.9,17.2L68.4,14.1L68.6,13.9L68.7,13.9L72.7,20.6L74.9,27.3L78.7,28.5L78.9,28.8L78.9,28.9L82.0,31.9L79.3,36.3L79.8,46.7L80.6,46.7L81.7,51.5L79.5,52.4L77.6,55.1L72.9,54.0L71.3,55.2L71.2,55.2Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M510.9,42.7L507.1,39.2L508.0,38.1L510.0,38.5L510.9,42.7Z M294.2,-159.7L303.0,-157.9L309.8,-156.2L340.3,-146.1L346.2,-143.7L359.6,-137.9L374.4,-130.5L392.6,-120.1L396.6,-117.6L408.0,-108.3L406.3,-106.6L395.7,-105.9L383.7,-106.3L381.4,-106.1L375.6,-103.4L372.6,-108.1L374.7,-109.6L369.4,-107.5L364.1,-113.7L355.7,-122.2L348.6,-128.6L338.7,-136.3L330.4,-141.8L319.2,-148.4L310.0,-153.1L299.0,-157.9L294.6,-158.4L294.2,-159.7Z M356.5,-80.1L359.3,-83.8L360.9,-84.0L358.6,-80.6L356.5,-80.1Z M362.8,-41.2L364.8,-41.3L366.9,-37.5L363.9,-38.3L362.8,-41.2Z M351.0,-75.2L351.4,-76.9L352.9,-77.1L353.6,-75.6L352.9,-73.7L351.0,-75.2Z M336.3,-15.2L338.6,-19.0L339.4,-17.3L337.5,-14.6L336.3,-15.2Z M307.8,-43.6L306.9,-46.9L308.7,-48.3L307.9,-50.9L308.5,-54.3L307.9,-57.6L307.9,-61.9L311.5,-62.4L340.8,-64.8L346.9,-64.9L345.3,-68.4L349.9,-71.6L348.1,-73.3L344.9,-74.8L348.3,-79.6L351.3,-82.3L353.4,-85.1L353.3,-87.2L358.2,-87.4L359.2,-86.8L357.5,-83.1L354.7,-84.3L352.9,-81.4L353.1,-80.0L351.1,-80.1L348.6,-78.4L348.0,-76.2L350.0,-76.5L350.6,-74.9L348.1,-74.2L349.5,-72.9L351.0,-74.4L349.2,-67.2L347.3,-68.2L349.0,-66.1L348.5,-64.4L349.6,-60.3L347.9,-54.9L346.6,-55.3L348.6,-51.6L351.0,-51.7L356.3,-46.0L354.3,-44.6L350.1,-46.2L348.6,-47.9L348.8,-50.2L347.5,-47.8L349.5,-45.5L353.6,-43.3L356.0,-40.7L359.0,-40.9L361.7,-38.7L364.9,-34.2L366.7,-32.8L369.5,-28.3L370.1,-28.6L372.3,-25.2L371.5,-25.0L372.1,-21.3L373.7,-19.6L373.7,-16.8L372.0,-19.4L370.8,-23.7L369.4,-24.6L367.5,-28.1L365.5,-29.8L358.5,-34.4L359.0,-31.2L360.9,-29.9L359.2,-29.3L358.8,-26.6L359.7,-24.7L357.7,-25.6L353.1,-25.8L354.1,-24.3L351.6,-21.0L349.7,-22.1L348.7,-21.2L344.8,-22.0L341.8,-24.6L339.4,-30.8L338.0,-32.3L333.4,-32.9L335.2,-29.2L334.8,-26.1L329.1,-23.2L326.1,-29.2L327.6,-29.7L328.5,-32.6L327.5,-33.5L324.4,-33.8L323.9,-31.3L319.7,-29.7L316.0,-29.5L315.1,-33.2L309.8,-38.6L308.3,-39.1L306.2,-42.5L307.8,-43.6Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M127.5,131.5L127.2,131.0L127.1,130.5L127.5,131.5Z M130.3,122.4L130.4,122.3L129.5,123.4L129.6,126.9L134.1,130.0L129.5,131.0L127.5,129.9L127.4,129.9L127.2,129.9L127.1,126.4L123.1,126.7L122.7,128.1L116.1,129.4L117.0,132.4L114.2,137.4L113.9,137.6L114.0,137.5L113.2,136.9L112.3,136.1L111.7,135.7L110.8,135.4L110.9,135.0L104.6,120.4L105.2,115.4L101.3,111.7L102.1,109.5L99.2,105.0L99.3,106.0L96.3,105.0L94.7,105.4L93.6,107.6L91.9,106.2L91.3,105.7L91.7,104.9L99.3,92.9L106.0,94.6L109.3,102.9L110.1,106.9L113.1,108.0L116.0,109.8L117.2,109.8L119.1,114.0L117.2,117.5L118.0,117.9L117.8,121.7L121.8,124.9L124.0,123.5L130.0,122.4L130.3,122.4Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M237.7,222.0L233.1,224.3L233.4,225.1L229.2,232.1L233.6,238.2L237.7,241.8L238.6,242.0L241.8,245.6L243.8,251.4L244.4,254.8L242.9,261.1L233.4,267.0L230.3,266.5L231.7,268.8L226.3,271.1L226.6,267.3L225.1,265.3L224.7,265.0L228.5,263.0L230.0,262.8L230.8,260.1L232.3,260.1L236.5,257.8L237.2,252.9L236.8,248.6L236.8,248.4L236.7,247.9L235.3,244.2L236.2,243.2L232.9,241.0L232.8,240.1L227.5,234.5L227.3,233.2L222.8,230.9L226.6,228.0L224.5,226.4L224.4,224.9L219.0,223.4L219.3,221.5L216.5,219.1L216.3,218.7L216.4,218.6L221.8,217.3L222.8,218.2L226.2,216.0L233.4,217.2L233.2,220.2L237.9,222.0L237.7,222.0Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M24.2,96.1L23.4,96.8L22.9,97.6L22.2,98.1L21.9,98.3L21.8,98.2L21.6,96.7L24.4,95.3L24.5,95.5L24.2,96.1Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/><path d="M36.6,190.9L35.1,191.4L34.3,193.3L22.6,191.4L20.8,192.1L14.8,190.4L11.3,188.6L4.3,187.3L3.4,185.9L3.0,183.0L4.9,175.9L4.6,174.1L6.5,171.5L7.0,170.2L9.8,167.4L10.8,167.3L18.7,174.9L20.2,177.4L22.4,177.3L25.7,175.5L29.5,175.9L37.8,179.8L38.6,180.1L38.5,180.6L38.3,188.0L38.5,188.3L38.5,191.2L36.6,190.9Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M249.0,227.3L247.4,232.5L244.1,234.5L241.0,233.4L242.6,228.6L245.3,227.7L249.0,227.3Z M299.1,128.6L299.0,128.5L296.8,128.3L295.8,130.9L292.9,133.1L293.8,134.9L290.8,135.1L288.1,138.4L285.6,140.9L284.3,143.0L284.2,143.0L280.7,145.2L277.7,148.5L275.7,147.3L277.6,143.0L274.3,141.5L272.7,144.5L269.8,146.9L269.6,148.3L265.4,150.1L265.1,151.2L266.6,153.7L269.6,153.8L270.0,156.6L272.6,156.8L274.0,154.7L276.2,153.9L281.4,154.2L281.2,156.1L276.8,158.4L276.1,160.2L274.8,160.2L272.2,166.2L275.0,167.3L278.8,172.4L279.0,173.8L282.8,176.5L278.9,176.5L282.5,178.5L283.5,180.0L282.4,182.9L284.8,183.9L284.7,186.9L283.4,186.7L284.2,190.4L281.8,192.2L279.5,198.0L278.1,197.4L277.4,200.8L278.2,200.5L278.8,203.0L276.6,204.3L275.9,206.4L273.1,207.4L273.9,208.1L271.4,210.6L264.9,215.3L261.1,216.2L260.9,216.4L260.3,216.4L260.2,216.4L259.9,216.6L259.6,216.6L257.7,215.2L257.3,215.3L258.3,217.9L258.2,217.8L258.1,217.9L258.1,218.0L258.1,218.0L258.1,218.0L256.6,218.1L254.9,220.0L252.5,219.9L249.2,221.4L246.2,224.1L247.5,225.4L246.1,226.5L243.9,221.1L240.8,221.4L239.7,220.4L238.2,221.9L237.9,222.0L233.2,220.2L233.4,217.2L226.2,216.0L222.8,218.2L221.8,217.3L216.4,218.6L216.3,218.7L216.1,218.6L214.9,218.2L215.0,223.2L212.7,222.0L212.5,221.8L212.6,221.7L210.8,222.0L208.1,220.9L208.2,220.0L205.8,219.4L205.7,215.5L204.2,212.9L204.5,211.6L202.2,211.3L200.0,212.1L199.8,209.7L204.6,201.8L204.5,197.9L202.6,195.4L202.4,195.3L202.5,195.3L204.5,194.8L205.6,193.1L206.3,188.2L206.2,185.6L204.8,180.6L202.5,178.2L201.3,178.3L198.1,181.0L194.6,180.5L192.1,176.8L188.1,176.7L184.4,175.5L182.0,172.9L178.2,171.6L177.0,169.8L177.8,166.2L177.0,164.0L177.8,161.3L174.6,159.3L167.3,159.1L166.5,160.2L158.6,160.3L155.4,158.2L152.1,159.2L148.4,157.4L145.9,160.9L142.9,161.1L142.7,161.2L143.0,161.0L141.6,158.9L141.3,156.1L141.0,155.0L141.0,155.0L140.9,155.0L140.7,155.0L139.9,154.7L139.4,154.5L138.3,153.7L138.0,153.4L137.9,153.3L136.6,152.3L136.5,148.9L133.3,145.9L133.1,145.9L133.0,145.9L132.7,145.2L133.4,145.1L134.2,145.5L134.3,145.5L134.4,145.5L135.7,141.0L133.0,139.1L133.6,136.0L133.6,135.8L133.9,135.8L138.4,133.1L142.3,135.0L144.5,133.1L145.8,133.4L155.3,131.6L155.3,131.3L155.4,131.3L157.9,127.6L158.1,120.4L162.8,120.3L164.6,121.8L164.8,119.6L167.8,115.0L172.4,116.7L175.0,115.6L175.8,111.9L178.3,111.2L180.7,109.3L180.9,109.4L181.2,109.5L181.3,109.5L181.5,109.4L182.1,109.4L182.2,109.4L182.2,109.6L182.2,111.8L187.2,116.2L188.1,119.1L188.3,122.7L187.0,124.9L190.8,127.4L192.5,127.6L196.2,129.7L198.4,131.4L201.5,137.9L203.9,137.8L210.4,139.1L216.9,139.8L225.0,142.3L227.4,142.7L231.6,140.5L239.4,139.6L242.1,138.2L245.8,133.3L245.3,132.9L247.6,129.2L250.4,129.6L252.7,126.9L255.8,126.2L259.8,122.0L259.9,121.1L263.5,119.8L266.3,119.7L259.9,115.5L256.0,116.6L255.2,117.4L255.8,109.4L255.9,108.8L256.5,109.0L259.1,109.5L262.2,106.8L261.7,105.5L263.0,100.5L264.2,98.8L263.2,94.2L266.7,92.2L274.7,92.1L278.4,96.2L279.9,98.6L283.7,103.7L289.0,103.8L291.6,105.2L293.9,108.6L297.5,107.3L298.6,105.2L300.8,103.3L302.3,104.4L302.7,116.5L299.4,117.0L298.5,118.5L300.1,126.5L299.2,128.4L299.1,128.6Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/CAF.svg b/plugins/UserCountryMap/svg/CAF.svg
index 6dfc750e2ab8fdbdab995dda1a2e4a9fab2bff62..639ddc7794ec0ed40c2e716495a6e90ffbb295c1 100644
--- a/plugins/UserCountryMap/svg/CAF.svg
+++ b/plugins/UserCountryMap/svg/CAF.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="4.9788695337" lon0="21.365218708"/><bbox h="127.16" w="179.48" x="904.79" y="916.08"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M279,25L270,23L259,28L255,30L249,33L248,36L248,38L247,43L242,47L239,52L235,52L228,60L221,69L209,77L201,77L197,78L188,80L174,80L169,82L167,85L173,91L167,98L163,102L159,105L158,108L134,110L131,110L109,120L107,122L101,117L99,114L94,118L84,121L79,124L72,123L69,123L66,127L62,130L56,144L50,151L48,156L46,159L42,161L38,165L43,171L43,181L41,188L44,191L45,205L54,214L55,224L55,226L67,241L76,250L80,252L84,257L84,261L86,273L88,275L90,271L96,259L96,249L99,241L120,237L124,235L137,238L144,239L145,240L150,238L154,237L156,240L158,241L158,235L159,227L158,222L157,218L158,216L161,214L165,210L171,200L179,195L184,193L193,194L205,202L210,206L217,213L221,213L226,214L243,219L247,218L254,218L268,222L271,220L274,213L281,205L285,204L294,206L297,206L305,203L310,202L323,197L327,196L336,198L342,197L345,197L354,189L358,187L377,191L390,194L397,194L401,191L404,190L412,193L410,191L408,188L407,178L403,173L393,167L386,165L380,154L382,149L374,142L372,139L368,136L353,129L348,122L349,119L348,115L343,110L338,105L335,104L322,101L320,99L319,96L320,92L319,91L318,90L315,89L304,88L300,86L301,82L298,79L298,77L302,73L303,71L303,57L300,51L292,38L283,29L281,25L279,25Z " data-iso="CAF"/><path d="M4,278L11,278L38,278L41,277L46,281L50,281L50,283L58,282L63,285L71,285L75,286L82,290L84,293L86,291L84,283L88,276L88,275L86,273L84,261L84,257L80,252L76,250L67,241L55,226L55,224L54,214L45,205L44,191L41,188L43,181L43,171L38,165L42,161L46,159L48,156L50,151L56,144L62,130L66,127L69,123L70,120L71,115L68,113L62,99L59,92L51,85L48,83L36,73L35,71L27,62L26,59L31,53L34,51L38,51L51,52L58,52L71,52L75,51L64,40L62,37L58,26L57,18L60,6L59,0L44,0L45,6L34,13L28,15L25,17L19,25L14,32L11,45L7,49L5,60L0,64L0,275L2,275L3,276L4,278Z " data-iso="CMR"/><path d="M412,193L404,190L401,191L397,194L390,194L377,191L358,187L354,189L345,197L342,197L336,198L327,196L323,197L310,202L305,203L297,206L294,206L285,204L281,205L274,213L271,220L268,222L254,218L247,218L243,219L226,214L221,213L217,213L210,206L205,202L193,194L184,193L179,195L171,200L165,210L161,214L158,216L157,218L158,222L159,227L158,235L158,241L158,246L155,257L146,272L142,283L141,299L450,299L450,210L442,215L435,215L425,207L420,200L415,197L413,195L412,193Z " data-iso="COD"/><path d="M158,241L156,240L154,237L150,238L145,240L144,239L137,238L124,235L120,237L99,241L96,249L96,259L90,271L88,275L88,276L84,283L86,291L84,293L82,290L75,286L71,285L63,285L58,282L50,283L50,281L46,281L41,277L38,278L11,278L4,278L4,280L0,289L0,293L2,299L141,299L142,283L146,272L155,257L158,246L158,241Z " data-iso="COG"/><path d="M4,278L3,276L2,275L0,275L0,299L2,299L0,293L0,289L4,280L4,278Z " data-iso="GAB"/><path d="M0,0L0,64L5,60L7,49L11,45L14,32L19,25L25,17L28,15L34,13L45,6L44,0L0,0Z " data-iso="NGA"/><path d="M281,25L283,29L292,38L300,51L303,57L303,71L302,73L298,77L298,79L301,82L300,86L304,88L315,89L318,90L318,90L318,89L322,86L329,84L330,79L332,74L332,71L336,65L336,58L342,50L342,44L344,43L350,42L364,39L368,46L375,52L386,65L389,66L392,65L401,62L422,63L429,70L450,70L450,0L272,0L273,6L278,11L282,13L281,22L281,25Z " data-iso="SDN"/><path d="M318,90L318,90L319,91L320,92L319,96L320,99L322,101L335,104L338,105L343,110L348,115L349,119L348,122L353,129L368,136L372,139L374,142L382,149L380,154L386,165L393,167L403,173L407,178L408,188L410,191L412,193L413,195L415,197L420,200L425,207L435,215L442,215L450,210L450,70L429,70L422,63L401,62L392,65L389,66L386,65L375,52L368,46L364,39L350,42L344,43L342,44L342,50L336,58L336,65L332,71L332,74L330,79L329,84L322,86L318,89L318,90Z " data-iso="SDS"/><path d="M69,123L72,123L79,124L84,121L94,118L99,114L101,117L107,122L109,120L131,110L134,110L158,108L159,105L163,102L167,98L173,91L167,85L169,82L174,80L188,80L197,78L201,77L209,77L221,69L228,60L235,52L239,52L242,47L247,43L248,38L248,36L249,33L255,30L259,28L270,23L279,25L281,25L281,22L282,13L278,11L273,6L272,0L59,0L60,6L57,18L58,26L62,37L64,40L75,51L71,52L58,52L51,52L38,51L34,51L31,53L26,59L27,62L35,71L36,73L48,83L51,85L59,92L62,99L68,113L71,115L70,120L69,123Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M215,213L221,213L222,213L229,214L232,217L238,217L242,218L246,217L255,219L256,219L257,219L258,215L260,211L254,208L251,206L249,205L251,195L250,195L253,190L253,184L253,183L251,182L249,181L246,181L246,182L245,183L241,180L234,178L231,178L228,176L228,180L226,185L226,190L224,193L225,197L224,202L216,207L212,210L215,213Z " data-fips="CT02" data-fips-="" data-iso3="CAF" data-name="Basse-Kotto"/><path d="M113,196L113,196L107,200L107,206L113,215L109,213L105,215L104,218L105,219L109,226L118,229L123,235L124,234L130,236L134,237L136,239L142,238L144,239L146,241L154,236L157,241L159,241L158,230L158,229L150,223L150,221L149,217L144,212L142,213L134,210L128,209L125,202L122,201L115,195L113,196Z " data-fips="CT07" data-fips-="" data-iso3="CAF" data-name="Lobaye"/><path d="M98,188L85,194L82,194L81,193L78,194L76,189L74,189L71,195L68,194L66,196L58,196L55,197L52,196L44,195L44,196L45,205L47,209L55,216L57,222L59,223L55,224L56,228L59,232L61,235L66,232L70,232L71,230L79,226L85,225L95,230L100,225L101,220L104,218L104,218L105,215L109,213L113,215L107,206L107,200L113,196L113,196L112,194L113,193L113,189L110,186L102,186L98,188Z " data-fips="CT04" data-fips-="" data-iso3="CAF" data-name="Mambr-Kad"/><path d="M104,218L104,218L101,220L100,225L95,230L85,225L79,226L71,230L70,232L66,232L61,235L76,251L80,251L84,256L85,258L84,263L85,263L85,268L86,272L88,276L95,262L96,250L98,245L102,239L106,239L109,238L111,239L117,238L122,235L123,235L118,229L109,226L105,219L104,218Z " data-fips="CT16" data-fips-="" data-iso3="CAF" data-name="Sangha-Mbar"/><path d="M49,154L46,159L39,163L37,165L41,169L43,171L42,184L41,188L44,192L44,195L44,195L52,196L55,197L58,196L66,196L68,194L71,195L74,189L76,189L78,194L81,193L82,194L85,194L98,188L98,186L97,184L98,181L98,180L97,179L94,175L89,170L86,173L83,173L78,169L77,163L75,159L77,156L76,155L70,158L65,157L60,145L52,147L49,154Z " data-fips="CT09" data-fips-="" data-iso3="CAF" data-name="Nana-Mambr"/><path d="M52,147L60,145L65,157L70,158L76,155L77,156L75,159L77,163L78,169L83,173L86,173L89,170L94,175L97,179L98,180L99,179L103,175L105,174L111,172L111,171L111,171L110,169L109,164L111,158L114,156L113,153L110,154L107,151L105,147L103,138L105,134L107,126L107,122L107,122L106,122L101,117L99,113L95,115L94,119L85,121L81,124L78,125L74,123L68,123L66,127L61,131L57,141L52,146L52,147Z " data-fips="CT13" data-fips-="" data-iso3="CAF" data-name="Ouham-Pend"/><path d="M222,68L213,75L211,77L199,77L196,79L193,79L182,80L178,80L171,81L168,83L167,85L172,91L172,91L172,91L172,92L172,93L173,93L174,98L176,100L180,106L179,115L187,120L186,122L192,124L192,126L195,128L196,131L203,136L203,136L203,136L206,138L211,138L215,136L220,132L224,131L231,119L231,118L231,116L231,111L238,110L241,102L250,100L252,103L256,103L256,97L255,93L259,92L267,93L267,92L267,91L266,90L262,89L260,88L258,81L254,77L251,73L249,69L242,63L242,60L240,59L235,64L229,65L225,69L222,68L222,68Z " data-fips="CT01" data-fips-="" data-iso3="CAF" data-name="Bamingui-Bangoran"/><path d="M203,136L196,131L195,128L192,126L192,124L186,122L187,120L179,115L180,106L176,100L174,98L173,93L172,93L172,93L170,102L171,108L170,112L169,116L164,120L162,122L165,131L163,133L160,141L162,145L166,148L163,151L163,153L169,152L171,152L174,155L185,153L191,154L192,154L203,139L203,137L203,136L203,136Z " data-fips="CT15" data-fips-="" data-iso3="CAF" data-name="Nana-Grbizi"/><path d="M163,153L162,153L166,158L164,164L160,167L159,174L159,175L161,177L166,179L166,182L170,186L169,192L172,196L173,199L173,198L181,193L186,192L194,195L194,195L196,193L199,184L184,182L184,180L185,180L188,175L187,174L187,170L192,167L193,165L195,158L191,155L191,154L185,153L174,155L171,152L169,152L163,153Z " data-fips="CT06" data-fips-="" data-iso3="CAF" data-name="Kmo"/><path d="M231,118L231,119L224,131L220,132L215,136L211,138L206,138L203,136L203,136L203,137L203,139L192,154L191,154L191,155L195,158L193,165L192,167L187,170L187,174L188,175L185,180L184,180L184,182L199,184L196,193L194,195L195,196L206,203L207,203L212,208L211,210L212,210L216,207L224,202L225,197L224,193L226,190L226,185L228,180L228,176L231,178L234,178L241,180L245,183L246,182L246,181L247,179L252,178L253,177L254,170L253,167L249,162L251,157L249,151L248,151L246,144L246,142L245,139L244,131L239,129L238,123L232,119L231,118Z " data-fips="CT11" data-fips-="" data-iso3="CAF" data-name="Ouaka"/><path d="M172,93L172,92L172,91L172,91L172,91L163,102L162,103L156,109L143,109L136,110L130,111L126,113L124,112L120,114L116,118L108,120L108,122L107,122L107,126L105,134L103,138L105,147L107,151L110,154L113,153L114,156L111,158L109,164L110,169L111,171L111,171L111,173L115,176L129,175L135,172L141,173L152,175L152,180L153,180L159,175L159,175L159,174L160,167L164,164L166,158L162,153L163,153L163,151L166,148L162,145L160,141L163,133L165,131L162,122L164,120L169,116L170,112L171,108L170,102L172,93L172,93Z " data-fips="CT12" data-fips-="" data-iso3="CAF" data-name="Ouham"/><path d="M222,68L225,69L229,65L235,64L240,59L242,60L242,63L249,69L251,73L254,77L258,81L260,88L262,89L266,90L267,91L267,92L268,92L271,92L275,90L285,88L286,88L288,83L293,80L294,79L298,76L298,76L301,75L303,72L302,68L304,62L302,54L293,39L288,34L285,32L281,26L276,24L270,23L266,24L260,28L257,27L256,30L251,32L247,43L246,45L242,46L238,52L235,52L229,59L229,58L223,67L222,69L222,68Z " data-fips="CT14" data-fips-="" data-iso3="CAF" data-name="Vakaga"/><path d="M298,76L294,79L293,80L288,83L286,88L285,88L275,90L271,92L268,92L267,92L267,93L259,92L255,93L256,97L256,103L252,103L250,100L241,102L238,110L231,111L231,116L231,118L232,119L238,123L239,129L244,131L245,139L246,142L246,144L248,151L249,151L251,157L249,162L253,167L254,170L253,177L252,178L247,179L246,181L249,181L251,182L253,183L253,183L259,178L258,176L258,170L260,168L264,166L265,167L269,165L272,161L280,160L284,163L294,164L293,163L297,161L298,159L321,146L322,145L323,140L329,138L328,130L331,124L328,120L328,118L327,111L327,108L321,102L321,102L317,100L317,98L320,90L304,89L299,88L301,82L298,81L298,76L298,76Z " data-fips="CT03" data-fips-="" data-iso3="CAF" data-name="Haute-Kotto"/><path d="M321,102L327,108L327,111L328,118L328,120L331,124L328,130L329,138L323,140L322,145L321,146L329,154L331,156L334,155L336,154L339,153L343,155L345,159L339,162L342,165L346,168L347,169L346,173L344,177L343,182L339,185L339,187L331,191L328,194L328,194L333,199L338,198L345,198L351,196L353,193L353,188L354,187L360,186L361,187L366,189L369,191L377,189L378,191L385,193L385,194L392,193L397,195L399,192L403,190L412,192L409,189L407,183L407,177L404,173L401,173L397,170L396,170L395,168L392,167L390,167L384,165L385,159L380,156L379,154L382,148L379,147L374,143L371,138L359,132L358,131L353,129L351,126L348,124L347,122L350,116L349,113L343,112L337,105L331,103L329,103L326,102L322,102L321,102Z " data-fips="CT05" data-fips-="" data-iso3="CAF" data-name="Haut-Mbomou"/><path d="M321,146L298,159L297,161L293,163L294,164L284,163L280,160L272,161L269,165L265,167L264,166L260,168L258,170L258,176L259,178L253,183L253,183L253,184L253,190L250,195L251,195L249,205L251,206L254,208L260,211L258,215L257,219L258,219L265,222L268,222L274,215L273,212L276,212L279,205L282,204L282,202L288,205L290,205L294,207L298,207L302,205L317,199L318,199L325,195L325,193L327,193L328,194L331,191L339,187L339,185L343,182L344,177L346,173L347,169L346,168L342,165L339,162L345,159L343,155L339,153L336,154L334,155L331,156L329,154L321,146Z " data-fips="CT08" data-fips-="" data-iso3="CAF" data-name="Mbomou"/><path d="M111,171L111,172L105,174L103,175L99,179L98,180L98,181L97,184L98,186L98,188L102,186L110,186L113,189L113,193L112,194L113,196L115,195L122,201L125,202L128,209L134,210L142,213L144,212L149,217L150,221L150,223L158,229L158,229L159,226L159,222L156,217L157,215L161,215L163,213L164,209L170,203L172,199L173,199L172,196L169,192L170,186L166,182L166,179L161,177L159,175L159,175L153,180L152,180L152,175L141,173L135,172L129,175L115,176L111,173L111,171Z " data-fips="CT10" data-fips-="CT17|CT18" data-iso3="CAF" data-name="Bangui"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="4.9788695337" lon0="21.365218708"/><bbox h="127.16" w="179.48" x="904.79" y="916.08"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M279,25L270,23L259,28L255,30L249,33L248,36L248,38L247,43L242,47L239,52L235,52L228,60L221,69L209,77L201,77L197,78L188,80L174,80L169,82L167,85L173,91L167,98L163,102L159,105L158,108L134,110L131,110L109,120L107,122L101,117L99,114L94,118L84,121L79,124L72,123L69,123L66,127L62,130L56,144L50,151L48,156L46,159L42,161L38,165L43,171L43,181L41,188L44,191L45,205L54,214L55,224L55,226L67,241L76,250L80,252L84,257L84,261L86,273L88,275L90,271L96,259L96,249L99,241L120,237L124,235L137,238L144,239L145,240L150,238L154,237L156,240L158,241L158,235L159,227L158,222L157,218L158,216L161,214L165,210L171,200L179,195L184,193L193,194L205,202L210,206L217,213L221,213L226,214L243,219L247,218L254,218L268,222L271,220L274,213L281,205L285,204L294,206L297,206L305,203L310,202L323,197L327,196L336,198L342,197L345,197L354,189L358,187L377,191L390,194L397,194L401,191L404,190L412,193L410,191L408,188L407,178L403,173L393,167L386,165L380,154L382,149L374,142L372,139L368,136L353,129L348,122L349,119L348,115L343,110L338,105L335,104L322,101L320,99L319,96L320,92L319,91L318,90L315,89L304,88L300,86L301,82L298,79L298,77L302,73L303,71L303,57L300,51L292,38L283,29L281,25L279,25Z " data-iso="CAF"/><path d="M4,278L11,278L38,278L41,277L46,281L50,281L50,283L58,282L63,285L71,285L75,286L82,290L84,293L86,291L84,283L88,276L88,275L86,273L84,261L84,257L80,252L76,250L67,241L55,226L55,224L54,214L45,205L44,191L41,188L43,181L43,171L38,165L42,161L46,159L48,156L50,151L56,144L62,130L66,127L69,123L70,120L71,115L68,113L62,99L59,92L51,85L48,83L36,73L35,71L27,62L26,59L31,53L34,51L38,51L51,52L58,52L71,52L75,51L64,40L62,37L58,26L57,18L60,6L59,0L44,0L45,6L34,13L28,15L25,17L19,25L14,32L11,45L7,49L5,60L0,64L0,275L2,275L3,276L4,278Z " data-iso="CMR"/><path d="M412,193L404,190L401,191L397,194L390,194L377,191L358,187L354,189L345,197L342,197L336,198L327,196L323,197L310,202L305,203L297,206L294,206L285,204L281,205L274,213L271,220L268,222L254,218L247,218L243,219L226,214L221,213L217,213L210,206L205,202L193,194L184,193L179,195L171,200L165,210L161,214L158,216L157,218L158,222L159,227L158,235L158,241L158,246L155,257L146,272L142,283L141,299L450,299L450,210L442,215L435,215L425,207L420,200L415,197L413,195L412,193Z " data-iso="COD"/><path d="M158,241L156,240L154,237L150,238L145,240L144,239L137,238L124,235L120,237L99,241L96,249L96,259L90,271L88,275L88,276L84,283L86,291L84,293L82,290L75,286L71,285L63,285L58,282L50,283L50,281L46,281L41,277L38,278L11,278L4,278L4,280L0,289L0,293L2,299L141,299L142,283L146,272L155,257L158,246L158,241Z " data-iso="COG"/><path d="M4,278L3,276L2,275L0,275L0,299L2,299L0,293L0,289L4,280L4,278Z " data-iso="GAB"/><path d="M0,0L0,64L5,60L7,49L11,45L14,32L19,25L25,17L28,15L34,13L45,6L44,0L0,0Z " data-iso="NGA"/><path d="M281,25L283,29L292,38L300,51L303,57L303,71L302,73L298,77L298,79L301,82L300,86L304,88L315,89L318,90L318,90L318,89L322,86L329,84L330,79L332,74L332,71L336,65L336,58L342,50L342,44L344,43L350,42L364,39L368,46L375,52L386,65L389,66L392,65L401,62L422,63L429,70L450,70L450,0L272,0L273,6L278,11L282,13L281,22L281,25Z " data-iso="SDN"/><path d="M318,90L318,90L319,91L320,92L319,96L320,99L322,101L335,104L338,105L343,110L348,115L349,119L348,122L353,129L368,136L372,139L374,142L382,149L380,154L386,165L393,167L403,173L407,178L408,188L410,191L412,193L413,195L415,197L420,200L425,207L435,215L442,215L450,210L450,70L429,70L422,63L401,62L392,65L389,66L386,65L375,52L368,46L364,39L350,42L344,43L342,44L342,50L336,58L336,65L332,71L332,74L330,79L329,84L322,86L318,89L318,90Z " data-iso="SSD"/><path d="M69,123L72,123L79,124L84,121L94,118L99,114L101,117L107,122L109,120L131,110L134,110L158,108L159,105L163,102L167,98L173,91L167,85L169,82L174,80L188,80L197,78L201,77L209,77L221,69L228,60L235,52L239,52L242,47L247,43L248,38L248,36L249,33L255,30L259,28L270,23L279,25L281,25L281,22L282,13L278,11L273,6L272,0L59,0L60,6L57,18L58,26L62,37L64,40L75,51L71,52L58,52L51,52L38,51L34,51L31,53L26,59L27,62L35,71L36,73L48,83L51,85L59,92L62,99L68,113L71,115L70,120L69,123Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M215,213L221,213L222,213L229,214L232,217L238,217L242,218L246,217L255,219L256,219L257,219L258,215L260,211L254,208L251,206L249,205L251,195L250,195L253,190L253,184L253,183L251,182L249,181L246,181L246,182L245,183L241,180L234,178L231,178L228,176L228,180L226,185L226,190L224,193L225,197L224,202L216,207L212,210L215,213Z " data-fips="CT02" data-fips-="" data-iso3="CAF" data-name="Basse-Kotto"/><path d="M113,196L113,196L107,200L107,206L113,215L109,213L105,215L104,218L105,219L109,226L118,229L123,235L124,234L130,236L134,237L136,239L142,238L144,239L146,241L154,236L157,241L159,241L158,230L158,229L150,223L150,221L149,217L144,212L142,213L134,210L128,209L125,202L122,201L115,195L113,196Z " data-fips="CT07" data-fips-="" data-iso3="CAF" data-name="Lobaye"/><path d="M98,188L85,194L82,194L81,193L78,194L76,189L74,189L71,195L68,194L66,196L58,196L55,197L52,196L44,195L44,196L45,205L47,209L55,216L57,222L59,223L55,224L56,228L59,232L61,235L66,232L70,232L71,230L79,226L85,225L95,230L100,225L101,220L104,218L104,218L105,215L109,213L113,215L107,206L107,200L113,196L113,196L112,194L113,193L113,189L110,186L102,186L98,188Z " data-fips="CT04" data-fips-="" data-iso3="CAF" data-name="Mambr-Kad"/><path d="M104,218L104,218L101,220L100,225L95,230L85,225L79,226L71,230L70,232L66,232L61,235L76,251L80,251L84,256L85,258L84,263L85,263L85,268L86,272L88,276L95,262L96,250L98,245L102,239L106,239L109,238L111,239L117,238L122,235L123,235L118,229L109,226L105,219L104,218Z " data-fips="CT16" data-fips-="" data-iso3="CAF" data-name="Sangha-Mbar"/><path d="M49,154L46,159L39,163L37,165L41,169L43,171L42,184L41,188L44,192L44,195L44,195L52,196L55,197L58,196L66,196L68,194L71,195L74,189L76,189L78,194L81,193L82,194L85,194L98,188L98,186L97,184L98,181L98,180L97,179L94,175L89,170L86,173L83,173L78,169L77,163L75,159L77,156L76,155L70,158L65,157L60,145L52,147L49,154Z " data-fips="CT09" data-fips-="" data-iso3="CAF" data-name="Nana-Mambr"/><path d="M52,147L60,145L65,157L70,158L76,155L77,156L75,159L77,163L78,169L83,173L86,173L89,170L94,175L97,179L98,180L99,179L103,175L105,174L111,172L111,171L111,171L110,169L109,164L111,158L114,156L113,153L110,154L107,151L105,147L103,138L105,134L107,126L107,122L107,122L106,122L101,117L99,113L95,115L94,119L85,121L81,124L78,125L74,123L68,123L66,127L61,131L57,141L52,146L52,147Z " data-fips="CT13" data-fips-="" data-iso3="CAF" data-name="Ouham-Pend"/><path d="M222,68L213,75L211,77L199,77L196,79L193,79L182,80L178,80L171,81L168,83L167,85L172,91L172,91L172,91L172,92L172,93L173,93L174,98L176,100L180,106L179,115L187,120L186,122L192,124L192,126L195,128L196,131L203,136L203,136L203,136L206,138L211,138L215,136L220,132L224,131L231,119L231,118L231,116L231,111L238,110L241,102L250,100L252,103L256,103L256,97L255,93L259,92L267,93L267,92L267,91L266,90L262,89L260,88L258,81L254,77L251,73L249,69L242,63L242,60L240,59L235,64L229,65L225,69L222,68L222,68Z " data-fips="CT01" data-fips-="" data-iso3="CAF" data-name="Bamingui-Bangoran"/><path d="M203,136L196,131L195,128L192,126L192,124L186,122L187,120L179,115L180,106L176,100L174,98L173,93L172,93L172,93L170,102L171,108L170,112L169,116L164,120L162,122L165,131L163,133L160,141L162,145L166,148L163,151L163,153L169,152L171,152L174,155L185,153L191,154L192,154L203,139L203,137L203,136L203,136Z " data-fips="CT15" data-fips-="" data-iso3="CAF" data-name="Nana-Grbizi"/><path d="M163,153L162,153L166,158L164,164L160,167L159,174L159,175L161,177L166,179L166,182L170,186L169,192L172,196L173,199L173,198L181,193L186,192L194,195L194,195L196,193L199,184L184,182L184,180L185,180L188,175L187,174L187,170L192,167L193,165L195,158L191,155L191,154L185,153L174,155L171,152L169,152L163,153Z " data-fips="CT06" data-fips-="" data-iso3="CAF" data-name="Kmo"/><path d="M231,118L231,119L224,131L220,132L215,136L211,138L206,138L203,136L203,136L203,137L203,139L192,154L191,154L191,155L195,158L193,165L192,167L187,170L187,174L188,175L185,180L184,180L184,182L199,184L196,193L194,195L195,196L206,203L207,203L212,208L211,210L212,210L216,207L224,202L225,197L224,193L226,190L226,185L228,180L228,176L231,178L234,178L241,180L245,183L246,182L246,181L247,179L252,178L253,177L254,170L253,167L249,162L251,157L249,151L248,151L246,144L246,142L245,139L244,131L239,129L238,123L232,119L231,118Z " data-fips="CT11" data-fips-="" data-iso3="CAF" data-name="Ouaka"/><path d="M172,93L172,92L172,91L172,91L172,91L163,102L162,103L156,109L143,109L136,110L130,111L126,113L124,112L120,114L116,118L108,120L108,122L107,122L107,126L105,134L103,138L105,147L107,151L110,154L113,153L114,156L111,158L109,164L110,169L111,171L111,171L111,173L115,176L129,175L135,172L141,173L152,175L152,180L153,180L159,175L159,175L159,174L160,167L164,164L166,158L162,153L163,153L163,151L166,148L162,145L160,141L163,133L165,131L162,122L164,120L169,116L170,112L171,108L170,102L172,93L172,93Z " data-fips="CT12" data-fips-="" data-iso3="CAF" data-name="Ouham"/><path d="M222,68L225,69L229,65L235,64L240,59L242,60L242,63L249,69L251,73L254,77L258,81L260,88L262,89L266,90L267,91L267,92L268,92L271,92L275,90L285,88L286,88L288,83L293,80L294,79L298,76L298,76L301,75L303,72L302,68L304,62L302,54L293,39L288,34L285,32L281,26L276,24L270,23L266,24L260,28L257,27L256,30L251,32L247,43L246,45L242,46L238,52L235,52L229,59L229,58L223,67L222,69L222,68Z " data-fips="CT14" data-fips-="" data-iso3="CAF" data-name="Vakaga"/><path d="M298,76L294,79L293,80L288,83L286,88L285,88L275,90L271,92L268,92L267,92L267,93L259,92L255,93L256,97L256,103L252,103L250,100L241,102L238,110L231,111L231,116L231,118L232,119L238,123L239,129L244,131L245,139L246,142L246,144L248,151L249,151L251,157L249,162L253,167L254,170L253,177L252,178L247,179L246,181L249,181L251,182L253,183L253,183L259,178L258,176L258,170L260,168L264,166L265,167L269,165L272,161L280,160L284,163L294,164L293,163L297,161L298,159L321,146L322,145L323,140L329,138L328,130L331,124L328,120L328,118L327,111L327,108L321,102L321,102L317,100L317,98L320,90L304,89L299,88L301,82L298,81L298,76L298,76Z " data-fips="CT03" data-fips-="" data-iso3="CAF" data-name="Haute-Kotto"/><path d="M321,102L327,108L327,111L328,118L328,120L331,124L328,130L329,138L323,140L322,145L321,146L329,154L331,156L334,155L336,154L339,153L343,155L345,159L339,162L342,165L346,168L347,169L346,173L344,177L343,182L339,185L339,187L331,191L328,194L328,194L333,199L338,198L345,198L351,196L353,193L353,188L354,187L360,186L361,187L366,189L369,191L377,189L378,191L385,193L385,194L392,193L397,195L399,192L403,190L412,192L409,189L407,183L407,177L404,173L401,173L397,170L396,170L395,168L392,167L390,167L384,165L385,159L380,156L379,154L382,148L379,147L374,143L371,138L359,132L358,131L353,129L351,126L348,124L347,122L350,116L349,113L343,112L337,105L331,103L329,103L326,102L322,102L321,102Z " data-fips="CT05" data-fips-="" data-iso3="CAF" data-name="Haut-Mbomou"/><path d="M321,146L298,159L297,161L293,163L294,164L284,163L280,160L272,161L269,165L265,167L264,166L260,168L258,170L258,176L259,178L253,183L253,183L253,184L253,190L250,195L251,195L249,205L251,206L254,208L260,211L258,215L257,219L258,219L265,222L268,222L274,215L273,212L276,212L279,205L282,204L282,202L288,205L290,205L294,207L298,207L302,205L317,199L318,199L325,195L325,193L327,193L328,194L331,191L339,187L339,185L343,182L344,177L346,173L347,169L346,168L342,165L339,162L345,159L343,155L339,153L336,154L334,155L331,156L329,154L321,146Z " data-fips="CT08" data-fips-="" data-iso3="CAF" data-name="Mbomou"/><path d="M111,171L111,172L105,174L103,175L99,179L98,180L98,181L97,184L98,186L98,188L102,186L110,186L113,189L113,193L112,194L113,196L115,195L122,201L125,202L128,209L134,210L142,213L144,212L149,217L150,221L150,223L158,229L158,229L159,226L159,222L156,217L157,215L161,215L163,213L164,209L170,203L172,199L173,199L172,196L169,192L170,186L166,182L166,179L161,177L159,175L159,175L153,180L152,180L152,175L141,173L135,172L129,175L115,176L111,173L111,171Z " data-fips="CT10" data-fips-="CT17|CT18" data-iso3="CAF" data-name="Bangui"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/COD.svg b/plugins/UserCountryMap/svg/COD.svg
index 6e47ddd233ec23fc8688e84624aaf4f1235f3449..46aba0a25a3af4e898c7476d44d3c6c92d55cc95 100644
--- a/plugins/UserCountryMap/svg/COD.svg
+++ b/plugins/UserCountryMap/svg/COD.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="1.31628947618" lon0="20.3145332978"/><bbox h="260.59" w="262.8" x="886.31" y="935.72"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M256,246L255,246L248,248L244,249L235,249L233,251L231,250L233,243L233,239L230,232L226,226L227,210L226,207L226,197L225,196L209,195L209,191L195,192L194,193L191,205L188,206L180,205L166,207L158,195L154,186L154,181L150,176L121,176L115,175L102,175L102,176L99,177L95,186L99,191L100,195L103,203L107,211L107,215L104,225L107,234L114,247L114,259L111,266L109,269L103,273L102,277L97,282L96,287L95,291L94,299L228,299L228,276L254,276L256,268L256,248L256,246Z M102,158L102,158L100,155L93,158L92,160L88,163L88,164L90,168L90,170L90,174L90,174L94,173L95,165L94,164L99,159L102,158L102,158Z " data-iso="AGO"/><path d="M349,126L343,126L340,131L333,132L330,129L328,130L328,131L328,131L331,136L330,145L333,153L333,155L337,155L341,153L346,146L348,143L353,136L349,127L349,126L349,126Z " data-iso="BDI"/><path d="M146,60L147,58L150,52L150,48L152,43L162,41L164,40L174,42L180,43L181,43L180,40L181,36L180,31L182,30L187,23L191,21L198,20L209,30L211,29L222,32L234,34L241,25L248,26L261,22L267,23L272,22L278,17L294,20L297,20L301,19L305,20L304,19L302,13L300,10L293,7L289,1L289,0L128,0L122,7L124,9L125,19L126,26L130,31L130,35L136,43L141,48L143,49L145,53L146,59L146,60Z " data-iso="CAF"/><path d="M39,24L44,27L45,34L49,36L52,36L58,48L56,56L56,59L57,61L59,61L74,61L78,61L78,60L81,60L103,60L105,61L105,62L109,62L122,62L124,61L132,63L134,65L138,65L146,68L145,64L146,60L146,60L146,59L145,53L143,49L141,48L136,43L130,35L130,31L126,26L125,19L124,9L122,7L128,0L78,0L54,0L45,8L42,18L39,24L39,24Z " data-iso="CMR"/><path d="M301,19L297,20L294,20L278,17L272,22L267,23L261,22L248,26L241,25L234,34L222,32L211,29L209,30L198,20L191,21L187,23L182,30L180,31L181,36L180,40L181,43L181,46L175,58L173,64L173,68L171,77L171,85L170,89L168,96L168,100L157,109L155,112L151,118L147,123L146,141L144,146L133,153L126,161L122,161L122,155L121,153L115,156L111,155L111,159L107,161L103,158L102,158L102,158L99,159L94,164L95,165L94,173L90,174L91,175L92,176L95,177L102,175L102,175L115,175L121,176L150,176L154,181L154,186L158,195L166,207L180,205L188,206L191,205L194,193L195,192L209,191L209,195L225,196L226,197L226,207L227,210L226,226L230,232L233,239L233,243L231,250L233,251L235,249L244,249L248,248L255,246L256,246L256,246L261,250L261,253L275,251L274,253L277,259L294,262L295,262L300,256L301,259L307,266L317,269L321,274L325,282L332,280L335,283L336,282L337,264L333,265L333,268L326,267L319,260L318,258L320,245L321,243L321,232L318,224L326,212L349,209L351,209L351,207L343,190L341,189L334,177L336,173L332,163L333,156L333,155L333,153L330,145L331,136L328,131L328,131L326,130L325,127L329,123L335,112L336,112L336,111L338,91L341,85L341,83L355,68L360,62L358,60L352,57L353,52L354,43L353,43L353,42L349,40L349,38L344,36L337,27L330,30L323,28L318,31L316,31L305,21L305,20L301,19Z " data-iso="COD"/><path d="M180,43L174,42L164,40L162,41L152,43L150,48L150,52L147,58L146,60L146,60L145,64L146,68L138,65L134,65L132,63L124,61L122,62L109,62L105,62L105,63L104,75L113,72L119,74L121,80L119,85L117,85L114,90L114,96L116,96L122,101L121,106L122,112L118,126L115,128L112,123L108,126L101,125L98,120L93,125L88,126L81,126L81,133L82,133L86,140L85,145L77,144L75,148L78,151L84,157L85,160L87,163L88,163L92,160L93,158L100,155L102,158L102,158L103,158L107,161L111,159L111,155L115,156L121,153L122,155L122,161L126,161L133,153L144,146L146,141L147,123L151,118L155,112L157,109L168,100L168,96L170,89L171,85L171,77L173,68L173,64L175,58L181,46L181,43L180,43Z " data-iso="COG"/><path d="M415,13L415,14L422,16L422,23L427,28L437,28L450,36L450,0L408,0L411,6L411,8L415,13L415,13Z " data-iso="ETH"/><path d="M105,61L103,60L81,60L78,60L78,61L78,65L78,78L57,78L53,77L53,78L54,81L49,83L56,92L51,90L49,88L49,97L44,102L41,101L50,118L50,121L59,131L64,135L68,140L74,147L75,148L77,144L85,145L86,140L82,133L81,133L81,126L88,126L93,125L98,120L101,125L108,126L112,123L115,128L118,126L122,112L121,106L122,101L116,96L114,96L114,90L117,85L119,85L121,80L119,74L113,72L104,75L105,63L105,62L105,61Z " data-iso="GAB"/><path d="M78,61L74,61L59,61L57,61L56,59L56,63L53,70L50,76L53,77L53,77L57,78L78,78L78,65L78,61Z M41,39L38,46L40,46L44,39L41,39Z " data-iso="GNQ"/><path d="M415,13L412,16L403,26L400,29L397,32L399,37L404,41L403,43L406,50L409,53L410,57L411,68L409,72L409,74L405,77L404,80L400,83L397,90L397,104L397,106L398,106L449,135L449,136L450,143L450,36L437,28L427,28L422,23L422,16L415,14L415,13Z " data-iso="KEN"/><path d="M383,291L380,292L370,295L362,298L359,299L400,299L398,297L389,299L384,292L383,291Z M409,257L407,257L404,258L400,266L401,272L402,282L408,286L411,290L418,299L450,299L450,253L448,256L442,259L435,257L427,259L422,255L418,257L412,257L409,257Z M405,264L404,263L405,263L405,264Z M404,263L403,263L403,263L404,263Z " data-iso="MOZ"/><path d="M405,264L405,263L404,263L405,264Z M404,263L403,263L403,263L404,263Z M409,257L408,256L406,253L405,243L403,234L401,231L396,227L388,229L387,227L381,226L381,226L381,226L386,232L386,235L389,238L388,245L386,246L387,251L385,254L386,258L385,264L386,270L380,274L379,282L377,284L382,290L383,291L384,292L389,299L398,297L400,299L418,299L411,290L408,286L402,282L401,272L400,266L404,258L407,257L409,257Z " data-iso="MWI"/><path d="M39,24L42,18L45,8L54,0L0,0L0,28L11,30L14,25L16,29L19,28L35,27L35,22L39,24L39,24Z " data-iso="NGA"/><path d="M348,107L346,108L342,113L340,111L336,112L336,112L335,112L329,123L325,127L326,130L328,131L328,130L330,129L333,132L340,131L343,126L349,126L349,126L350,126L354,124L353,114L348,108L349,107L348,107Z " data-iso="RWA"/><path d="M305,20L305,21L316,31L318,31L323,28L330,30L337,27L344,36L349,38L349,40L353,42L353,43L354,42L367,38L369,41L372,41L374,39L384,37L390,39L394,35L397,32L400,29L403,26L412,16L415,13L415,13L411,8L411,6L408,0L289,0L289,1L293,7L300,10L302,13L304,19L305,20Z " data-iso="SDS"/><path d="M12,90L12,86L10,91L12,90Z " data-iso="STP"/><path d="M397,106L395,106L370,106L358,106L349,107L349,107L348,108L353,114L354,124L350,126L349,126L349,127L353,136L348,143L346,146L341,153L337,155L333,155L333,156L332,163L336,173L334,177L341,189L343,190L351,207L351,209L352,210L356,214L360,214L366,219L380,225L381,226L381,226L387,227L388,229L396,227L401,231L403,234L405,243L406,253L408,256L409,257L412,257L418,257L422,255L427,259L435,257L442,259L448,256L450,253L450,143L449,136L449,135L398,106L397,106Z " data-iso="TZA"/><path d="M397,104L397,90L400,83L404,80L405,77L409,74L409,72L411,68L410,57L409,53L406,50L403,43L404,41L399,37L397,32L394,35L390,39L384,37L374,39L372,41L369,41L367,38L354,42L353,43L354,43L353,52L352,57L358,60L360,62L355,68L341,83L341,85L338,91L336,111L336,112L336,112L340,111L342,113L346,108L348,107L349,107L349,107L358,106L370,106L395,106L397,106L397,104Z " data-iso="UGA"/><path d="M383,291L382,290L377,284L379,282L380,274L386,270L385,264L386,258L385,254L387,251L386,246L388,245L389,238L386,235L386,232L381,226L381,226L380,225L366,219L360,214L356,214L352,210L351,209L349,209L326,212L318,224L321,232L321,243L320,245L318,258L319,260L326,267L333,268L333,265L337,264L336,282L335,283L332,280L325,282L321,274L317,269L307,266L301,259L300,256L295,262L294,262L277,259L274,253L275,251L261,253L261,250L256,246L256,246L256,248L256,268L254,276L228,276L228,299L359,299L362,298L370,295L380,292L383,291Z " data-iso="ZMB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,119L153,121L156,121L155,118L159,118L160,117L177,109L178,110L183,110L184,108L183,106L185,104L193,117L196,116L199,119L203,120L206,122L210,121L214,127L214,128L217,128L221,126L227,128L227,128L227,127L231,125L233,126L231,119L233,120L237,118L244,120L246,122L252,121L254,119L258,117L263,118L262,115L261,112L257,111L248,105L250,102L249,99L247,99L245,98L248,96L242,87L239,76L237,73L235,72L233,71L236,66L239,64L247,61L252,61L252,60L247,56L242,55L244,48L240,50L240,47L237,44L243,42L245,41L248,41L249,38L241,38L235,34L235,34L231,34L224,32L222,32L216,31L209,30L204,24L198,21L194,19L192,20L188,22L183,30L180,32L181,36L181,45L180,48L178,54L174,60L173,65L171,77L170,77L171,87L168,95L168,97L166,102L163,106L158,108L156,110L152,117L151,119Z " data-fips="CG02" data-fips-="" data-iso3="COD" data-name="quateur"/><path d="M235,34L241,38L249,38L248,41L245,41L243,42L237,44L240,47L240,50L244,48L242,55L247,56L252,60L252,61L247,61L239,64L236,66L233,71L235,72L237,73L239,76L242,87L248,96L245,98L247,99L249,99L250,102L248,105L257,111L261,112L262,115L263,118L263,118L263,120L269,120L273,122L278,119L283,118L283,112L285,113L289,101L291,99L287,94L292,98L297,95L309,100L310,100L310,100L315,95L314,87L310,85L314,83L319,82L321,84L333,81L333,80L340,79L341,80L342,80L345,76L354,68L359,62L358,59L352,57L354,51L349,41L349,38L344,36L343,34L333,27L332,30L325,29L324,28L319,31L313,29L310,26L310,25L303,19L301,19L296,21L291,20L288,19L284,19L279,16L275,21L266,23L262,20L256,23L251,25L245,25L241,24L241,26L237,29L235,34L235,34Z " data-fips="CG09" data-fips-="" data-iso3="COD" data-name="Orientale"/><path d="M151,119L147,123L146,125L146,133L147,140L142,148L142,148L147,149L150,152L151,154L148,160L148,162L148,163L147,164L147,170L147,173L145,175L148,175L154,180L154,185L158,192L157,193L158,196L159,197L165,206L169,207L179,205L183,205L183,206L191,206L191,204L193,199L194,191L200,191L196,185L196,179L200,177L203,172L203,165L201,160L201,153L205,155L206,153L209,152L210,139L214,129L214,128L214,127L210,121L206,122L203,120L199,119L196,116L193,117L185,104L183,106L184,108L183,110L178,110L177,109L160,117L159,118L155,118L156,121L153,121L151,119L151,119Z " data-fips="CG01" data-fips-="" data-iso3="COD" data-name="Bandundu"/><path d="M214,128L214,129L210,139L209,152L206,153L205,155L201,153L201,160L203,165L203,172L200,177L196,179L196,185L200,191L204,191L208,195L225,195L226,200L226,201L231,203L236,202L238,204L241,204L244,203L245,203L245,199L245,193L246,191L242,187L243,184L242,178L243,174L252,172L253,169L248,166L247,167L242,163L242,162L245,159L242,156L234,151L230,149L230,148L231,147L229,144L228,142L231,135L228,128L227,128L227,128L221,126L217,128L214,128Z " data-fips="CG03" data-fips-="" data-iso3="COD" data-name="Kasa-Occidental"/><path d="M145,175L147,173L147,170L147,164L148,163L144,163L141,164L138,162L140,159L139,157L136,157L134,158L132,155L131,156L125,162L121,160L121,157L122,155L121,153L114,156L113,155L111,159L107,161L107,160L98,160L98,161L94,165L95,165L95,173L90,174L94,178L100,175L103,175L109,175L123,176L129,176L145,175Z " data-fips="CG08" data-fips-="" data-iso3="COD" data-name="Bas-Congo"/><path d="M142,148L137,150L136,151L132,154L132,155L134,158L136,157L139,157L140,159L138,162L141,164L144,163L148,163L148,162L148,160L151,154L150,152L147,149L142,148L142,148Z " data-fips="CG06" data-fips-="" data-iso3="COD" data-name="Kinshasa City"/><path d="M310,121L305,121L303,124L298,123L297,125L297,128L298,132L300,134L301,146L306,149L309,149L314,151L317,152L322,159L325,163L325,163L329,163L332,163L332,163L332,162L333,157L330,146L331,143L328,132L326,130L327,126L329,123L330,118L330,117L326,116L323,118L321,120L320,119L314,122L311,120L310,121Z " data-fips="CG12" data-fips-="" data-iso3="COD" data-name="Sud-Kivu"/><path d="M309,100L297,95L292,98L287,94L291,99L289,101L285,113L283,112L283,118L278,119L273,122L269,120L263,120L263,121L267,127L272,127L273,131L270,139L268,142L267,146L271,151L271,155L269,157L270,160L272,163L289,163L325,163L325,163L322,159L317,152L314,151L309,149L306,149L301,146L300,134L298,132L297,128L297,125L298,123L303,124L305,121L310,121L310,120L302,109L304,109L303,106L309,105L311,101L310,100L309,100Z " data-fips="" data-fips-="" data-iso3="COD" data-name="Maniema"/><path d="M258,117L254,119L252,121L246,122L244,120L237,118L233,120L231,119L233,126L231,125L227,127L227,128L228,128L231,135L228,142L229,144L231,147L230,148L230,149L234,151L242,156L245,159L242,162L242,163L247,167L248,166L253,169L252,172L243,174L242,178L243,184L242,187L246,191L245,193L245,199L245,203L245,203L249,204L254,204L256,199L256,194L259,190L260,191L264,192L267,190L272,187L275,188L277,187L277,185L274,183L284,180L287,181L287,174L286,173L286,169L288,164L289,163L272,163L270,160L269,157L271,155L271,151L267,146L268,142L270,139L273,131L272,127L267,127L263,121L263,120L263,118L263,118L258,117Z " data-fips="CG04" data-fips-="" data-iso3="COD" data-name="Kasa-Oriental"/><path d="M332,163L332,163L329,163L325,163L289,163L288,164L286,169L286,173L287,174L287,181L284,180L274,183L277,185L277,187L275,188L272,187L267,190L264,192L260,191L259,190L256,194L256,199L254,204L249,204L245,203L245,203L244,203L241,204L238,204L236,202L231,203L226,201L225,203L228,212L225,225L229,232L230,233L232,240L233,244L231,247L232,251L235,250L240,249L245,249L249,247L254,248L257,246L259,248L261,249L262,254L275,251L274,255L277,258L282,259L284,261L290,261L296,262L297,261L300,256L301,259L306,266L310,266L311,267L316,268L317,270L320,274L321,275L324,281L328,282L333,280L334,282L336,282L337,265L332,266L331,268L326,268L325,265L319,260L317,254L318,253L322,242L321,238L321,230L318,223L323,219L325,217L325,212L351,207L347,200L346,196L342,190L339,188L334,181L334,177L336,172L332,163L332,163Z " data-fips="CG05" data-fips-="" data-iso3="COD" data-name="Katanga"/><path d="M310,100L311,101L309,105L303,106L304,109L302,109L310,120L310,121L311,120L314,122L320,119L321,120L323,118L326,116L330,117L331,116L333,114L336,111L335,105L337,93L341,85L341,80L341,80L340,79L333,80L333,81L321,84L319,82L314,83L310,85L314,87L315,95L310,100L310,100Z " data-fips="CG11" data-fips-="" data-iso3="COD" data-name="Nord-Kivu"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="1.31628947618" lon0="20.3145332978"/><bbox h="260.59" w="262.8" x="886.31" y="935.72"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M256,246L255,246L248,248L244,249L235,249L233,251L231,250L233,243L233,239L230,232L226,226L227,210L226,207L226,197L225,196L209,195L209,191L195,192L194,193L191,205L188,206L180,205L166,207L158,195L154,186L154,181L150,176L121,176L115,175L102,175L102,176L99,177L95,186L99,191L100,195L103,203L107,211L107,215L104,225L107,234L114,247L114,259L111,266L109,269L103,273L102,277L97,282L96,287L95,291L94,299L228,299L228,276L254,276L256,268L256,248L256,246Z M102,158L102,158L100,155L93,158L92,160L88,163L88,164L90,168L90,170L90,174L90,174L94,173L95,165L94,164L99,159L102,158L102,158Z " data-iso="AGO"/><path d="M349,126L343,126L340,131L333,132L330,129L328,130L328,131L328,131L331,136L330,145L333,153L333,155L337,155L341,153L346,146L348,143L353,136L349,127L349,126L349,126Z " data-iso="BDI"/><path d="M146,60L147,58L150,52L150,48L152,43L162,41L164,40L174,42L180,43L181,43L180,40L181,36L180,31L182,30L187,23L191,21L198,20L209,30L211,29L222,32L234,34L241,25L248,26L261,22L267,23L272,22L278,17L294,20L297,20L301,19L305,20L304,19L302,13L300,10L293,7L289,1L289,0L128,0L122,7L124,9L125,19L126,26L130,31L130,35L136,43L141,48L143,49L145,53L146,59L146,60Z " data-iso="CAF"/><path d="M39,24L44,27L45,34L49,36L52,36L58,48L56,56L56,59L57,61L59,61L74,61L78,61L78,60L81,60L103,60L105,61L105,62L109,62L122,62L124,61L132,63L134,65L138,65L146,68L145,64L146,60L146,60L146,59L145,53L143,49L141,48L136,43L130,35L130,31L126,26L125,19L124,9L122,7L128,0L78,0L54,0L45,8L42,18L39,24L39,24Z " data-iso="CMR"/><path d="M301,19L297,20L294,20L278,17L272,22L267,23L261,22L248,26L241,25L234,34L222,32L211,29L209,30L198,20L191,21L187,23L182,30L180,31L181,36L180,40L181,43L181,46L175,58L173,64L173,68L171,77L171,85L170,89L168,96L168,100L157,109L155,112L151,118L147,123L146,141L144,146L133,153L126,161L122,161L122,155L121,153L115,156L111,155L111,159L107,161L103,158L102,158L102,158L99,159L94,164L95,165L94,173L90,174L91,175L92,176L95,177L102,175L102,175L115,175L121,176L150,176L154,181L154,186L158,195L166,207L180,205L188,206L191,205L194,193L195,192L209,191L209,195L225,196L226,197L226,207L227,210L226,226L230,232L233,239L233,243L231,250L233,251L235,249L244,249L248,248L255,246L256,246L256,246L261,250L261,253L275,251L274,253L277,259L294,262L295,262L300,256L301,259L307,266L317,269L321,274L325,282L332,280L335,283L336,282L337,264L333,265L333,268L326,267L319,260L318,258L320,245L321,243L321,232L318,224L326,212L349,209L351,209L351,207L343,190L341,189L334,177L336,173L332,163L333,156L333,155L333,153L330,145L331,136L328,131L328,131L326,130L325,127L329,123L335,112L336,112L336,111L338,91L341,85L341,83L355,68L360,62L358,60L352,57L353,52L354,43L353,43L353,42L349,40L349,38L344,36L337,27L330,30L323,28L318,31L316,31L305,21L305,20L301,19Z " data-iso="COD"/><path d="M180,43L174,42L164,40L162,41L152,43L150,48L150,52L147,58L146,60L146,60L145,64L146,68L138,65L134,65L132,63L124,61L122,62L109,62L105,62L105,63L104,75L113,72L119,74L121,80L119,85L117,85L114,90L114,96L116,96L122,101L121,106L122,112L118,126L115,128L112,123L108,126L101,125L98,120L93,125L88,126L81,126L81,133L82,133L86,140L85,145L77,144L75,148L78,151L84,157L85,160L87,163L88,163L92,160L93,158L100,155L102,158L102,158L103,158L107,161L111,159L111,155L115,156L121,153L122,155L122,161L126,161L133,153L144,146L146,141L147,123L151,118L155,112L157,109L168,100L168,96L170,89L171,85L171,77L173,68L173,64L175,58L181,46L181,43L180,43Z " data-iso="COG"/><path d="M415,13L415,14L422,16L422,23L427,28L437,28L450,36L450,0L408,0L411,6L411,8L415,13L415,13Z " data-iso="ETH"/><path d="M105,61L103,60L81,60L78,60L78,61L78,65L78,78L57,78L53,77L53,78L54,81L49,83L56,92L51,90L49,88L49,97L44,102L41,101L50,118L50,121L59,131L64,135L68,140L74,147L75,148L77,144L85,145L86,140L82,133L81,133L81,126L88,126L93,125L98,120L101,125L108,126L112,123L115,128L118,126L122,112L121,106L122,101L116,96L114,96L114,90L117,85L119,85L121,80L119,74L113,72L104,75L105,63L105,62L105,61Z " data-iso="GAB"/><path d="M78,61L74,61L59,61L57,61L56,59L56,63L53,70L50,76L53,77L53,77L57,78L78,78L78,65L78,61Z M41,39L38,46L40,46L44,39L41,39Z " data-iso="GNQ"/><path d="M415,13L412,16L403,26L400,29L397,32L399,37L404,41L403,43L406,50L409,53L410,57L411,68L409,72L409,74L405,77L404,80L400,83L397,90L397,104L397,106L398,106L449,135L449,136L450,143L450,36L437,28L427,28L422,23L422,16L415,14L415,13Z " data-iso="KEN"/><path d="M383,291L380,292L370,295L362,298L359,299L400,299L398,297L389,299L384,292L383,291Z M409,257L407,257L404,258L400,266L401,272L402,282L408,286L411,290L418,299L450,299L450,253L448,256L442,259L435,257L427,259L422,255L418,257L412,257L409,257Z M405,264L404,263L405,263L405,264Z M404,263L403,263L403,263L404,263Z " data-iso="MOZ"/><path d="M405,264L405,263L404,263L405,264Z M404,263L403,263L403,263L404,263Z M409,257L408,256L406,253L405,243L403,234L401,231L396,227L388,229L387,227L381,226L381,226L381,226L386,232L386,235L389,238L388,245L386,246L387,251L385,254L386,258L385,264L386,270L380,274L379,282L377,284L382,290L383,291L384,292L389,299L398,297L400,299L418,299L411,290L408,286L402,282L401,272L400,266L404,258L407,257L409,257Z " data-iso="MWI"/><path d="M39,24L42,18L45,8L54,0L0,0L0,28L11,30L14,25L16,29L19,28L35,27L35,22L39,24L39,24Z " data-iso="NGA"/><path d="M348,107L346,108L342,113L340,111L336,112L336,112L335,112L329,123L325,127L326,130L328,131L328,130L330,129L333,132L340,131L343,126L349,126L349,126L350,126L354,124L353,114L348,108L349,107L348,107Z " data-iso="RWA"/><path d="M305,20L305,21L316,31L318,31L323,28L330,30L337,27L344,36L349,38L349,40L353,42L353,43L354,42L367,38L369,41L372,41L374,39L384,37L390,39L394,35L397,32L400,29L403,26L412,16L415,13L415,13L411,8L411,6L408,0L289,0L289,1L293,7L300,10L302,13L304,19L305,20Z " data-iso="SSD"/><path d="M12,90L12,86L10,91L12,90Z " data-iso="STP"/><path d="M397,106L395,106L370,106L358,106L349,107L349,107L348,108L353,114L354,124L350,126L349,126L349,127L353,136L348,143L346,146L341,153L337,155L333,155L333,156L332,163L336,173L334,177L341,189L343,190L351,207L351,209L352,210L356,214L360,214L366,219L380,225L381,226L381,226L387,227L388,229L396,227L401,231L403,234L405,243L406,253L408,256L409,257L412,257L418,257L422,255L427,259L435,257L442,259L448,256L450,253L450,143L449,136L449,135L398,106L397,106Z " data-iso="TZA"/><path d="M397,104L397,90L400,83L404,80L405,77L409,74L409,72L411,68L410,57L409,53L406,50L403,43L404,41L399,37L397,32L394,35L390,39L384,37L374,39L372,41L369,41L367,38L354,42L353,43L354,43L353,52L352,57L358,60L360,62L355,68L341,83L341,85L338,91L336,111L336,112L336,112L340,111L342,113L346,108L348,107L349,107L349,107L358,106L370,106L395,106L397,106L397,104Z " data-iso="UGA"/><path d="M383,291L382,290L377,284L379,282L380,274L386,270L385,264L386,258L385,254L387,251L386,246L388,245L389,238L386,235L386,232L381,226L381,226L380,225L366,219L360,214L356,214L352,210L351,209L349,209L326,212L318,224L321,232L321,243L320,245L318,258L319,260L326,267L333,268L333,265L337,264L336,282L335,283L332,280L325,282L321,274L317,269L307,266L301,259L300,256L295,262L294,262L277,259L274,253L275,251L261,253L261,250L256,246L256,246L256,248L256,268L254,276L228,276L228,299L359,299L362,298L370,295L380,292L383,291Z " data-iso="ZMB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,119L153,121L156,121L155,118L159,118L160,117L177,109L178,110L183,110L184,108L183,106L185,104L193,117L196,116L199,119L203,120L206,122L210,121L214,127L214,128L217,128L221,126L227,128L227,128L227,127L231,125L233,126L231,119L233,120L237,118L244,120L246,122L252,121L254,119L258,117L263,118L262,115L261,112L257,111L248,105L250,102L249,99L247,99L245,98L248,96L242,87L239,76L237,73L235,72L233,71L236,66L239,64L247,61L252,61L252,60L247,56L242,55L244,48L240,50L240,47L237,44L243,42L245,41L248,41L249,38L241,38L235,34L235,34L231,34L224,32L222,32L216,31L209,30L204,24L198,21L194,19L192,20L188,22L183,30L180,32L181,36L181,45L180,48L178,54L174,60L173,65L171,77L170,77L171,87L168,95L168,97L166,102L163,106L158,108L156,110L152,117L151,119Z " data-fips="CG02" data-fips-="" data-iso3="COD" data-name="quateur"/><path d="M235,34L241,38L249,38L248,41L245,41L243,42L237,44L240,47L240,50L244,48L242,55L247,56L252,60L252,61L247,61L239,64L236,66L233,71L235,72L237,73L239,76L242,87L248,96L245,98L247,99L249,99L250,102L248,105L257,111L261,112L262,115L263,118L263,118L263,120L269,120L273,122L278,119L283,118L283,112L285,113L289,101L291,99L287,94L292,98L297,95L309,100L310,100L310,100L315,95L314,87L310,85L314,83L319,82L321,84L333,81L333,80L340,79L341,80L342,80L345,76L354,68L359,62L358,59L352,57L354,51L349,41L349,38L344,36L343,34L333,27L332,30L325,29L324,28L319,31L313,29L310,26L310,25L303,19L301,19L296,21L291,20L288,19L284,19L279,16L275,21L266,23L262,20L256,23L251,25L245,25L241,24L241,26L237,29L235,34L235,34Z " data-fips="CG09" data-fips-="" data-iso3="COD" data-name="Orientale"/><path d="M151,119L147,123L146,125L146,133L147,140L142,148L142,148L147,149L150,152L151,154L148,160L148,162L148,163L147,164L147,170L147,173L145,175L148,175L154,180L154,185L158,192L157,193L158,196L159,197L165,206L169,207L179,205L183,205L183,206L191,206L191,204L193,199L194,191L200,191L196,185L196,179L200,177L203,172L203,165L201,160L201,153L205,155L206,153L209,152L210,139L214,129L214,128L214,127L210,121L206,122L203,120L199,119L196,116L193,117L185,104L183,106L184,108L183,110L178,110L177,109L160,117L159,118L155,118L156,121L153,121L151,119L151,119Z " data-fips="CG01" data-fips-="" data-iso3="COD" data-name="Bandundu"/><path d="M214,128L214,129L210,139L209,152L206,153L205,155L201,153L201,160L203,165L203,172L200,177L196,179L196,185L200,191L204,191L208,195L225,195L226,200L226,201L231,203L236,202L238,204L241,204L244,203L245,203L245,199L245,193L246,191L242,187L243,184L242,178L243,174L252,172L253,169L248,166L247,167L242,163L242,162L245,159L242,156L234,151L230,149L230,148L231,147L229,144L228,142L231,135L228,128L227,128L227,128L221,126L217,128L214,128Z " data-fips="CG03" data-fips-="" data-iso3="COD" data-name="Kasa-Occidental"/><path d="M145,175L147,173L147,170L147,164L148,163L144,163L141,164L138,162L140,159L139,157L136,157L134,158L132,155L131,156L125,162L121,160L121,157L122,155L121,153L114,156L113,155L111,159L107,161L107,160L98,160L98,161L94,165L95,165L95,173L90,174L94,178L100,175L103,175L109,175L123,176L129,176L145,175Z " data-fips="CG08" data-fips-="" data-iso3="COD" data-name="Bas-Congo"/><path d="M142,148L137,150L136,151L132,154L132,155L134,158L136,157L139,157L140,159L138,162L141,164L144,163L148,163L148,162L148,160L151,154L150,152L147,149L142,148L142,148Z " data-fips="CG06" data-fips-="" data-iso3="COD" data-name="Kinshasa City"/><path d="M310,121L305,121L303,124L298,123L297,125L297,128L298,132L300,134L301,146L306,149L309,149L314,151L317,152L322,159L325,163L325,163L329,163L332,163L332,163L332,162L333,157L330,146L331,143L328,132L326,130L327,126L329,123L330,118L330,117L326,116L323,118L321,120L320,119L314,122L311,120L310,121Z " data-fips="CG12" data-fips-="" data-iso3="COD" data-name="Sud-Kivu"/><path d="M309,100L297,95L292,98L287,94L291,99L289,101L285,113L283,112L283,118L278,119L273,122L269,120L263,120L263,121L267,127L272,127L273,131L270,139L268,142L267,146L271,151L271,155L269,157L270,160L272,163L289,163L325,163L325,163L322,159L317,152L314,151L309,149L306,149L301,146L300,134L298,132L297,128L297,125L298,123L303,124L305,121L310,121L310,120L302,109L304,109L303,106L309,105L311,101L310,100L309,100Z " data-fips="" data-fips-="" data-iso3="COD" data-name="Maniema"/><path d="M258,117L254,119L252,121L246,122L244,120L237,118L233,120L231,119L233,126L231,125L227,127L227,128L228,128L231,135L228,142L229,144L231,147L230,148L230,149L234,151L242,156L245,159L242,162L242,163L247,167L248,166L253,169L252,172L243,174L242,178L243,184L242,187L246,191L245,193L245,199L245,203L245,203L249,204L254,204L256,199L256,194L259,190L260,191L264,192L267,190L272,187L275,188L277,187L277,185L274,183L284,180L287,181L287,174L286,173L286,169L288,164L289,163L272,163L270,160L269,157L271,155L271,151L267,146L268,142L270,139L273,131L272,127L267,127L263,121L263,120L263,118L263,118L258,117Z " data-fips="CG04" data-fips-="" data-iso3="COD" data-name="Kasa-Oriental"/><path d="M332,163L332,163L329,163L325,163L289,163L288,164L286,169L286,173L287,174L287,181L284,180L274,183L277,185L277,187L275,188L272,187L267,190L264,192L260,191L259,190L256,194L256,199L254,204L249,204L245,203L245,203L244,203L241,204L238,204L236,202L231,203L226,201L225,203L228,212L225,225L229,232L230,233L232,240L233,244L231,247L232,251L235,250L240,249L245,249L249,247L254,248L257,246L259,248L261,249L262,254L275,251L274,255L277,258L282,259L284,261L290,261L296,262L297,261L300,256L301,259L306,266L310,266L311,267L316,268L317,270L320,274L321,275L324,281L328,282L333,280L334,282L336,282L337,265L332,266L331,268L326,268L325,265L319,260L317,254L318,253L322,242L321,238L321,230L318,223L323,219L325,217L325,212L351,207L347,200L346,196L342,190L339,188L334,181L334,177L336,172L332,163L332,163Z " data-fips="CG05" data-fips-="" data-iso3="COD" data-name="Katanga"/><path d="M310,100L311,101L309,105L303,106L304,109L302,109L310,120L310,121L311,120L314,122L320,119L321,120L323,118L326,116L330,117L331,116L333,114L336,111L335,105L337,93L341,85L341,80L341,80L340,79L333,80L333,81L321,84L319,82L314,83L310,85L314,87L315,95L310,100L310,100Z " data-fips="CG11" data-fips-="" data-iso3="COD" data-name="Nord-Kivu"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/EGY.svg b/plugins/UserCountryMap/svg/EGY.svg
index 2231f8b9006acd9619841ec30e2e93fc8ecdfb26..e0bff90efd9348855f756d6c061d3441959e1c45 100644
--- a/plugins/UserCountryMap/svg/EGY.svg
+++ b/plugins/UserCountryMap/svg/EGY.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="30.8490863104" lon0="31.0180448942"/><bbox h="137.16" w="153.08" x="922.56" y="980.21"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M300,30L293,33L288,35L281,35L277,36L276,34L262,36L257,32L252,36L247,33L244,31L247,26L251,30L253,30L249,25L239,27L231,23L228,23L227,27L217,28L224,25L225,24L217,26L213,27L209,32L202,33L190,41L182,43L180,43L169,37L157,36L154,33L140,27L129,25L122,23L110,20L98,22L94,21L93,18L85,26L87,41L85,50L81,55L80,58L82,65L84,79L85,84L81,175L76,271L76,277L86,278L133,280L162,280L233,281L235,276L239,277L237,281L258,281L300,280L373,277L373,277L372,275L361,267L357,261L349,259L343,253L340,245L338,240L338,229L338,227L344,227L337,221L329,213L320,195L316,187L313,181L307,172L300,158L298,155L296,144L294,139L291,137L287,130L287,122L279,114L271,104L269,98L265,88L259,78L258,76L261,70L261,68L263,66L265,71L267,79L270,85L275,90L280,104L284,109L288,112L292,118L299,123L303,125L308,116L308,109L312,98L314,84L317,80L318,78L312,59L308,53L303,38L301,32L300,30L300,29L300,30Z " data-iso="EGY"/><path d="M304,30L303,28L306,22L304,25L300,29L300,30L301,32L304,30Z " data-iso="GAZ"/><path d="M412,2L417,3L440,5L443,6L450,9L450,0L414,0L412,2Z " data-iso="IRQ"/><path d="M306,22L303,28L304,30L301,32L303,38L308,53L312,59L318,78L320,76L323,59L323,50L329,34L328,28L329,24L328,24L321,28L316,28L319,19L323,16L319,15L317,6L318,0L314,0L313,5L311,14L306,22L306,22Z " data-iso="ISR"/><path d="M329,24L328,28L329,34L323,50L323,59L320,76L320,78L319,82L334,84L346,85L355,76L360,67L361,66L377,62L388,48L363,22L409,5L412,2L414,0L359,0L359,0L357,0L330,0L331,4L330,10L331,16L329,22L329,24Z " data-iso="JOR"/><path d="M76,277L76,271L81,175L85,84L84,79L82,65L80,58L81,55L85,50L87,41L85,26L93,18L92,16L90,12L83,8L78,8L70,7L63,3L51,0L0,0L0,299L75,299L75,291L76,277Z " data-iso="LBY"/><path d="M370,187L371,185L361,179L361,181L365,183L370,187Z M412,2L409,5L363,22L388,48L377,62L361,66L360,67L355,76L346,85L334,84L319,82L316,99L316,105L313,117L315,115L323,116L326,117L332,125L336,133L340,137L343,142L347,147L349,150L353,155L360,168L364,169L366,177L370,180L376,189L379,197L378,201L387,215L394,217L396,217L406,224L411,229L424,251L422,251L427,258L428,264L426,278L431,287L430,293L434,299L450,299L450,9L443,6L440,5L417,3L412,2Z " data-iso="SAU"/><path d="M373,277L300,280L258,281L237,281L239,277L235,276L233,281L162,280L133,280L86,278L76,277L75,291L75,299L383,299L379,295L375,288L374,284L373,277Z " data-iso="SDN"/><path d="M357,0L359,0L359,0L357,0Z " data-iso="SYR"/><path d="M329,24L329,22L331,16L330,10L331,4L330,0L318,0L317,6L319,15L323,16L319,19L316,28L321,28L328,24L329,24Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M232,36L228,36L228,38L223,40L221,39L221,40L221,40L221,41L221,44L222,47L222,48L222,48L225,47L231,49L232,50L232,51L232,50L233,49L233,38L232,39L232,36L232,36L232,36Z " data-fips="EG05" data-fips-="" data-iso3="EGY" data-name="Al Gharbiyah"/><path d="M257,36L256,36L255,36L255,36L253,37L253,37L253,37L252,48L250,50L245,51L245,54L246,57L247,60L256,59L263,59L264,59L268,59L267,56L265,52L265,49L264,40L257,36Z " data-fips="EG07" data-fips-="" data-iso3="EGY" data-name="Al Isma`iliyah"/><path d="M232,50L231,49L225,47L222,48L222,48L222,49L223,53L223,54L223,57L223,57L223,57L226,60L228,60L230,61L230,61L230,61L228,56L233,51L232,51L232,50Z " data-fips="EG09" data-fips-="" data-iso3="EGY" data-name="Al Minufiyah"/><path d="M246,57L240,61L237,61L235,62L234,62L234,62L232,63L232,66L233,68L233,70L233,72L248,72L248,69L248,64L247,61L247,60L246,57Z " data-fips="EG11" data-fips-="" data-iso3="EGY" data-name="Al Qahirah"/><path d="M234,50L233,51L233,50L232,50L232,51L233,51L228,56L230,61L230,61L230,62L231,62L232,62L232,63L232,63L234,62L234,62L235,62L237,61L240,61L236,58L233,53L233,53L234,51L235,51L234,50Z " data-fips="EG12" data-fips-="" data-iso3="EGY" data-name="Al Qalyubiyah"/><path d="M251,36L245,37L240,44L238,44L235,50L235,51L234,51L233,53L233,53L236,58L240,61L246,57L245,54L245,51L250,50L252,48L253,37L253,37L252,38L252,37L251,36L251,36Z M256,36L256,34L256,34L256,34L256,36L254,36L253,36L253,37L255,36L255,36L256,36Z " data-fips="EG14" data-fips-="" data-iso3="EGY" data-name="Ash Sharqiyah"/><path d="M264,59L263,59L256,59L247,60L247,61L248,64L248,69L248,72L248,73L247,94L248,94L251,94L254,93L265,89L265,87L264,83L258,77L258,74L261,70L265,71L265,71L270,68L270,68L269,67L269,67L269,61L268,59L264,59Z " data-fips="EG15" data-fips-="" data-iso3="EGY" data-name="As Suways"/><path d="M255,31L254,31L254,31L255,31L255,31L255,31L255,31L255,31Z M252,29L252,29L251,29L251,29L253,30L252,29L252,29Z M235,25L233,26L233,35L233,36L232,36L232,36L232,39L233,38L233,49L232,50L233,50L233,51L234,50L235,51L235,50L238,44L240,44L245,37L251,36L251,35L250,33L248,34L245,32L245,32L241,35L242,32L238,29L240,27L239,27L239,27L236,26L235,25L235,25Z " data-fips="EG01" data-fips-="" data-iso3="EGY" data-name="Ad Daqahliyah"/><path d="M263,37L259,33L258,33L256,31L255,31L255,31L255,31L256,32L256,32L256,33L256,34L256,34L256,34L256,36L257,36L264,40L263,37L263,37L263,37Z " data-fips="EG19" data-fips-="" data-iso3="EGY" data-name="Bur Sa`id"/><path d="M252,29L250,28L247,25L240,27L240,27L238,29L242,32L241,35L245,32L245,32L246,29L247,25L251,29L251,29L252,29L252,29L252,29Z " data-fips="EG20" data-fips-="" data-iso3="EGY" data-name="Dumyat"/><path d="M83,125L84,125L139,127L150,106L153,103L172,98L177,95L193,80L211,69L196,59L195,57L194,39L194,39L193,39L185,43L181,43L168,37L168,36L157,36L155,35L154,32L146,32L142,28L140,28L132,26L129,24L120,23L111,20L108,20L98,22L93,21L85,26L85,31L88,42L85,50L80,57L82,65L82,69L83,71L83,76L85,84L83,125Z " data-fips="EG22" data-fips-="" data-iso3="EGY" data-name="Matruh"/><path d="M212,27L211,30L208,32L207,32L206,31L204,35L201,37L201,40L204,47L201,51L196,53L195,57L196,59L211,69L212,67L223,57L223,57L223,54L223,53L222,49L222,48L222,47L221,44L221,41L221,40L221,40L221,39L220,37L215,33L215,30L213,27L212,27Z " data-fips="EG03" data-fips-="" data-iso3="EGY" data-name="Al Buhayrah"/><path d="M227,75L226,73L221,74L210,80L199,90L209,92L221,91L223,90L228,83L229,82L227,75Z " data-fips="EG04" data-fips-="" data-iso3="EGY" data-name="Al Fayyum"/><path d="M206,31L204,31L200,35L194,39L194,39L194,39L195,57L196,53L201,51L204,47L201,40L201,37L204,35L206,31L206,31Z " data-fips="EG06" data-fips-="" data-iso3="EGY" data-name="Al Iskandariyah"/><path d="M230,61L228,60L226,60L223,57L223,57L212,67L211,69L193,80L177,95L172,98L153,103L150,106L139,127L171,128L172,124L175,121L186,116L190,113L193,109L197,99L198,97L199,90L210,80L221,74L226,73L227,75L229,82L230,82L232,83L232,83L233,85L233,85L234,87L235,88L237,90L238,91L247,94L248,73L248,72L233,72L233,70L233,68L232,66L232,63L232,63L232,62L231,62L230,62L230,61L230,61Z " data-fips="EG08" data-fips-="" data-iso3="EGY" data-name="Al Jizah"/><path d="M222,99L221,99L197,99L193,109L190,113L186,116L175,121L172,124L171,128L219,129L219,129L219,130L219,130L220,130L223,130L225,130L226,127L223,116L222,112L224,107L225,101L222,99Z " data-fips="EG10" data-fips-="" data-iso3="EGY" data-name="Al Minya"/><path d="M233,85L232,83L232,83L230,82L229,82L228,83L223,90L221,91L209,92L199,90L198,97L197,99L221,99L222,99L225,101L225,100L226,97L232,88L232,86L233,85L233,85Z " data-fips="EG18" data-fips-="" data-iso3="EGY" data-name="Bani Suwayf"/><path d="M232,23L227,23L230,25L227,25L217,29L217,28L223,24L219,26L212,27L213,27L215,30L215,33L220,37L221,39L221,40L221,39L223,40L228,38L228,36L232,36L232,36L233,36L233,35L233,26L235,25L232,23Z " data-fips="EG21" data-fips-="" data-iso3="EGY" data-name="Kafr ash Shaykh"/><path d="M268,193L268,194L268,195L268,195L267,196L267,196L269,197L271,201L272,204L274,209L273,216L273,225L271,226L267,227L270,233L264,235L263,236L262,242L266,243L269,243L270,245L268,247L265,253L260,259L256,257L247,262L243,261L242,266L240,272L233,274L232,276L234,278L235,276L238,275L239,276L237,281L239,281L247,275L248,274L253,271L254,266L260,268L264,268L270,262L271,258L278,258L285,260L283,257L278,253L281,246L280,242L280,234L276,228L275,221L279,213L276,206L276,202L273,197L268,193Z " data-fips="EG16" data-fips-="" data-iso3="EGY" data-name="Aswan"/><path d="M223,130L220,130L219,130L219,130L219,131L221,137L231,145L234,151L236,150L238,148L239,149L240,151L241,151L239,146L235,142L233,139L228,137L225,132L225,130L223,130Z " data-fips="EG17" data-fips-="" data-iso3="EGY" data-name="Asyut"/><path d="M250,170L239,157L237,155L234,151L231,145L221,137L219,131L219,130L219,129L219,129L171,128L139,127L84,125L83,125L83,130L82,147L76,277L233,281L233,281L234,278L232,276L233,274L240,272L242,266L243,261L247,262L256,257L260,259L265,253L268,247L270,245L269,243L266,243L262,242L263,236L264,235L270,233L267,227L271,226L273,225L273,216L274,209L272,204L271,201L269,197L267,196L265,195L263,192L262,185L262,183L269,174L267,170L253,173L250,170Z " data-fips="EG13" data-fips-="" data-iso3="EGY" data-name="Al Wadi at Jadid"/><path d="M267,192L266,189L267,185L272,180L273,174L273,172L269,167L264,167L259,169L258,169L257,170L254,167L253,168L250,169L250,170L253,173L267,170L269,174L262,183L262,185L263,192L265,195L267,196L267,196L268,195L268,195L268,194L268,193L267,192Z " data-fips="EG02" data-fips-="EG23" data-iso3="EGY" data-name="Qina"/><path d="M240,151L239,149L238,148L236,150L234,151L237,155L239,157L250,170L250,169L253,168L254,167L257,170L258,169L256,166L255,165L245,154L241,151L240,151Z " data-fips="EG24" data-fips-="" data-iso3="EGY" data-name="Suhaj"/><path d="M238,91L237,90L235,88L234,87L233,85L232,86L232,88L226,97L225,100L225,101L224,107L222,112L223,116L226,127L225,130L225,132L228,137L233,139L235,142L239,146L241,151L245,154L255,165L256,166L258,169L259,169L264,167L269,167L273,172L273,174L272,180L267,185L266,189L267,192L268,193L273,197L276,202L276,206L279,213L275,221L276,228L280,234L280,242L281,246L278,253L283,257L285,260L278,258L271,258L270,262L264,268L260,268L254,266L253,271L248,274L247,275L239,281L265,281L280,281L374,277L369,273L363,269L360,266L358,263L356,261L350,260L347,258L342,252L342,250L339,243L338,238L338,235L337,226L345,227L344,226L337,222L328,211L326,206L318,190L315,184L307,172L299,157L297,155L297,150L298,149L294,143L294,139L288,131L286,129L287,127L285,124L288,125L286,120L282,118L277,112L274,106L271,104L269,98L265,94L266,90L265,89L254,93L251,94L248,94L247,94L238,91Z " data-fips="EG02" data-fips-="" data-iso3="EGY" data-name="Al Bahr al Ahmar"/><path d="M270,68L265,71L265,71L267,77L267,80L268,81L270,84L275,91L279,99L279,103L280,104L287,111L291,117L300,124L304,124L305,122L308,119L307,110L311,102L312,95L314,83L317,78L318,78L308,77L297,73L291,70L276,68L270,68Z " data-fips="EG26" data-fips-="" data-iso3="EGY" data-name="Janub Sina'"/><path d="M263,37L263,37L264,40L265,49L265,52L267,56L268,59L269,61L269,67L269,67L270,68L270,68L276,68L291,70L297,73L308,77L318,78L318,78L317,76L313,64L310,55L309,54L307,47L303,38L297,32L292,34L288,35L282,35L276,37L275,34L272,36L272,36L263,37L263,37Z " data-fips="EG32" data-fips-="EG27" data-iso3="EGY" data-name="Shamal Sina'"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="30.8490863104" lon0="31.0180448942"/><bbox h="137.16" w="153.08" x="922.56" y="980.21"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M300,30L293,33L288,35L281,35L277,36L276,34L262,36L257,32L252,36L247,33L244,31L247,26L251,30L253,30L249,25L239,27L231,23L228,23L227,27L217,28L224,25L225,24L217,26L213,27L209,32L202,33L190,41L182,43L180,43L169,37L157,36L154,33L140,27L129,25L122,23L110,20L98,22L94,21L93,18L85,26L87,41L85,50L81,55L80,58L82,65L84,79L85,84L81,175L76,271L76,277L86,278L133,280L162,280L233,281L235,276L239,277L237,281L258,281L300,280L373,277L373,277L372,275L361,267L357,261L349,259L343,253L340,245L338,240L338,229L338,227L344,227L337,221L329,213L320,195L316,187L313,181L307,172L300,158L298,155L296,144L294,139L291,137L287,130L287,122L279,114L271,104L269,98L265,88L259,78L258,76L261,70L261,68L263,66L265,71L267,79L270,85L275,90L280,104L284,109L288,112L292,118L299,123L303,125L308,116L308,109L312,98L314,84L317,80L318,78L312,59L308,53L303,38L301,32L300,30L300,29L300,30Z " data-iso="EGY"/><path d="M304,30L303,28L306,22L304,25L300,29L300,30L301,32L304,30Z " data-iso="PSE"/><path d="M412,2L417,3L440,5L443,6L450,9L450,0L414,0L412,2Z " data-iso="IRQ"/><path d="M306,22L303,28L304,30L301,32L303,38L308,53L312,59L318,78L320,76L323,59L323,50L329,34L328,28L329,24L328,24L321,28L316,28L319,19L323,16L319,15L317,6L318,0L314,0L313,5L311,14L306,22L306,22Z " data-iso="ISR"/><path d="M329,24L328,28L329,34L323,50L323,59L320,76L320,78L319,82L334,84L346,85L355,76L360,67L361,66L377,62L388,48L363,22L409,5L412,2L414,0L359,0L359,0L357,0L330,0L331,4L330,10L331,16L329,22L329,24Z " data-iso="JOR"/><path d="M76,277L76,271L81,175L85,84L84,79L82,65L80,58L81,55L85,50L87,41L85,26L93,18L92,16L90,12L83,8L78,8L70,7L63,3L51,0L0,0L0,299L75,299L75,291L76,277Z " data-iso="LBY"/><path d="M370,187L371,185L361,179L361,181L365,183L370,187Z M412,2L409,5L363,22L388,48L377,62L361,66L360,67L355,76L346,85L334,84L319,82L316,99L316,105L313,117L315,115L323,116L326,117L332,125L336,133L340,137L343,142L347,147L349,150L353,155L360,168L364,169L366,177L370,180L376,189L379,197L378,201L387,215L394,217L396,217L406,224L411,229L424,251L422,251L427,258L428,264L426,278L431,287L430,293L434,299L450,299L450,9L443,6L440,5L417,3L412,2Z " data-iso="SAU"/><path d="M373,277L300,280L258,281L237,281L239,277L235,276L233,281L162,280L133,280L86,278L76,277L75,291L75,299L383,299L379,295L375,288L374,284L373,277Z " data-iso="SDN"/><path d="M357,0L359,0L359,0L357,0Z " data-iso="SYR"/><path d="M329,24L329,22L331,16L330,10L331,4L330,0L318,0L317,6L319,15L323,16L319,19L316,28L321,28L328,24L329,24Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M232,36L228,36L228,38L223,40L221,39L221,40L221,40L221,41L221,44L222,47L222,48L222,48L225,47L231,49L232,50L232,51L232,50L233,49L233,38L232,39L232,36L232,36L232,36Z " data-fips="EG05" data-fips-="" data-iso3="EGY" data-name="Al Gharbiyah"/><path d="M257,36L256,36L255,36L255,36L253,37L253,37L253,37L252,48L250,50L245,51L245,54L246,57L247,60L256,59L263,59L264,59L268,59L267,56L265,52L265,49L264,40L257,36Z " data-fips="EG07" data-fips-="" data-iso3="EGY" data-name="Al Isma`iliyah"/><path d="M232,50L231,49L225,47L222,48L222,48L222,49L223,53L223,54L223,57L223,57L223,57L226,60L228,60L230,61L230,61L230,61L228,56L233,51L232,51L232,50Z " data-fips="EG09" data-fips-="" data-iso3="EGY" data-name="Al Minufiyah"/><path d="M246,57L240,61L237,61L235,62L234,62L234,62L232,63L232,66L233,68L233,70L233,72L248,72L248,69L248,64L247,61L247,60L246,57Z " data-fips="EG11" data-fips-="" data-iso3="EGY" data-name="Al Qahirah"/><path d="M234,50L233,51L233,50L232,50L232,51L233,51L228,56L230,61L230,61L230,62L231,62L232,62L232,63L232,63L234,62L234,62L235,62L237,61L240,61L236,58L233,53L233,53L234,51L235,51L234,50Z " data-fips="EG12" data-fips-="" data-iso3="EGY" data-name="Al Qalyubiyah"/><path d="M251,36L245,37L240,44L238,44L235,50L235,51L234,51L233,53L233,53L236,58L240,61L246,57L245,54L245,51L250,50L252,48L253,37L253,37L252,38L252,37L251,36L251,36Z M256,36L256,34L256,34L256,34L256,36L254,36L253,36L253,37L255,36L255,36L256,36Z " data-fips="EG14" data-fips-="" data-iso3="EGY" data-name="Ash Sharqiyah"/><path d="M264,59L263,59L256,59L247,60L247,61L248,64L248,69L248,72L248,73L247,94L248,94L251,94L254,93L265,89L265,87L264,83L258,77L258,74L261,70L265,71L265,71L270,68L270,68L269,67L269,67L269,61L268,59L264,59Z " data-fips="EG15" data-fips-="" data-iso3="EGY" data-name="As Suways"/><path d="M255,31L254,31L254,31L255,31L255,31L255,31L255,31L255,31Z M252,29L252,29L251,29L251,29L253,30L252,29L252,29Z M235,25L233,26L233,35L233,36L232,36L232,36L232,39L233,38L233,49L232,50L233,50L233,51L234,50L235,51L235,50L238,44L240,44L245,37L251,36L251,35L250,33L248,34L245,32L245,32L241,35L242,32L238,29L240,27L239,27L239,27L236,26L235,25L235,25Z " data-fips="EG01" data-fips-="" data-iso3="EGY" data-name="Ad Daqahliyah"/><path d="M263,37L259,33L258,33L256,31L255,31L255,31L255,31L256,32L256,32L256,33L256,34L256,34L256,34L256,36L257,36L264,40L263,37L263,37L263,37Z " data-fips="EG19" data-fips-="" data-iso3="EGY" data-name="Bur Sa`id"/><path d="M252,29L250,28L247,25L240,27L240,27L238,29L242,32L241,35L245,32L245,32L246,29L247,25L251,29L251,29L252,29L252,29L252,29Z " data-fips="EG20" data-fips-="" data-iso3="EGY" data-name="Dumyat"/><path d="M83,125L84,125L139,127L150,106L153,103L172,98L177,95L193,80L211,69L196,59L195,57L194,39L194,39L193,39L185,43L181,43L168,37L168,36L157,36L155,35L154,32L146,32L142,28L140,28L132,26L129,24L120,23L111,20L108,20L98,22L93,21L85,26L85,31L88,42L85,50L80,57L82,65L82,69L83,71L83,76L85,84L83,125Z " data-fips="EG22" data-fips-="" data-iso3="EGY" data-name="Matruh"/><path d="M212,27L211,30L208,32L207,32L206,31L204,35L201,37L201,40L204,47L201,51L196,53L195,57L196,59L211,69L212,67L223,57L223,57L223,54L223,53L222,49L222,48L222,47L221,44L221,41L221,40L221,40L221,39L220,37L215,33L215,30L213,27L212,27Z " data-fips="EG03" data-fips-="" data-iso3="EGY" data-name="Al Buhayrah"/><path d="M227,75L226,73L221,74L210,80L199,90L209,92L221,91L223,90L228,83L229,82L227,75Z " data-fips="EG04" data-fips-="" data-iso3="EGY" data-name="Al Fayyum"/><path d="M206,31L204,31L200,35L194,39L194,39L194,39L195,57L196,53L201,51L204,47L201,40L201,37L204,35L206,31L206,31Z " data-fips="EG06" data-fips-="" data-iso3="EGY" data-name="Al Iskandariyah"/><path d="M230,61L228,60L226,60L223,57L223,57L212,67L211,69L193,80L177,95L172,98L153,103L150,106L139,127L171,128L172,124L175,121L186,116L190,113L193,109L197,99L198,97L199,90L210,80L221,74L226,73L227,75L229,82L230,82L232,83L232,83L233,85L233,85L234,87L235,88L237,90L238,91L247,94L248,73L248,72L233,72L233,70L233,68L232,66L232,63L232,63L232,62L231,62L230,62L230,61L230,61Z " data-fips="EG08" data-fips-="" data-iso3="EGY" data-name="Al Jizah"/><path d="M222,99L221,99L197,99L193,109L190,113L186,116L175,121L172,124L171,128L219,129L219,129L219,130L219,130L220,130L223,130L225,130L226,127L223,116L222,112L224,107L225,101L222,99Z " data-fips="EG10" data-fips-="" data-iso3="EGY" data-name="Al Minya"/><path d="M233,85L232,83L232,83L230,82L229,82L228,83L223,90L221,91L209,92L199,90L198,97L197,99L221,99L222,99L225,101L225,100L226,97L232,88L232,86L233,85L233,85Z " data-fips="EG18" data-fips-="" data-iso3="EGY" data-name="Bani Suwayf"/><path d="M232,23L227,23L230,25L227,25L217,29L217,28L223,24L219,26L212,27L213,27L215,30L215,33L220,37L221,39L221,40L221,39L223,40L228,38L228,36L232,36L232,36L233,36L233,35L233,26L235,25L232,23Z " data-fips="EG21" data-fips-="" data-iso3="EGY" data-name="Kafr ash Shaykh"/><path d="M268,193L268,194L268,195L268,195L267,196L267,196L269,197L271,201L272,204L274,209L273,216L273,225L271,226L267,227L270,233L264,235L263,236L262,242L266,243L269,243L270,245L268,247L265,253L260,259L256,257L247,262L243,261L242,266L240,272L233,274L232,276L234,278L235,276L238,275L239,276L237,281L239,281L247,275L248,274L253,271L254,266L260,268L264,268L270,262L271,258L278,258L285,260L283,257L278,253L281,246L280,242L280,234L276,228L275,221L279,213L276,206L276,202L273,197L268,193Z " data-fips="EG16" data-fips-="" data-iso3="EGY" data-name="Aswan"/><path d="M223,130L220,130L219,130L219,130L219,131L221,137L231,145L234,151L236,150L238,148L239,149L240,151L241,151L239,146L235,142L233,139L228,137L225,132L225,130L223,130Z " data-fips="EG17" data-fips-="" data-iso3="EGY" data-name="Asyut"/><path d="M250,170L239,157L237,155L234,151L231,145L221,137L219,131L219,130L219,129L219,129L171,128L139,127L84,125L83,125L83,130L82,147L76,277L233,281L233,281L234,278L232,276L233,274L240,272L242,266L243,261L247,262L256,257L260,259L265,253L268,247L270,245L269,243L266,243L262,242L263,236L264,235L270,233L267,227L271,226L273,225L273,216L274,209L272,204L271,201L269,197L267,196L265,195L263,192L262,185L262,183L269,174L267,170L253,173L250,170Z " data-fips="EG13" data-fips-="" data-iso3="EGY" data-name="Al Wadi at Jadid"/><path d="M267,192L266,189L267,185L272,180L273,174L273,172L269,167L264,167L259,169L258,169L257,170L254,167L253,168L250,169L250,170L253,173L267,170L269,174L262,183L262,185L263,192L265,195L267,196L267,196L268,195L268,195L268,194L268,193L267,192Z " data-fips="EG02" data-fips-="EG23" data-iso3="EGY" data-name="Qina"/><path d="M240,151L239,149L238,148L236,150L234,151L237,155L239,157L250,170L250,169L253,168L254,167L257,170L258,169L256,166L255,165L245,154L241,151L240,151Z " data-fips="EG24" data-fips-="" data-iso3="EGY" data-name="Suhaj"/><path d="M238,91L237,90L235,88L234,87L233,85L232,86L232,88L226,97L225,100L225,101L224,107L222,112L223,116L226,127L225,130L225,132L228,137L233,139L235,142L239,146L241,151L245,154L255,165L256,166L258,169L259,169L264,167L269,167L273,172L273,174L272,180L267,185L266,189L267,192L268,193L273,197L276,202L276,206L279,213L275,221L276,228L280,234L280,242L281,246L278,253L283,257L285,260L278,258L271,258L270,262L264,268L260,268L254,266L253,271L248,274L247,275L239,281L265,281L280,281L374,277L369,273L363,269L360,266L358,263L356,261L350,260L347,258L342,252L342,250L339,243L338,238L338,235L337,226L345,227L344,226L337,222L328,211L326,206L318,190L315,184L307,172L299,157L297,155L297,150L298,149L294,143L294,139L288,131L286,129L287,127L285,124L288,125L286,120L282,118L277,112L274,106L271,104L269,98L265,94L266,90L265,89L254,93L251,94L248,94L247,94L238,91Z " data-fips="EG02" data-fips-="" data-iso3="EGY" data-name="Al Bahr al Ahmar"/><path d="M270,68L265,71L265,71L267,77L267,80L268,81L270,84L275,91L279,99L279,103L280,104L287,111L291,117L300,124L304,124L305,122L308,119L307,110L311,102L312,95L314,83L317,78L318,78L308,77L297,73L291,70L276,68L270,68Z " data-fips="EG26" data-fips-="" data-iso3="EGY" data-name="Janub Sina'"/><path d="M263,37L263,37L264,40L265,49L265,52L267,56L268,59L269,61L269,67L269,67L270,68L270,68L276,68L291,70L297,73L308,77L318,78L318,78L317,76L313,64L310,55L309,54L307,47L303,38L297,32L292,34L288,35L282,35L276,37L275,34L272,36L272,36L263,37L263,37Z " data-fips="EG32" data-fips-="EG27" data-iso3="EGY" data-name="Shamal Sina'"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/ETH.svg b/plugins/UserCountryMap/svg/ETH.svg
index d6599ee3e370652a7c5423128aa0547bfa641de8..1cdf5d134bb63957ff7f47e49ef1e6740bdd991b 100644
--- a/plugins/UserCountryMap/svg/ETH.svg
+++ b/plugins/UserCountryMap/svg/ETH.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.2663152129" lon0="38.3111557051"/><bbox h="163.5" w="205.07" x="923.96" y="944.42"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M8,275L7,274L6,272L2,271L0,267L0,299L6,299L6,294L8,290L6,285L7,283L9,277L9,276L8,275Z " data-iso="COD"/><path d="M284,94L270,96L272,94L276,90L281,88L286,85L289,80L288,76L283,69L282,68L276,71L275,75L273,76L268,73L267,73L266,74L264,77L257,88L254,91L254,108L255,108L271,105L277,107L279,107L281,102L284,99L286,95L284,94Z " data-iso="DJI"/><path d="M212,0L213,3L222,4L216,0L212,0Z M137,34L138,34L148,34L152,30L160,37L167,21L170,23L175,25L178,29L181,30L187,29L193,26L196,29L203,28L208,29L230,36L238,46L244,51L252,58L257,65L263,70L264,72L266,74L267,73L268,73L273,76L275,75L276,71L282,68L282,66L280,64L279,66L275,65L274,61L269,57L266,57L263,49L250,40L246,34L239,26L231,23L227,20L218,17L215,12L214,10L210,7L209,10L209,14L203,5L201,0L142,0L138,12L135,14L137,28L137,34Z " data-iso="ERI"/><path d="M137,34L136,40L134,48L130,56L129,60L128,68L118,71L117,73L109,86L102,101L102,108L92,111L87,118L88,124L85,131L82,141L82,142L82,143L82,162L79,165L64,165L58,175L60,178L73,182L78,186L86,197L91,200L96,205L101,219L102,223L106,230L108,231L108,232L108,232L119,235L120,237L119,247L124,254L126,255L150,260L171,273L183,275L197,277L203,278L210,271L211,269L215,267L232,259L240,266L242,267L254,266L257,266L258,264L260,262L278,258L285,250L295,245L305,243L325,244L330,239L348,219L387,178L392,172L385,172L370,173L369,172L304,152L294,144L292,143L286,135L285,132L277,125L273,115L278,108L279,107L277,107L271,105L255,108L254,108L254,91L257,88L264,77L266,74L264,72L263,70L257,65L252,58L244,51L238,46L230,36L208,29L203,28L196,29L193,26L187,29L181,30L178,29L175,25L170,23L167,21L160,37L152,30L148,34L138,34L137,34Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-iso="ETH"/><path d="M257,266L254,266L242,267L240,266L232,259L215,267L211,269L210,271L203,278L197,277L183,275L171,273L150,260L126,255L124,254L119,247L120,237L119,235L108,232L108,232L104,236L88,251L83,256L79,260L82,267L89,274L88,278L89,284L91,285L92,289L97,294L99,299L237,299L237,291L245,283L254,270L257,266Z " data-iso="KEN"/><path d="M82,142L82,142L82,141L85,131L88,124L87,118L92,111L102,108L102,101L109,86L117,73L118,71L128,68L129,60L130,56L134,48L136,40L137,34L137,28L135,14L138,12L142,0L0,0L0,127L9,134L19,133L29,124L35,114L46,105L45,101L45,90L39,83L54,84L64,79L61,93L63,111L69,117L78,125L80,133L78,136L82,142L82,142Z " data-iso="SDN"/><path d="M8,275L9,274L15,269L24,271L30,269L33,273L38,275L42,271L53,269L57,267L60,270L68,270L73,265L79,260L83,256L88,251L104,236L108,232L108,231L106,230L102,223L101,219L96,205L91,200L86,197L78,186L73,182L60,178L58,175L64,165L79,165L82,162L82,143L82,142L82,142L82,142L78,136L80,133L78,125L69,117L63,111L61,93L64,79L54,84L39,83L45,90L45,101L46,105L35,114L29,124L19,133L9,134L0,127L0,267L2,271L6,272L7,274L8,275Z " data-iso="SDS"/><path d="M411,98L406,96L391,101L384,102L374,102L368,107L359,111L357,111L343,109L332,114L324,119L311,119L299,111L294,106L290,99L286,95L284,99L281,102L279,107L278,108L273,115L277,125L285,132L286,135L292,143L294,144L304,152L369,172L370,173L385,172L392,172L396,167L413,138L412,127L411,98L411,98Z " data-iso="SOL"/><path d="M411,98L412,127L413,138L396,167L392,172L387,178L348,219L330,239L325,244L305,243L295,245L285,250L278,258L260,262L258,264L257,266L254,270L245,283L237,291L237,299L350,299L351,298L370,279L384,263L394,251L400,241L409,228L417,213L418,207L421,199L424,194L432,178L434,171L440,166L443,159L446,151L450,146L450,80L445,86L437,90L427,93L421,95L414,97L411,98Z " data-iso="SOM"/><path d="M79,260L73,265L68,270L60,270L57,267L53,269L42,271L38,275L33,273L30,269L24,271L15,269L9,274L8,275L9,276L9,277L7,283L6,285L8,290L6,294L6,299L99,299L97,294L92,289L91,285L89,284L88,278L89,274L82,267L79,260Z " data-iso="UGA"/><path d="M273,0L272,2L274,8L271,11L276,14L279,27L281,34L281,39L284,42L285,56L290,65L290,68L294,67L302,70L315,65L318,66L325,65L327,61L332,59L338,53L362,49L366,47L376,44L381,40L388,35L395,36L403,35L405,33L410,27L411,25L422,19L429,16L435,15L442,11L450,8L450,0L273,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,47L134,49L131,54L128,69L126,69L120,70L117,72L109,86L109,86L112,90L115,89L119,86L124,85L131,91L133,91L134,98L137,100L136,106L133,110L132,111L134,113L133,118L134,120L145,123L148,123L149,124L154,129L159,130L163,134L175,128L179,127L181,122L186,122L189,123L188,128L184,129L187,132L188,135L197,139L202,143L202,145L198,147L200,151L198,154L199,157L202,157L203,158L208,156L209,150L210,150L210,149L212,146L211,142L212,139L211,136L214,136L216,131L214,129L217,128L218,119L217,113L217,109L218,107L218,103L215,100L215,97L212,91L209,79L209,78L208,78L204,79L204,78L200,78L197,77L196,72L198,66L194,62L192,62L186,54L185,51L180,49L178,51L170,52L167,50L164,50L163,52L158,54L146,54L137,49L136,45L135,47Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-fips="ET46" data-fips-="ET19" data-iso3="ETH" data-name="Amhara"/><path d="M136,45L137,49L146,54L158,54L163,52L164,50L167,50L170,52L178,51L180,49L185,51L186,54L192,62L194,62L198,66L196,72L197,77L200,78L204,78L204,79L208,78L209,78L209,77L211,68L208,65L209,58L208,56L208,52L210,49L209,46L208,37L207,36L208,33L207,32L212,32L213,30L213,29L211,30L210,29L203,27L199,29L196,29L193,25L189,29L181,31L177,29L174,24L170,24L167,20L160,37L154,30L152,30L149,33L148,34L142,32L142,33L136,44L136,45Z " data-fips="ET06" data-fips-="ET37|ET54" data-iso3="ETH" data-name="Tigray"/><path d="M213,30L212,32L207,32L208,33L207,36L208,37L209,46L210,49L208,52L208,56L209,58L208,65L211,68L209,77L209,78L209,79L212,91L215,97L215,100L218,103L218,107L217,109L217,113L218,119L217,128L214,129L216,131L214,136L211,136L212,139L211,142L212,146L210,149L210,150L211,149L212,149L215,156L216,155L219,153L223,146L225,144L229,143L230,143L230,141L232,135L237,131L235,129L238,114L242,108L253,107L253,107L253,101L253,96L257,88L266,74L262,68L255,63L254,59L251,56L247,53L236,43L232,37L223,34L220,31L214,30L213,30Z " data-fips="ET26" data-fips-="ET21|ET45" data-iso3="ETH" data-name="Afar"/><path d="M108,185L109,186L110,188L110,195L106,195L104,194L98,195L95,197L93,197L90,196L84,195L84,195L87,198L90,199L92,201L92,203L96,205L97,210L101,220L102,223L105,229L108,232L108,233L120,236L120,240L119,241L119,246L125,255L139,256L139,256L141,255L145,248L144,244L146,240L147,238L157,239L162,236L167,238L168,231L168,229L172,227L169,222L165,220L165,218L166,214L167,207L170,207L174,210L175,210L176,213L174,223L177,223L178,222L177,221L179,215L179,212L183,211L187,211L189,213L191,216L193,217L195,217L195,212L192,207L191,206L184,203L183,196L177,194L173,197L176,189L179,186L180,181L183,175L182,171L185,173L185,170L184,166L181,165L179,168L175,166L163,168L161,167L160,166L158,168L158,169L161,170L161,174L156,175L156,182L157,185L155,189L150,193L142,192L138,189L128,185L126,185L125,181L122,179L123,176L122,174L120,173L120,177L119,178L115,179L114,178L112,178L108,183L108,185Z " data-fips="ET54" data-fips-="ET39|ET53" data-iso3="ETH" data-name="Southern Nations, Nationalities and Peoples"/><path d="M83,162L75,166L72,164L66,165L64,164L62,168L63,169L62,171L60,172L58,176L59,178L64,180L70,181L77,185L84,194L84,195L90,196L93,197L95,197L98,195L104,194L106,195L110,195L110,188L109,186L108,185L108,186L105,187L105,185L103,184L100,179L101,174L100,174L105,171L96,169L85,161L83,161L83,162Z " data-fips="ET49" data-fips-="ET40" data-iso3="ETH" data-name="Gambela Peoples"/><path d="M148,123L148,124L147,125L142,123L139,125L137,125L138,122L130,128L129,129L128,137L128,138L130,145L127,149L123,145L121,145L114,137L109,132L101,131L99,135L91,138L90,142L89,148L82,148L83,161L83,161L85,161L96,169L105,171L100,174L101,174L100,179L103,184L105,185L105,187L108,186L108,185L108,183L112,178L114,178L115,179L119,178L120,177L120,173L122,174L123,176L122,179L125,181L126,185L128,185L138,189L142,192L150,193L155,189L157,185L156,182L156,175L161,174L161,170L158,169L158,168L160,166L161,167L163,168L175,166L179,168L181,165L184,166L185,170L185,173L182,171L183,175L180,181L179,186L176,189L173,197L177,194L183,196L184,203L191,206L192,207L195,212L195,217L193,217L191,216L189,213L187,211L183,211L179,212L179,215L177,221L178,222L177,223L174,223L176,213L175,210L174,210L170,207L167,207L166,214L165,218L165,220L169,222L172,227L168,229L168,231L167,238L162,236L157,239L147,238L146,240L144,244L145,248L141,255L139,256L139,256L143,256L149,259L169,272L174,274L178,275L184,274L190,276L194,276L194,276L200,273L209,251L209,249L213,237L215,234L219,235L227,233L230,230L235,227L234,218L234,210L239,205L240,205L247,208L251,212L253,209L258,207L261,202L264,191L257,188L256,185L258,180L257,178L257,172L263,161L265,161L271,165L272,168L273,171L277,166L279,166L276,154L273,149L270,141L267,139L267,136L266,136L266,136L262,140L260,142L253,141L253,142L252,142L248,142L243,141L236,145L232,144L235,143L230,142L230,143L229,143L225,144L223,146L219,153L216,155L215,156L212,149L211,149L210,150L209,150L208,156L203,158L202,157L199,157L198,154L200,151L198,147L202,145L202,143L197,139L188,135L187,132L184,129L188,128L189,123L186,122L181,122L179,127L175,128L163,134L159,130L154,129L149,124L148,123Z M135,141L135,141L135,141L136,142L136,142L136,142L136,142L135,143L135,145L135,144L134,145L134,145L134,145L134,145L133,143L134,141L135,141Z M188,151L188,151L189,151L189,151L190,152L190,153L190,153L190,153L190,154L190,154L190,154L189,154L189,154L188,156L188,156L188,157L187,156L187,156L187,156L186,156L186,155L186,155L185,155L185,155L185,155L185,154L185,154L184,153L184,153L184,153L184,153L184,153L184,152L185,152L185,151L185,151L186,151L187,151L187,151L187,151L187,151L187,151L188,151L188,151Z M130,155L130,156L130,156L130,156L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L129,155L128,156L128,156L127,156L127,156L127,156L126,156L126,156L126,156L126,156L125,156L125,156L125,155L125,155L125,154L125,154L125,154L126,153L126,152L128,152L128,152L128,152L129,152L129,153L129,153L129,153L129,153L130,153L130,153L130,153L130,154L130,154L130,155Z M131,153L131,153L132,153L132,153L132,154L132,154L132,154L132,154L132,154L131,154L131,154L131,154L130,154L130,154L130,153L130,153L131,153Z M265,144L265,144L265,145L264,146L264,146L264,146L265,147L265,147L265,148L264,148L264,148L263,147L263,147L263,147L262,148L262,148L262,147L262,147L261,147L261,147L260,147L260,147L260,147L260,146L260,145L261,144L262,144L262,144L262,144L263,144L263,144L264,144L264,144L265,144Z " data-fips="ET44" data-fips-="ET27" data-iso3="ETH" data-name="Addis Ababa"/><path d="M132,154L132,154L132,154L132,153L132,153L131,153L131,153L130,153L130,153L130,154L130,154L131,154L131,154L131,154L132,154L132,154L132,154Z M125,154L125,154L125,154L125,155L125,155L125,155L125,156L125,156L126,156L126,156L126,156L126,156L127,156L127,156L127,156L128,156L128,156L129,155L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L130,156L130,156L130,156L130,155L130,154L130,154L130,153L130,153L130,153L129,153L129,153L129,153L129,153L129,152L129,152L128,152L128,152L128,152L126,152L126,153L125,154Z M136,142L136,142L136,142L135,141L135,141L135,141L134,141L133,143L134,145L134,145L134,145L134,145L134,145L135,144L135,145L135,143L136,142L136,142Z M109,86L106,88L104,91L105,95L102,101L103,104L101,108L98,114L93,110L90,112L87,117L88,124L88,127L86,129L83,137L82,142L82,148L89,148L90,142L91,138L99,135L101,131L109,132L114,137L121,145L123,145L127,149L130,145L128,138L128,137L129,129L130,128L138,122L137,125L139,125L142,123L147,125L148,124L148,123L145,123L134,120L133,118L134,113L132,111L133,110L136,106L137,100L134,98L133,91L131,91L124,85L119,86L115,89L112,90L109,86L109,86Z " data-fips="ET47" data-fips-="ET43" data-iso3="ETH" data-name="Benshangul-Gumaz"/><path d="M188,151L187,151L187,151L187,151L187,151L187,151L187,151L186,151L185,151L185,151L185,152L184,152L184,153L184,153L184,153L184,153L184,153L185,154L185,154L185,155L185,155L185,155L186,155L186,155L186,155L186,156L187,156L187,156L187,156L188,157L188,156L188,156L189,154L189,154L190,154L190,154L190,154L190,153L190,153L190,153L190,152L189,151L189,151L188,151L188,151L188,151Z " data-fips="ET44" data-fips-="ET01" data-iso3="ETH" data-name="Addis Ababa"/><path d="M253,107L242,108L238,114L235,129L237,131L232,135L230,141L230,143L230,142L235,143L232,144L236,145L243,141L248,142L252,142L253,142L253,141L256,137L260,138L262,135L265,135L266,136L267,136L267,139L270,141L273,149L276,154L279,166L277,166L273,171L272,168L271,165L265,161L263,161L257,172L257,178L258,180L256,185L257,188L264,191L261,202L258,207L253,209L251,212L247,208L240,205L239,205L234,210L234,218L235,227L230,230L227,233L219,235L215,234L213,237L209,249L209,251L200,273L194,276L196,277L202,278L204,279L209,273L211,269L223,263L223,263L232,260L240,266L249,266L253,265L263,261L266,260L278,258L280,257L281,253L285,250L294,246L304,243L325,244L326,244L348,219L358,207L392,172L370,173L369,172L304,152L295,144L290,142L290,141L278,125L276,120L273,115L278,107L275,107L274,105L269,106L263,107L253,108L253,107Z " data-fips="ET48" data-fips-="ET38|ET52" data-iso3="ETH" data-name="Somali"/><path d="M265,135L262,135L260,138L256,137L253,141L253,142L253,141L260,142L262,140L266,136L266,136L265,135Z " data-fips="ET48" data-fips-="" data-iso3="ETH" data-name="Dire Dawa"/><path d="M264,144L263,144L263,144L262,144L262,144L262,144L261,144L260,145L260,146L260,147L260,147L260,147L261,147L261,147L262,147L262,147L262,148L262,148L263,147L263,147L263,147L264,148L264,148L265,148L265,147L265,147L264,146L264,146L264,146L265,145L265,144L265,144L264,144L264,144Z " data-fips="ET50" data-fips-="" data-iso3="ETH" data-name="Harari People"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.2663152129" lon0="38.3111557051"/><bbox h="163.5" w="205.07" x="923.96" y="944.42"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M8,275L7,274L6,272L2,271L0,267L0,299L6,299L6,294L8,290L6,285L7,283L9,277L9,276L8,275Z " data-iso="COD"/><path d="M284,94L270,96L272,94L276,90L281,88L286,85L289,80L288,76L283,69L282,68L276,71L275,75L273,76L268,73L267,73L266,74L264,77L257,88L254,91L254,108L255,108L271,105L277,107L279,107L281,102L284,99L286,95L284,94Z " data-iso="DJI"/><path d="M212,0L213,3L222,4L216,0L212,0Z M137,34L138,34L148,34L152,30L160,37L167,21L170,23L175,25L178,29L181,30L187,29L193,26L196,29L203,28L208,29L230,36L238,46L244,51L252,58L257,65L263,70L264,72L266,74L267,73L268,73L273,76L275,75L276,71L282,68L282,66L280,64L279,66L275,65L274,61L269,57L266,57L263,49L250,40L246,34L239,26L231,23L227,20L218,17L215,12L214,10L210,7L209,10L209,14L203,5L201,0L142,0L138,12L135,14L137,28L137,34Z " data-iso="ERI"/><path d="M137,34L136,40L134,48L130,56L129,60L128,68L118,71L117,73L109,86L102,101L102,108L92,111L87,118L88,124L85,131L82,141L82,142L82,143L82,162L79,165L64,165L58,175L60,178L73,182L78,186L86,197L91,200L96,205L101,219L102,223L106,230L108,231L108,232L108,232L119,235L120,237L119,247L124,254L126,255L150,260L171,273L183,275L197,277L203,278L210,271L211,269L215,267L232,259L240,266L242,267L254,266L257,266L258,264L260,262L278,258L285,250L295,245L305,243L325,244L330,239L348,219L387,178L392,172L385,172L370,173L369,172L304,152L294,144L292,143L286,135L285,132L277,125L273,115L278,108L279,107L277,107L271,105L255,108L254,108L254,91L257,88L264,77L266,74L264,72L263,70L257,65L252,58L244,51L238,46L230,36L208,29L203,28L196,29L193,26L187,29L181,30L178,29L175,25L170,23L167,21L160,37L152,30L148,34L138,34L137,34Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-iso="ETH"/><path d="M257,266L254,266L242,267L240,266L232,259L215,267L211,269L210,271L203,278L197,277L183,275L171,273L150,260L126,255L124,254L119,247L120,237L119,235L108,232L108,232L104,236L88,251L83,256L79,260L82,267L89,274L88,278L89,284L91,285L92,289L97,294L99,299L237,299L237,291L245,283L254,270L257,266Z " data-iso="KEN"/><path d="M82,142L82,142L82,141L85,131L88,124L87,118L92,111L102,108L102,101L109,86L117,73L118,71L128,68L129,60L130,56L134,48L136,40L137,34L137,28L135,14L138,12L142,0L0,0L0,127L9,134L19,133L29,124L35,114L46,105L45,101L45,90L39,83L54,84L64,79L61,93L63,111L69,117L78,125L80,133L78,136L82,142L82,142Z " data-iso="SDN"/><path d="M8,275L9,274L15,269L24,271L30,269L33,273L38,275L42,271L53,269L57,267L60,270L68,270L73,265L79,260L83,256L88,251L104,236L108,232L108,231L106,230L102,223L101,219L96,205L91,200L86,197L78,186L73,182L60,178L58,175L64,165L79,165L82,162L82,143L82,142L82,142L82,142L78,136L80,133L78,125L69,117L63,111L61,93L64,79L54,84L39,83L45,90L45,101L46,105L35,114L29,124L19,133L9,134L0,127L0,267L2,271L6,272L7,274L8,275Z " data-iso="SSD"/><path d="M411,98L406,96L391,101L384,102L374,102L368,107L359,111L357,111L343,109L332,114L324,119L311,119L299,111L294,106L290,99L286,95L284,99L281,102L279,107L278,108L273,115L277,125L285,132L286,135L292,143L294,144L304,152L369,172L370,173L385,172L392,172L396,167L413,138L412,127L411,98L411,98Z " data-iso="SOL"/><path d="M411,98L412,127L413,138L396,167L392,172L387,178L348,219L330,239L325,244L305,243L295,245L285,250L278,258L260,262L258,264L257,266L254,270L245,283L237,291L237,299L350,299L351,298L370,279L384,263L394,251L400,241L409,228L417,213L418,207L421,199L424,194L432,178L434,171L440,166L443,159L446,151L450,146L450,80L445,86L437,90L427,93L421,95L414,97L411,98Z " data-iso="SOM"/><path d="M79,260L73,265L68,270L60,270L57,267L53,269L42,271L38,275L33,273L30,269L24,271L15,269L9,274L8,275L9,276L9,277L7,283L6,285L8,290L6,294L6,299L99,299L97,294L92,289L91,285L89,284L88,278L89,274L82,267L79,260Z " data-iso="UGA"/><path d="M273,0L272,2L274,8L271,11L276,14L279,27L281,34L281,39L284,42L285,56L290,65L290,68L294,67L302,70L315,65L318,66L325,65L327,61L332,59L338,53L362,49L366,47L376,44L381,40L388,35L395,36L403,35L405,33L410,27L411,25L422,19L429,16L435,15L442,11L450,8L450,0L273,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,47L134,49L131,54L128,69L126,69L120,70L117,72L109,86L109,86L112,90L115,89L119,86L124,85L131,91L133,91L134,98L137,100L136,106L133,110L132,111L134,113L133,118L134,120L145,123L148,123L149,124L154,129L159,130L163,134L175,128L179,127L181,122L186,122L189,123L188,128L184,129L187,132L188,135L197,139L202,143L202,145L198,147L200,151L198,154L199,157L202,157L203,158L208,156L209,150L210,150L210,149L212,146L211,142L212,139L211,136L214,136L216,131L214,129L217,128L218,119L217,113L217,109L218,107L218,103L215,100L215,97L212,91L209,79L209,78L208,78L204,79L204,78L200,78L197,77L196,72L198,66L194,62L192,62L186,54L185,51L180,49L178,51L170,52L167,50L164,50L163,52L158,54L146,54L137,49L136,45L135,47Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-fips="ET46" data-fips-="ET19" data-iso3="ETH" data-name="Amhara"/><path d="M136,45L137,49L146,54L158,54L163,52L164,50L167,50L170,52L178,51L180,49L185,51L186,54L192,62L194,62L198,66L196,72L197,77L200,78L204,78L204,79L208,78L209,78L209,77L211,68L208,65L209,58L208,56L208,52L210,49L209,46L208,37L207,36L208,33L207,32L212,32L213,30L213,29L211,30L210,29L203,27L199,29L196,29L193,25L189,29L181,31L177,29L174,24L170,24L167,20L160,37L154,30L152,30L149,33L148,34L142,32L142,33L136,44L136,45Z " data-fips="ET06" data-fips-="ET37|ET54" data-iso3="ETH" data-name="Tigray"/><path d="M213,30L212,32L207,32L208,33L207,36L208,37L209,46L210,49L208,52L208,56L209,58L208,65L211,68L209,77L209,78L209,79L212,91L215,97L215,100L218,103L218,107L217,109L217,113L218,119L217,128L214,129L216,131L214,136L211,136L212,139L211,142L212,146L210,149L210,150L211,149L212,149L215,156L216,155L219,153L223,146L225,144L229,143L230,143L230,141L232,135L237,131L235,129L238,114L242,108L253,107L253,107L253,101L253,96L257,88L266,74L262,68L255,63L254,59L251,56L247,53L236,43L232,37L223,34L220,31L214,30L213,30Z " data-fips="ET26" data-fips-="ET21|ET45" data-iso3="ETH" data-name="Afar"/><path d="M108,185L109,186L110,188L110,195L106,195L104,194L98,195L95,197L93,197L90,196L84,195L84,195L87,198L90,199L92,201L92,203L96,205L97,210L101,220L102,223L105,229L108,232L108,233L120,236L120,240L119,241L119,246L125,255L139,256L139,256L141,255L145,248L144,244L146,240L147,238L157,239L162,236L167,238L168,231L168,229L172,227L169,222L165,220L165,218L166,214L167,207L170,207L174,210L175,210L176,213L174,223L177,223L178,222L177,221L179,215L179,212L183,211L187,211L189,213L191,216L193,217L195,217L195,212L192,207L191,206L184,203L183,196L177,194L173,197L176,189L179,186L180,181L183,175L182,171L185,173L185,170L184,166L181,165L179,168L175,166L163,168L161,167L160,166L158,168L158,169L161,170L161,174L156,175L156,182L157,185L155,189L150,193L142,192L138,189L128,185L126,185L125,181L122,179L123,176L122,174L120,173L120,177L119,178L115,179L114,178L112,178L108,183L108,185Z " data-fips="ET54" data-fips-="ET39|ET53" data-iso3="ETH" data-name="Southern Nations, Nationalities and Peoples"/><path d="M83,162L75,166L72,164L66,165L64,164L62,168L63,169L62,171L60,172L58,176L59,178L64,180L70,181L77,185L84,194L84,195L90,196L93,197L95,197L98,195L104,194L106,195L110,195L110,188L109,186L108,185L108,186L105,187L105,185L103,184L100,179L101,174L100,174L105,171L96,169L85,161L83,161L83,162Z " data-fips="ET49" data-fips-="ET40" data-iso3="ETH" data-name="Gambela Peoples"/><path d="M148,123L148,124L147,125L142,123L139,125L137,125L138,122L130,128L129,129L128,137L128,138L130,145L127,149L123,145L121,145L114,137L109,132L101,131L99,135L91,138L90,142L89,148L82,148L83,161L83,161L85,161L96,169L105,171L100,174L101,174L100,179L103,184L105,185L105,187L108,186L108,185L108,183L112,178L114,178L115,179L119,178L120,177L120,173L122,174L123,176L122,179L125,181L126,185L128,185L138,189L142,192L150,193L155,189L157,185L156,182L156,175L161,174L161,170L158,169L158,168L160,166L161,167L163,168L175,166L179,168L181,165L184,166L185,170L185,173L182,171L183,175L180,181L179,186L176,189L173,197L177,194L183,196L184,203L191,206L192,207L195,212L195,217L193,217L191,216L189,213L187,211L183,211L179,212L179,215L177,221L178,222L177,223L174,223L176,213L175,210L174,210L170,207L167,207L166,214L165,218L165,220L169,222L172,227L168,229L168,231L167,238L162,236L157,239L147,238L146,240L144,244L145,248L141,255L139,256L139,256L143,256L149,259L169,272L174,274L178,275L184,274L190,276L194,276L194,276L200,273L209,251L209,249L213,237L215,234L219,235L227,233L230,230L235,227L234,218L234,210L239,205L240,205L247,208L251,212L253,209L258,207L261,202L264,191L257,188L256,185L258,180L257,178L257,172L263,161L265,161L271,165L272,168L273,171L277,166L279,166L276,154L273,149L270,141L267,139L267,136L266,136L266,136L262,140L260,142L253,141L253,142L252,142L248,142L243,141L236,145L232,144L235,143L230,142L230,143L229,143L225,144L223,146L219,153L216,155L215,156L212,149L211,149L210,150L209,150L208,156L203,158L202,157L199,157L198,154L200,151L198,147L202,145L202,143L197,139L188,135L187,132L184,129L188,128L189,123L186,122L181,122L179,127L175,128L163,134L159,130L154,129L149,124L148,123Z M135,141L135,141L135,141L136,142L136,142L136,142L136,142L135,143L135,145L135,144L134,145L134,145L134,145L134,145L133,143L134,141L135,141Z M188,151L188,151L189,151L189,151L190,152L190,153L190,153L190,153L190,154L190,154L190,154L189,154L189,154L188,156L188,156L188,157L187,156L187,156L187,156L186,156L186,155L186,155L185,155L185,155L185,155L185,154L185,154L184,153L184,153L184,153L184,153L184,153L184,152L185,152L185,151L185,151L186,151L187,151L187,151L187,151L187,151L187,151L188,151L188,151Z M130,155L130,156L130,156L130,156L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L129,155L128,156L128,156L127,156L127,156L127,156L126,156L126,156L126,156L126,156L125,156L125,156L125,155L125,155L125,154L125,154L125,154L126,153L126,152L128,152L128,152L128,152L129,152L129,153L129,153L129,153L129,153L130,153L130,153L130,153L130,154L130,154L130,155Z M131,153L131,153L132,153L132,153L132,154L132,154L132,154L132,154L132,154L131,154L131,154L131,154L130,154L130,154L130,153L130,153L131,153Z M265,144L265,144L265,145L264,146L264,146L264,146L265,147L265,147L265,148L264,148L264,148L263,147L263,147L263,147L262,148L262,148L262,147L262,147L261,147L261,147L260,147L260,147L260,147L260,146L260,145L261,144L262,144L262,144L262,144L263,144L263,144L264,144L264,144L265,144Z " data-fips="ET44" data-fips-="ET27" data-iso3="ETH" data-name="Addis Ababa"/><path d="M132,154L132,154L132,154L132,153L132,153L131,153L131,153L130,153L130,153L130,154L130,154L131,154L131,154L131,154L132,154L132,154L132,154Z M125,154L125,154L125,154L125,155L125,155L125,155L125,156L125,156L126,156L126,156L126,156L126,156L127,156L127,156L127,156L128,156L128,156L129,155L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L130,156L130,156L130,156L130,155L130,154L130,154L130,153L130,153L130,153L129,153L129,153L129,153L129,153L129,152L129,152L128,152L128,152L128,152L126,152L126,153L125,154Z M136,142L136,142L136,142L135,141L135,141L135,141L134,141L133,143L134,145L134,145L134,145L134,145L134,145L135,144L135,145L135,143L136,142L136,142Z M109,86L106,88L104,91L105,95L102,101L103,104L101,108L98,114L93,110L90,112L87,117L88,124L88,127L86,129L83,137L82,142L82,148L89,148L90,142L91,138L99,135L101,131L109,132L114,137L121,145L123,145L127,149L130,145L128,138L128,137L129,129L130,128L138,122L137,125L139,125L142,123L147,125L148,124L148,123L145,123L134,120L133,118L134,113L132,111L133,110L136,106L137,100L134,98L133,91L131,91L124,85L119,86L115,89L112,90L109,86L109,86Z " data-fips="ET47" data-fips-="ET43" data-iso3="ETH" data-name="Benshangul-Gumaz"/><path d="M188,151L187,151L187,151L187,151L187,151L187,151L187,151L186,151L185,151L185,151L185,152L184,152L184,153L184,153L184,153L184,153L184,153L185,154L185,154L185,155L185,155L185,155L186,155L186,155L186,155L186,156L187,156L187,156L187,156L188,157L188,156L188,156L189,154L189,154L190,154L190,154L190,154L190,153L190,153L190,153L190,152L189,151L189,151L188,151L188,151L188,151Z " data-fips="ET44" data-fips-="ET01" data-iso3="ETH" data-name="Addis Ababa"/><path d="M253,107L242,108L238,114L235,129L237,131L232,135L230,141L230,143L230,142L235,143L232,144L236,145L243,141L248,142L252,142L253,142L253,141L256,137L260,138L262,135L265,135L266,136L267,136L267,139L270,141L273,149L276,154L279,166L277,166L273,171L272,168L271,165L265,161L263,161L257,172L257,178L258,180L256,185L257,188L264,191L261,202L258,207L253,209L251,212L247,208L240,205L239,205L234,210L234,218L235,227L230,230L227,233L219,235L215,234L213,237L209,249L209,251L200,273L194,276L196,277L202,278L204,279L209,273L211,269L223,263L223,263L232,260L240,266L249,266L253,265L263,261L266,260L278,258L280,257L281,253L285,250L294,246L304,243L325,244L326,244L348,219L358,207L392,172L370,173L369,172L304,152L295,144L290,142L290,141L278,125L276,120L273,115L278,107L275,107L274,105L269,106L263,107L253,108L253,107Z " data-fips="ET48" data-fips-="ET38|ET52" data-iso3="ETH" data-name="Somali"/><path d="M265,135L262,135L260,138L256,137L253,141L253,142L253,141L260,142L262,140L266,136L266,136L265,135Z " data-fips="ET48" data-fips-="" data-iso3="ETH" data-name="Dire Dawa"/><path d="M264,144L263,144L263,144L262,144L262,144L262,144L261,144L260,145L260,146L260,147L260,147L260,147L261,147L261,147L262,147L262,147L262,148L262,148L263,147L263,147L263,147L264,148L264,148L265,148L265,147L265,147L264,146L264,146L264,146L265,145L265,144L265,144L264,144L264,144Z " data-fips="ET50" data-fips-="" data-iso3="ETH" data-name="Harari People"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/EU.svg b/plugins/UserCountryMap/svg/EU.svg
index 95e46c6694411385eead46606fe2c802688e5877..bed2b60bfc2fefb071dc0e9ccd2da4927d146a0d 100644
--- a/plugins/UserCountryMap/svg/EU.svg
+++ b/plugins/UserCountryMap/svg/EU.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 500 367" height="367px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 500 367" width="500px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="367.363973732" padding="0" w="500"><proj id="laea" lat0="50.5" lon0="14.0"/><bbox h="461.97" w="630.48" x="684.76" y="753.17"/><llbbox lat0="33.0" lat1="68.0" lon0="-17.0" lon1="45.0"/></view></views></metadata><g id="countries"><path d="M293.5,271.0L291.3,270.6L290.7,270.5L288.9,278.0L289.8,278.1L289.9,288.5L290.5,291.6L295.1,297.7L295.2,298.6L298.0,297.5L297.4,296.1L299.8,294.3L301.7,290.4L301.5,287.7L301.5,287.0L301.5,286.8L297.2,280.8L297.7,277.4L297.8,277.3L297.9,276.9L297.2,274.4L295.9,273.2L294.0,271.2L293.7,271.0L293.5,271.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M161.8,265.9L161.9,265.1L161.0,264.7L160.2,264.7L159.9,264.9L159.8,265.3L160.8,266.4L161.6,266.1L161.8,266.1L161.8,265.9Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M471.0,239.3L470.8,239.5L466.1,242.3L461.4,245.2L461.1,245.5L461.4,245.8L468.3,254.0L470.6,252.9L474.6,254.2L475.0,254.5L475.7,254.1L476.6,253.2L480.5,254.4L482.5,252.9L486.7,257.4L487.2,258.0L487.6,257.9L488.5,257.1L489.7,256.6L489.3,255.7L485.2,251.2L480.2,249.5L475.7,243.5L476.6,242.0L472.1,240.8L471.3,239.7L471.0,239.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M268.9,213.2L268.6,212.4L256.2,210.0L254.6,213.0L250.3,213.7L249.0,212.2L248.8,212.1L248.7,212.3L246.7,213.9L243.5,224.7L238.2,222.3L232.2,224.9L230.1,225.1L226.8,223.5L225.1,226.0L220.7,223.3L220.5,223.4L220.7,223.5L221.1,224.0L221.0,224.7L220.4,225.8L220.4,226.0L220.5,226.7L220.6,227.0L220.7,227.8L220.6,227.9L220.9,228.0L224.5,230.1L225.7,228.9L226.4,229.8L226.3,230.1L226.5,230.2L230.4,230.4L237.8,228.4L239.2,232.2L246.6,233.7L248.0,234.0L248.3,234.1L258.2,232.8L261.8,232.1L263.6,230.7L264.0,230.5L265.0,229.4L266.1,225.5L270.2,219.6L270.6,219.1L270.1,218.8L268.6,215.5L268.5,215.0L269.0,213.5L269.1,213.4L268.9,213.2Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M475.0,254.5L475.2,254.7L475.6,254.9L475.8,255.0L482.4,258.8L485.8,258.3L487.2,258.0L486.7,257.4L482.5,252.9L480.5,254.4L476.6,253.2L475.7,254.1L475.0,254.5Z M492.2,223.3L490.1,231.3L485.8,232.2L480.5,229.3L478.9,229.4L478.2,229.6L478.1,230.0L478.1,232.7L482.0,234.3L481.9,236.6L477.5,237.5L473.3,236.8L471.9,237.5L471.0,239.3L471.3,239.7L472.1,240.8L476.6,242.0L475.7,243.5L480.2,249.5L485.2,251.2L489.3,255.7L489.7,256.6L490.2,256.4L497.0,244.7L500.0,246.0L500.0,228.6L494.7,224.4L493.1,223.5L492.2,223.3Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M198.9,189.6L199.7,189.4L200.1,190.0L199.5,189.9L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L182.9,182.7L184.6,182.1L185.4,182.0L189.4,183.8L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.6Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M310.8,252.8L310.6,253.0L310.6,260.5L311.7,261.0L312.2,265.9L310.6,266.5L310.8,271.6L310.2,271.8L311.5,273.1L315.6,277.0L315.4,278.1L315.5,280.6L315.4,280.8L316.2,280.8L325.9,277.6L328.9,278.8L333.4,279.1L338.7,277.0L338.7,273.5L339.6,273.6L339.5,273.4L343.8,269.9L347.5,270.0L351.3,269.1L351.0,268.4L346.7,265.0L348.3,262.3L348.7,257.5L349.8,255.2L352.6,253.6L352.3,251.3L348.5,251.2L347.0,249.8L339.6,249.6L337.2,250.6L331.0,255.7L314.8,255.9L312.7,256.6L311.3,253.2L310.8,252.8Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M282.0,271.7L282.1,271.7L281.8,267.8L284.5,263.9L286.6,261.9L286.8,261.9L287.2,261.4L289.2,256.8L285.8,252.7L284.9,249.0L284.6,249.0L284.2,249.1L282.1,247.1L270.1,245.8L264.9,248.0L262.3,247.0L262.0,251.0L264.7,253.3L265.5,256.3L277.5,269.2L281.3,271.5L282.0,271.7Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M326.3,132.7L322.6,136.8L321.2,136.8L319.1,138.7L319.0,138.8L319.1,139.2L320.1,143.2L315.9,147.6L315.5,152.8L311.6,156.8L304.8,158.3L304.3,158.1L305.4,161.3L307.8,166.7L308.1,170.2L304.8,174.6L307.4,175.8L307.6,180.6L308.1,181.5L308.2,181.4L316.3,176.3L328.9,175.9L329.9,177.1L338.0,176.3L340.5,175.0L342.4,176.7L347.3,175.0L350.1,175.9L349.6,171.1L354.2,167.0L355.3,166.8L355.2,166.6L350.8,156.9L354.6,157.0L357.3,152.7L351.6,150.7L349.8,147.9L347.5,146.6L345.7,143.4L343.6,142.6L342.4,135.0L337.2,133.5L334.5,135.6L333.4,133.3L327.4,133.4L326.5,132.7L326.3,132.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M219.4,222.6L215.4,221.3L212.7,222.0L208.5,222.1L208.0,221.8L207.2,222.2L203.4,224.6L199.5,228.5L196.6,234.9L200.1,232.4L202.6,237.3L202.7,237.7L202.9,237.9L207.8,238.2L211.2,234.3L212.6,233.8L214.9,237.2L219.3,234.0L222.3,234.8L226.0,231.4L226.3,230.1L226.4,229.8L225.7,228.9L224.5,230.1L220.9,228.0L220.6,227.9L220.1,227.9L220.0,227.9L220.0,227.5L220.0,226.8L220.4,225.8L221.0,224.7L221.1,224.0L220.7,223.5L220.5,223.4L219.4,222.6Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M408.6,324.4L411.2,318.8L408.9,321.0L404.5,323.5L400.4,324.0L399.5,326.5L399.0,326.5L404.6,325.4L406.8,326.1L409.3,325.0L408.6,324.4Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M398.5,326.5L396.8,328.3L398.3,331.3L399.9,331.5L409.5,325.1L409.3,325.0L406.8,326.1L404.6,325.4L399.0,326.5L398.5,326.5Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M254.9,191.8L251.7,190.0L251.2,191.7L245.3,194.4L243.4,196.1L241.0,196.2L239.2,198.2L242.5,206.6L248.5,211.7L248.8,212.1L249.0,212.2L250.3,213.7L254.6,213.0L256.2,210.0L268.6,212.4L268.9,213.2L269.1,213.4L269.2,212.6L274.6,209.9L276.1,208.5L280.4,203.9L280.6,203.9L280.6,203.6L278.4,200.2L275.7,199.5L272.2,197.0L268.5,195.7L267.1,198.7L262.8,193.8L257.9,191.4L255.5,191.7L255.0,191.7L254.9,191.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M250.2,160.7L249.0,159.8L250.3,162.4L251.0,162.3L251.2,162.3L251.1,161.8L251.2,161.5L250.2,160.7Z M220.1,152.2L221.4,155.5L219.4,156.5L221.0,157.5L220.8,160.0L223.1,162.0L219.1,161.1L218.3,163.1L211.2,162.4L210.1,165.8L210.4,166.2L209.0,171.4L206.7,173.6L208.4,174.5L206.4,179.3L201.5,180.2L202.7,183.1L200.3,187.8L201.2,188.6L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.6L200.6,197.1L201.6,202.4L201.5,202.9L201.8,202.9L203.7,206.0L208.2,206.5L212.4,209.5L207.7,221.6L208.0,221.8L208.5,222.1L212.7,222.0L215.4,221.3L219.4,222.6L220.5,223.4L220.7,223.3L225.1,226.0L226.8,223.5L230.1,225.1L232.2,224.9L238.2,222.3L243.5,224.7L246.7,213.9L248.7,212.3L248.8,212.1L248.5,211.7L242.5,206.6L239.2,198.2L241.0,196.2L243.4,196.1L245.3,194.4L251.2,191.7L251.7,190.0L254.9,191.8L255.0,191.7L255.0,191.6L256.2,187.8L253.6,182.2L254.5,179.8L251.5,172.9L251.5,163.7L251.4,163.7L244.5,157.0L241.9,156.4L235.1,161.3L233.3,158.0L228.1,155.7L226.6,155.8L226.1,152.5L226.0,152.3L222.9,151.9L221.4,151.3L220.1,151.2L220.1,152.2Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M231.5,144.9L227.0,147.2L231.1,150.4L232.1,149.6L231.5,144.9Z M242.1,143.6L242.4,141.2L236.1,142.5L234.3,147.8L236.9,149.3L238.0,153.3L239.0,153.0L240.3,145.9L242.1,143.6Z M220.1,151.2L221.4,151.3L222.9,151.9L226.0,152.3L225.9,151.3L225.6,145.8L228.0,143.5L227.5,142.5L231.2,139.2L233.0,136.1L230.0,135.0L230.3,131.3L231.8,127.0L228.8,125.6L225.8,129.3L221.5,129.7L219.3,133.0L222.0,133.5L224.8,130.9L221.6,135.2L218.6,134.4L217.7,144.2L218.8,145.1L220.1,150.3L220.1,151.2Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M203.9,325.8L196.8,323.5L197.0,324.7L191.8,323.9L191.2,323.0L187.7,324.8L185.0,325.2L177.5,323.4L169.9,322.4L167.8,323.1L160.3,324.0L158.4,323.6L147.5,323.5L140.5,326.0L139.5,327.4L135.7,327.1L131.5,328.3L121.9,332.1L120.4,331.6L122.5,339.3L121.6,349.5L123.4,361.8L101.8,361.3L100.6,365.4L202.3,365.4L196.8,355.1L197.5,352.4L202.4,348.5L204.2,343.6L204.1,336.6L205.3,331.2L204.3,329.9L207.4,325.8L203.9,325.8Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M419.4,360.9L418.9,360.2L418.7,360.0L418.6,360.2L414.8,362.9L412.4,363.5L406.9,365.4L422.1,365.4L421.4,364.2L420.5,362.8L419.4,360.9Z M401.0,365.4L400.1,362.8L391.1,365.4L401.0,365.4Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M168.5,293.9L165.9,292.8L162.5,294.7L168.8,297.9L170.8,294.5L168.5,293.9Z M87.0,254.1L91.4,253.5L92.9,256.6L99.1,257.6L103.1,263.8L97.5,266.8L97.7,268.1L94.7,274.8L95.0,276.9L92.9,278.9L90.5,278.3L91.2,284.0L90.8,287.0L88.3,290.1L88.4,294.7L85.0,298.0L84.8,302.0L86.6,302.2L91.1,306.1L92.2,312.6L94.4,315.6L98.4,315.2L102.0,313.4L104.0,313.9L106.8,312.4L118.9,315.3L125.8,314.4L127.4,311.9L131.5,309.5L136.3,309.8L140.2,302.5L142.9,301.5L144.8,299.5L143.5,298.6L144.8,289.1L148.7,285.5L152.1,281.1L156.1,279.0L164.6,276.8L170.0,274.6L172.5,269.1L172.4,268.4L167.7,268.6L166.4,267.9L162.8,266.7L161.8,266.1L161.6,266.1L160.8,266.4L159.8,265.3L159.9,264.9L159.5,263.9L148.1,260.5L146.0,260.3L141.4,256.5L138.7,252.8L138.5,252.8L134.8,252.7L130.0,251.2L124.5,248.6L119.9,248.4L111.4,243.8L104.1,242.4L90.1,240.8L87.6,241.7L88.4,248.2L86.4,254.1L87.0,254.1Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M293.8,113.4L291.3,119.8L293.6,117.2L297.6,114.6L293.8,113.4Z M295.1,111.2L294.8,109.6L290.6,110.6L293.3,112.8L295.1,111.2Z M303.5,119.5L307.2,117.0L311.0,118.4L319.5,120.3L319.6,120.2L319.6,120.0L320.1,117.4L317.7,108.6L320.0,101.8L319.1,100.8L319.1,101.0L315.9,101.8L306.7,101.6L306.5,102.7L299.9,105.2L297.4,107.3L298.6,113.2L303.1,114.5L303.5,119.1L303.5,119.5Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M273.4,14.0L274.4,14.4L283.7,21.5L284.2,21.5L287.0,31.5L288.6,33.8L288.1,38.1L290.8,43.3L291.1,43.2L295.6,45.1L296.3,49.0L294.0,52.7L293.3,55.6L286.6,68.3L283.3,69.7L282.2,73.8L285.3,88.3L284.9,90.5L287.5,94.8L291.4,96.6L292.2,99.8L293.2,97.9L294.3,101.6L296.2,99.7L300.4,98.5L308.0,94.4L307.4,93.2L315.8,91.1L316.0,91.0L321.2,82.4L326.3,70.9L325.2,62.3L319.2,58.9L317.8,52.4L314.2,46.5L313.1,37.0L308.0,29.9L307.7,28.8L309.5,22.6L308.5,20.8L303.4,17.6L302.3,9.7L302.5,9.5L302.1,9.2L302.7,5.0L301.6,3.3L296.5,0.5L291.8,4.2L291.0,6.2L291.2,12.7L289.3,16.3L285.6,14.8L282.5,16.4L276.6,11.4L273.5,13.6L273.4,14.0Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M217.6,269.3L211.9,271.4L210.7,274.6L212.6,281.6L215.2,282.3L217.8,275.6L217.6,269.3Z M179.5,184.2L176.1,184.4L173.0,191.2L163.4,194.9L160.5,198.4L154.2,194.1L150.7,192.5L151.2,203.1L147.6,202.9L144.9,201.7L143.1,202.4L140.4,198.7L130.5,199.3L132.0,203.4L130.0,203.7L131.9,207.0L132.9,206.9L139.4,210.9L140.9,211.2L141.8,214.4L145.2,215.1L143.6,218.7L147.1,225.1L148.6,225.8L147.3,231.8L147.6,233.4L144.9,241.5L146.0,241.5L141.2,251.7L139.9,252.7L138.7,252.8L141.4,256.5L146.0,260.3L148.1,260.5L159.5,263.9L159.9,264.9L160.2,264.7L161.0,264.7L161.9,265.1L161.8,265.9L161.8,266.1L162.8,266.7L166.4,267.9L167.7,268.6L172.4,268.4L172.3,268.1L171.7,264.3L173.7,261.1L179.8,258.0L184.2,260.7L186.7,261.1L193.8,264.8L197.1,263.9L202.4,259.5L203.3,259.2L203.6,258.8L203.7,259.0L203.7,259.1L204.1,258.9L205.2,255.1L203.6,255.4L200.9,253.6L199.3,245.7L202.9,242.6L201.1,238.6L202.1,238.2L202.7,237.7L202.6,237.3L200.1,232.4L196.6,234.9L199.5,228.5L203.4,224.6L207.2,222.2L208.0,221.8L207.7,221.6L212.4,209.5L208.2,206.5L203.7,206.0L201.8,202.9L201.5,202.9L201.1,202.7L200.1,202.5L199.8,202.7L198.3,202.1L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L179.5,184.2Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M420.0,359.9L419.9,359.3L420.5,356.9L419.9,358.0L418.7,360.0L418.9,360.2L419.4,360.9L420.0,359.9Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M133.4,133.3L128.5,135.8L127.2,137.3L127.4,140.4L133.7,142.7L135.9,144.3L136.4,144.7L140.3,142.6L141.1,140.3L139.5,133.8L137.7,133.0L133.5,133.7L133.4,133.3Z M145.8,112.2L142.5,112.2L145.2,116.7L147.2,115.8L145.6,114.4L145.8,112.2Z M148.0,104.1L142.9,104.9L145.9,107.0L148.0,104.1Z M163.5,106.7L164.1,105.7L151.0,108.0L151.7,109.8L148.2,111.3L148.0,115.6L144.3,121.0L148.4,120.7L146.9,122.6L145.3,127.9L148.4,128.9L144.6,137.6L144.2,139.7L147.0,140.5L153.3,140.0L151.5,143.6L152.2,147.2L154.6,148.3L152.0,154.3L153.3,156.7L145.4,155.7L141.1,158.8L144.7,158.6L142.5,164.5L135.5,166.7L136.9,169.6L141.7,170.5L141.4,171.4L145.8,174.3L139.0,176.3L132.4,181.2L129.4,182.1L131.7,184.4L140.8,184.7L142.7,182.0L146.6,181.2L151.6,183.5L155.9,181.5L159.4,183.5L168.5,184.1L173.1,182.2L173.7,180.3L169.4,179.3L168.6,178.2L171.7,175.5L173.7,175.5L176.2,172.8L177.7,168.9L177.5,167.1L173.7,164.5L171.5,163.9L169.6,165.2L168.4,164.0L170.7,161.9L168.0,156.0L169.8,155.9L169.3,151.3L167.5,147.8L165.1,145.8L164.4,139.6L162.4,132.7L160.3,131.0L157.7,131.1L157.4,129.8L160.7,128.2L160.4,126.4L164.0,123.4L167.9,118.0L167.7,116.8L158.9,114.2L156.1,114.3L163.4,107.5L163.5,106.7Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M478.0,229.5L472.6,229.2L471.4,226.4L464.8,226.3L462.4,227.4L459.5,230.6L457.9,230.7L450.5,228.3L441.6,230.9L434.5,230.3L430.4,233.0L432.1,233.5L439.9,235.7L442.1,235.8L447.4,244.6L446.7,246.9L449.1,246.8L453.4,245.1L454.4,243.1L461.1,245.3L461.1,245.5L461.4,245.2L466.1,242.3L470.8,239.5L471.0,239.3L471.9,237.5L473.3,236.8L477.5,237.5L481.9,236.6L482.0,234.3L478.1,232.7L478.1,230.0L478.2,229.6L478.0,229.5Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M328.7,335.9L326.4,336.2L327.8,339.0L336.0,339.3L336.5,340.6L347.7,338.3L344.0,335.8L341.8,336.4L331.4,336.3L328.7,335.9Z M321.6,303.3L318.8,304.5L321.5,305.5L324.0,308.1L327.0,308.2L328.6,310.7L329.7,310.1L322.2,304.3L321.6,303.3Z M343.7,296.5L340.0,297.5L345.2,299.6L343.7,296.5Z M339.6,273.6L338.7,273.5L338.7,277.0L333.4,279.1L328.9,278.8L325.9,277.6L316.2,280.8L315.4,280.8L315.0,280.8L307.4,285.4L302.5,286.8L301.5,287.0L301.5,287.7L301.7,290.4L299.8,294.3L297.4,296.1L298.0,297.5L295.2,298.6L296.0,299.2L301.6,304.9L305.2,311.1L311.1,309.8L320.7,311.5L318.9,313.4L311.1,310.7L305.3,315.2L309.8,320.0L309.3,323.0L312.1,326.1L313.3,323.1L319.5,325.8L320.4,322.5L319.0,319.9L322.0,318.7L322.9,316.6L321.4,316.4L319.9,314.1L321.0,313.2L325.2,313.4L327.6,315.1L327.2,310.6L325.5,309.0L315.5,304.7L318.0,303.9L317.0,300.9L320.7,301.3L314.3,293.6L314.1,289.1L319.7,292.5L322.4,289.8L326.7,290.1L322.2,285.7L325.7,284.9L326.6,283.5L331.8,282.0L338.7,283.1L339.0,283.5L340.9,280.5L340.4,278.2L340.3,273.7L339.6,273.6Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M282.6,272.9L282.3,272.5L282.0,272.1L282.0,271.7L281.3,271.5L277.5,269.2L276.7,269.2L273.0,267.6L281.2,272.1L282.6,272.9Z M266.9,234.0L266.3,233.8L261.1,237.1L261.1,240.6L258.7,241.7L258.5,244.5L247.1,243.8L246.7,244.2L248.2,249.0L249.8,250.5L251.8,246.1L253.8,246.0L256.3,249.1L256.8,252.7L258.9,254.8L258.3,256.9L267.0,262.8L270.6,264.2L275.3,268.1L265.5,256.3L264.7,253.3L262.0,251.0L262.3,247.0L264.9,248.0L270.1,245.8L282.1,247.1L284.2,249.1L284.6,249.0L284.5,248.7L286.2,244.9L284.3,243.8L283.3,238.9L283.3,238.7L283.3,238.7L280.2,240.5L275.9,240.5L267.3,234.1L266.9,234.0Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M302.5,212.9L300.0,213.7L292.9,212.3L291.1,215.0L288.4,216.8L282.0,218.1L281.0,220.7L274.7,221.2L270.7,219.1L270.6,219.1L270.2,219.6L266.1,225.5L265.0,229.4L264.0,230.5L265.2,230.5L265.6,231.8L266.8,233.8L266.9,234.0L267.3,234.1L275.9,240.5L280.2,240.5L283.3,238.7L283.3,238.7L283.5,238.7L284.9,238.1L286.9,236.9L292.0,236.2L292.2,236.3L292.5,236.1L297.5,234.5L301.6,225.3L302.6,221.6L307.8,217.0L307.9,216.7L307.7,216.6L305.3,214.5L304.1,214.1L303.2,212.7L302.6,212.8L302.5,212.9Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M133.7,132.9L127.9,131.0L125.4,134.0L126.2,137.1L123.5,139.0L119.8,137.1L115.1,137.0L117.0,140.6L117.1,148.4L112.3,151.7L112.5,152.9L107.0,155.3L106.2,158.5L110.6,159.2L108.1,162.4L111.2,163.3L117.3,162.8L117.4,161.3L121.9,161.8L123.1,160.9L130.3,161.5L129.8,160.4L134.2,154.0L134.8,146.1L136.1,144.7L135.9,144.3L133.7,142.7L127.4,140.4L127.2,137.3L128.5,135.8L133.4,133.3L133.7,132.9Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M489.7,256.6L488.5,257.1L487.6,257.9L487.2,258.0L485.8,258.3L482.4,258.8L475.8,255.0L475.6,254.9L475.3,255.0L473.6,254.5L473.1,258.6L471.1,259.5L476.2,267.7L477.6,268.2L477.5,272.9L478.3,272.7L483.8,277.9L483.9,278.1L483.9,278.1L492.4,286.5L495.2,287.1L498.5,285.8L500.0,290.9L500.0,248.9L500.0,246.8L500.0,246.0L497.0,244.7L490.2,256.4L489.7,256.6Z M500.0,293.1L498.9,298.9L497.8,299.3L499.4,302.5L500.0,293.1Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M483.9,278.1L483.5,278.0L476.9,280.1L468.6,282.0L467.3,285.0L466.7,285.4L466.7,285.6L464.1,291.8L461.6,293.6L463.8,301.9L463.8,305.5L465.1,310.1L462.6,315.9L452.3,327.9L450.4,329.9L451.6,331.8L454.9,337.4L457.4,339.1L456.6,340.6L458.4,340.4L482.6,342.2L484.7,343.0L500.0,348.5L499.4,302.5L497.8,299.3L498.9,298.9L500.0,293.1L500.0,290.9L498.5,285.8L495.2,287.1L492.4,286.5L483.9,278.1L483.9,278.1Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M136.8,17.8L134.6,14.1L133.3,16.6L125.2,12.8L122.0,13.2L121.2,14.7L119.1,11.1L116.2,13.7L112.6,15.7L113.1,11.2L115.1,10.6L111.4,3.1L107.9,4.1L104.5,7.3L105.1,9.4L108.0,9.9L111.0,13.2L108.7,16.4L104.0,14.6L102.5,15.3L105.7,20.8L102.4,24.3L99.6,25.1L104.2,27.4L107.3,32.6L112.5,37.0L115.8,37.2L123.2,36.6L132.4,35.4L137.8,31.5L138.9,31.5L140.7,27.5L138.9,20.7L136.8,17.8Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M428.6,355.7L428.2,355.8L424.5,358.1L424.6,353.2L423.1,350.4L423.3,347.3L426.8,347.0L427.4,346.9L427.0,344.7L427.2,344.0L428.1,343.3L428.5,343.1L428.5,342.7L428.3,339.6L428.5,339.1L427.5,337.0L427.5,336.4L427.3,336.6L425.3,340.2L424.7,340.8L422.3,341.4L422.3,342.5L421.8,350.4L421.4,353.5L420.5,356.8L420.5,356.9L419.9,359.3L420.0,359.9L419.4,360.9L420.5,362.8L421.4,364.2L422.1,365.4L428.4,365.4L429.2,359.0L428.8,358.3L428.7,357.2L428.6,355.7Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M262.2,314.7L259.9,314.7L252.2,316.8L247.5,317.0L240.2,315.1L238.0,319.1L238.5,320.1L243.5,322.0L248.4,325.4L251.1,325.7L254.0,328.6L257.9,329.6L260.2,326.5L258.6,323.0L259.6,319.0L262.2,314.7Z M217.7,288.1L215.3,284.8L209.8,287.9L207.4,287.1L206.9,288.4L208.6,294.8L207.6,303.7L209.2,306.6L212.1,305.6L212.5,303.8L216.8,302.9L217.4,294.0L218.8,291.9L217.7,288.1Z M226.3,230.1L226.0,231.4L222.3,234.8L219.3,234.0L214.9,237.2L212.6,233.8L211.2,234.3L207.8,238.2L202.9,237.9L202.7,237.7L202.1,238.2L201.1,238.6L202.9,242.6L199.3,245.7L200.9,253.6L203.6,255.4L205.2,255.1L204.1,258.9L205.8,258.7L213.5,253.3L217.1,254.5L223.5,259.4L225.1,268.1L231.9,274.3L240.0,283.2L243.3,285.4L245.3,285.1L249.0,286.6L250.6,289.8L252.3,289.7L256.2,291.4L257.1,295.2L262.7,297.5L266.9,307.6L266.8,309.4L263.4,317.4L265.9,317.3L269.6,309.7L272.5,307.4L273.6,303.1L269.0,298.6L270.0,295.9L272.6,292.1L275.4,293.7L278.9,294.1L282.7,298.4L283.4,294.4L279.4,290.4L268.8,285.3L264.0,281.6L265.8,278.9L258.5,278.7L253.9,275.7L251.3,273.2L247.8,264.6L245.0,261.7L240.8,258.6L238.2,254.3L237.8,251.4L238.9,248.4L238.2,244.4L243.4,242.6L244.6,241.3L248.5,242.8L248.1,243.1L247.3,239.3L245.9,236.0L247.8,234.6L248.0,234.0L246.6,233.7L239.2,232.2L237.8,228.4L230.4,230.4L226.5,230.2L226.3,230.1Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M456.6,340.6L457.4,339.1L454.9,337.4L451.6,331.8L450.4,329.9L448.8,331.9L437.7,344.7L434.8,345.1L429.4,343.1L428.5,343.1L428.1,343.3L427.2,344.0L427.0,344.7L427.4,346.9L427.9,348.3L428.1,350.8L428.8,352.8L428.5,354.9L428.6,355.7L428.7,357.2L428.8,358.3L429.2,359.0L428.4,365.4L447.5,365.4L449.1,361.3L451.3,358.9L440.7,352.1L455.7,342.1L456.6,340.6Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M500.0,179.1L494.7,182.6L494.2,187.2L495.0,188.7L499.2,189.5L494.7,190.9L491.5,193.8L492.3,195.3L496.4,194.9L500.0,198.2L500.0,179.1Z M477.2,180.6L480.7,175.9L482.0,172.4L486.0,167.7L492.9,166.1L495.9,163.6L500.0,168.3L500.0,114.2L493.6,120.8L492.4,123.2L484.7,123.4L487.1,126.6L481.3,124.0L471.5,125.4L469.1,124.6L464.0,128.3L461.7,128.7L455.8,145.1L458.5,151.3L457.8,152.2L450.6,149.3L450.2,149.7L449.8,157.7L450.2,159.6L452.9,163.4L452.8,168.6L453.8,169.9L459.5,173.9L465.4,171.9L471.2,175.7L474.2,178.3L471.8,179.2L472.7,180.8L477.5,180.9L477.2,180.6Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M304.5,272.7L300.3,265.1L297.2,264.4L296.3,267.8L295.5,268.2L294.6,268.5L293.4,269.0L293.3,269.3L293.7,270.9L293.7,271.0L294.0,271.2L295.9,273.2L297.2,274.4L297.9,276.9L297.8,277.3L297.9,277.4L299.2,275.2L304.7,273.0L304.7,273.0L304.5,272.7Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M427.8,336.0L427.6,334.0L430.4,331.3L431.3,327.3L427.9,323.7L425.6,324.8L425.8,325.6L423.9,329.2L424.1,331.3L422.5,340.5L422.3,341.4L424.7,340.8L425.3,340.2L427.3,336.6L427.5,336.4L427.8,336.0Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M229.4,363.3L229.4,363.5L229.0,365.4L229.0,365.4L233.8,365.4L231.9,364.2L230.6,363.9L229.4,363.3Z M325.7,365.4L325.5,364.7L317.7,362.6L313.2,362.9L311.5,364.4L307.9,365.4L325.7,365.4Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M220.7,227.8L220.6,227.0L220.5,226.7L220.4,226.0L220.4,225.8L220.0,226.8L220.0,227.5L220.0,227.9L220.1,227.9L220.6,227.9L220.7,227.8Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M288.3,146.7L288.6,146.7L289.0,146.0L289.2,144.6L288.8,145.5L288.3,146.7Z M288.5,139.5L288.7,141.5L289.9,146.0L290.2,146.7L290.2,146.7L299.5,149.9L299.1,152.0L299.5,154.2L299.7,154.6L300.0,154.2L303.9,156.2L304.3,157.9L304.3,158.1L304.8,158.3L311.6,156.8L315.5,152.8L315.9,147.6L320.1,143.2L319.1,139.2L319.0,138.8L318.7,138.8L313.2,135.4L299.6,134.8L293.6,135.2L288.4,139.0L288.5,139.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L198.3,202.1L199.8,202.7L200.1,202.5L201.1,202.7L201.5,202.9L201.6,202.4L200.6,197.1L200.7,196.6L200.8,196.3L200.7,196.3Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M319.5,120.3L311.0,118.4L307.2,117.0L303.5,119.5L303.5,120.3L302.7,128.1L299.2,127.8L295.2,123.3L290.4,124.1L289.3,126.6L288.0,137.2L288.4,139.0L293.6,135.2L299.6,134.8L313.2,135.4L318.7,138.8L319.0,138.8L319.1,138.7L321.2,136.8L322.6,136.8L326.3,132.7L326.5,132.7L326.5,132.2L322.5,125.1L322.7,123.2L320.2,120.1L319.6,120.2L319.5,120.3Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M118.8,331.1L114.1,328.1L112.9,328.6L101.7,326.3L97.7,321.2L96.1,318.4L92.9,318.3L87.4,327.0L82.8,332.2L75.4,335.1L68.9,335.9L59.6,341.2L57.6,345.6L54.1,348.3L50.0,357.1L48.4,365.4L100.6,365.4L101.8,361.3L123.4,361.8L121.6,349.5L122.5,339.3L120.4,331.6L118.8,331.1Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M203.7,259.1L203.7,259.0L203.6,258.8L203.3,259.2L203.7,259.1Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M347.0,235.0L349.5,230.8L351.6,225.1L355.1,223.8L355.5,220.3L353.1,219.2L351.9,216.0L350.6,215.4L348.1,210.0L343.6,209.6L339.0,207.3L331.6,209.8L331.6,210.2L332.2,210.0L335.5,212.5L337.2,215.3L343.1,220.8L344.0,222.5L345.1,230.5L346.3,234.8L346.7,235.3L347.0,235.0Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M310.0,271.7L305.9,272.7L305.1,273.0L304.7,273.0L304.7,273.0L299.2,275.2L297.9,277.4L297.8,277.3L297.7,277.4L297.2,280.8L301.5,286.8L301.5,287.0L302.5,286.8L307.4,285.4L315.0,280.8L315.4,280.8L315.5,280.6L315.4,278.1L315.6,277.0L311.5,273.1L310.2,271.8L310.0,271.7Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M286.6,261.9L284.5,263.9L281.8,267.8L282.1,271.7L282.0,271.7L282.0,272.1L282.3,272.5L282.6,272.9L282.9,273.0L283.5,273.4L285.4,274.5L287.7,277.3L288.9,278.0L290.7,270.5L291.3,270.6L293.5,271.0L293.7,271.0L293.7,270.9L293.3,269.3L293.4,269.0L294.6,268.5L295.5,268.2L295.5,267.9L291.2,265.7L290.4,265.3L286.8,262.0L286.8,261.9L286.6,261.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M189.9,182.8L189.4,182.4L188.6,182.7L185.9,181.9L185.4,182.0L189.4,183.8L189.9,182.8Z M198.9,189.7L199.2,189.9L199.5,189.9L200.7,190.1L201.2,188.6L200.3,187.8L202.7,183.1L201.5,180.2L206.4,179.3L208.4,174.5L206.7,173.6L209.0,171.4L210.4,166.2L209.6,166.0L202.8,164.5L197.6,168.0L188.3,182.1L190.2,182.4L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.7Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M256.4,19.6L256.6,12.7L254.0,20.8L255.2,22.0L257.4,20.5L256.4,19.6Z M262.1,9.4L260.5,13.9L264.0,11.7L262.1,9.4Z M267.7,4.5L267.2,2.8L264.6,8.9L268.2,6.8L267.7,4.5Z M236.9,111.7L238.5,112.0L238.5,106.4L242.6,101.5L243.0,97.2L242.0,93.8L243.8,92.4L244.7,89.4L241.4,85.8L242.2,81.0L242.1,73.3L241.2,70.5L244.3,64.1L246.6,63.0L249.8,63.6L250.6,61.2L248.5,58.1L251.5,52.4L252.6,46.4L252.2,43.1L255.9,41.4L257.3,36.9L259.3,33.1L260.3,25.9L261.7,24.5L264.5,25.0L265.8,19.1L271.5,18.9L271.6,14.3L272.9,14.0L273.4,14.0L273.5,13.6L276.6,11.4L282.5,16.4L285.6,14.8L289.3,16.3L291.2,12.7L291.0,6.2L291.8,4.2L296.5,0.5L301.6,3.3L302.7,5.0L302.1,9.2L302.5,9.5L303.0,9.2L303.3,6.6L307.4,3.3L307.0,0.9L306.5,0.9L301.8,0.0L281.9,0.0L281.2,2.7L276.9,1.6L272.5,5.6L273.3,9.3L271.4,5.3L269.6,10.5L269.6,7.1L267.8,7.6L266.1,10.7L267.0,11.8L263.1,14.1L260.4,18.2L261.3,21.3L258.7,21.2L253.0,26.9L256.1,31.3L252.2,32.1L250.1,34.0L246.3,40.2L245.9,44.2L242.3,50.5L239.6,54.1L240.1,55.7L237.1,57.9L232.9,62.5L230.7,66.0L234.0,67.5L236.7,65.7L236.7,64.2L239.0,63.5L235.5,67.7L232.5,69.2L231.2,66.8L227.5,66.4L225.5,67.3L226.1,69.5L224.1,70.8L218.9,72.3L217.6,74.7L222.2,74.9L219.7,75.9L215.6,75.4L216.3,77.4L209.5,79.1L209.2,80.3L215.2,83.2L208.5,81.5L209.6,85.7L207.8,86.5L209.0,89.3L219.5,89.8L217.1,90.4L207.9,89.6L207.2,93.0L207.7,98.0L209.6,99.1L207.0,99.5L206.3,103.4L212.1,97.2L209.8,101.1L207.1,103.5L205.7,107.4L209.9,107.2L207.2,113.5L207.7,114.5L213.8,120.1L221.9,118.1L228.9,111.4L232.2,109.2L236.9,111.4L236.9,111.7Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M281.5,155.6L278.3,156.7L276.0,155.2L275.0,153.0L273.0,152.3L264.5,155.4L263.5,156.6L251.4,161.7L251.2,161.5L251.1,161.8L251.2,162.3L252.0,162.4L253.2,162.8L252.8,164.3L251.5,163.7L251.5,172.9L254.5,179.8L253.6,182.2L256.2,187.8L255.0,191.6L255.0,191.7L255.5,191.7L257.9,191.4L262.8,193.8L267.1,198.7L268.5,195.7L272.2,197.0L275.7,199.5L278.4,200.2L280.6,203.6L280.6,203.9L281.3,204.0L282.7,204.8L284.6,203.0L288.6,206.5L290.4,204.4L298.4,203.4L304.0,206.0L304.5,206.0L304.7,206.0L306.5,205.9L304.9,200.7L310.3,192.5L311.8,191.9L312.0,187.3L308.6,182.1L308.1,181.5L307.6,180.6L307.4,175.8L304.8,174.6L308.1,170.2L307.8,166.7L305.4,161.3L304.3,158.1L304.3,157.9L303.9,156.2L300.0,154.2L299.7,154.6L299.6,154.7L296.4,155.0L281.8,155.4L281.5,155.6Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M86.0,254.9L85.6,261.8L81.8,269.8L76.3,276.9L73.5,282.8L74.9,285.2L78.5,287.5L76.9,289.5L74.9,296.5L72.5,299.9L75.8,299.9L80.4,302.5L84.1,301.9L84.8,302.0L85.0,298.0L88.4,294.7L88.3,290.1L90.8,287.0L91.2,284.0L90.5,278.3L92.9,278.9L95.0,276.9L94.7,274.8L97.7,268.1L97.5,266.8L103.1,263.8L99.1,257.6L92.9,256.6L91.4,253.5L87.0,254.1L86.0,254.9Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M346.3,234.8L345.1,230.5L344.0,222.5L343.1,220.8L337.2,215.3L335.5,212.5L332.2,210.0L331.6,210.2L331.3,210.3L329.1,213.2L322.9,215.9L321.3,217.2L318.3,215.3L312.7,215.6L308.1,216.5L307.9,216.7L307.8,217.0L302.6,221.6L301.6,225.3L297.5,234.5L292.5,236.1L292.2,236.3L292.7,236.9L297.6,243.1L299.0,243.7L303.7,249.2L306.3,250.3L309.9,248.9L309.5,251.6L310.7,252.7L310.8,252.8L311.3,253.2L312.7,256.6L314.8,255.9L331.0,255.7L337.2,250.6L339.6,249.6L347.0,249.8L348.5,251.2L352.3,251.3L352.2,250.7L352.7,240.6L356.9,239.4L357.1,235.8L357.1,235.2L352.5,235.5L348.6,236.6L347.6,236.2L346.7,235.3L346.3,234.8Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M288.6,146.7L288.3,146.7L288.1,147.3L285.8,150.2L283.1,153.6L282.6,154.5L281.8,155.4L296.4,155.0L299.6,154.7L299.7,154.6L299.5,154.2L299.1,152.0L299.5,149.9L290.2,146.7L290.3,148.3L286.9,149.8L288.2,147.7L288.6,146.7Z M500.0,0.0L372.3,0.0L373.6,3.6L371.3,7.3L365.8,6.1L364.4,0.0L357.0,0.0L359.5,8.4L361.9,9.0L366.1,18.8L362.8,17.0L357.2,17.4L352.5,30.7L357.7,35.9L352.6,38.3L348.0,38.3L345.3,36.9L342.6,37.2L342.0,39.8L345.5,43.2L348.6,43.1L351.1,46.9L349.9,47.9L344.1,48.4L340.3,46.1L336.6,45.4L332.2,38.2L331.6,32.7L326.2,30.6L322.3,27.4L319.5,24.0L321.6,24.1L329.4,27.2L333.3,27.6L342.1,27.4L346.1,26.6L350.5,22.5L352.3,15.3L347.9,8.6L341.8,7.3L333.2,4.0L325.3,1.6L313.7,2.1L311.6,0.8L314.4,0.0L309.9,0.0L307.7,0.9L307.0,0.9L307.4,3.3L303.3,6.6L303.0,9.2L302.5,9.5L302.3,9.7L303.4,17.6L308.5,20.8L309.5,22.6L307.7,28.8L308.0,29.9L313.1,37.0L314.2,46.5L317.8,52.4L319.2,58.9L325.2,62.3L326.3,70.9L321.2,82.4L316.0,91.0L317.7,90.3L322.7,93.1L325.8,92.3L328.5,94.6L323.5,94.8L322.6,96.9L318.8,98.0L319.2,100.1L319.1,100.8L320.0,101.8L317.7,108.6L320.1,117.4L319.6,120.0L319.6,120.2L320.2,120.1L322.7,123.2L322.5,125.1L326.5,132.2L326.5,132.7L327.4,133.4L333.4,133.3L334.5,135.6L337.2,133.5L342.4,135.0L343.6,142.6L345.7,143.4L347.5,146.6L349.8,147.9L351.6,150.7L357.3,152.7L354.6,157.0L350.8,156.9L355.2,166.6L355.3,166.8L355.4,166.8L357.5,166.8L358.4,164.3L366.0,161.5L371.3,165.8L371.8,171.1L373.4,170.8L382.8,177.1L385.2,175.7L387.8,176.2L398.0,176.6L398.9,174.9L409.4,176.2L411.3,175.8L412.3,179.0L410.7,181.7L411.7,184.9L414.7,187.9L409.2,194.4L406.8,198.2L407.7,202.7L409.2,201.3L413.3,198.9L413.6,201.4L410.0,204.8L410.8,206.1L406.9,208.8L412.5,211.5L408.6,217.3L409.2,219.4L403.1,223.9L408.2,225.2L409.0,226.1L412.5,225.9L415.5,227.8L419.4,227.8L429.5,232.8L430.4,233.0L434.5,230.3L441.6,230.9L450.5,228.3L457.9,230.7L459.5,230.6L462.4,227.4L464.8,226.3L471.4,226.4L472.6,229.2L478.0,229.5L478.2,229.6L478.9,229.4L480.5,229.3L485.8,232.2L490.1,231.3L492.2,223.3L491.4,223.0L480.4,216.0L477.8,208.5L478.3,211.3L475.1,206.9L470.4,205.6L470.4,192.7L473.1,190.0L477.8,181.3L477.5,180.9L472.7,180.8L471.8,179.2L474.2,178.3L471.2,175.7L465.4,171.9L459.5,173.9L453.8,169.9L452.8,168.6L452.9,163.4L450.2,159.6L449.8,157.7L450.2,149.7L450.6,149.3L457.8,152.2L458.5,151.3L455.8,145.1L461.7,128.7L464.0,128.3L469.1,124.6L471.5,125.4L481.3,124.0L487.1,126.6L484.7,123.4L492.4,123.2L493.6,120.8L500.0,114.2L500.0,78.4L500.0,74.9L500.0,0.0Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M456.6,340.6L455.7,342.1L440.7,352.1L451.3,358.9L449.1,361.3L447.5,365.4L500.0,365.4L500.0,348.5L484.7,343.0L482.6,342.2L458.4,340.4L456.6,340.6Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M283.3,238.7L283.3,238.9L284.3,243.8L286.2,244.9L284.5,248.7L284.6,249.0L284.9,249.0L285.8,252.7L289.2,256.8L287.2,261.4L286.8,261.9L286.8,262.0L290.4,265.3L291.2,265.7L295.5,267.9L295.5,268.2L296.3,267.8L297.2,264.4L300.3,265.1L304.5,272.7L304.7,273.0L305.1,273.0L305.9,272.7L310.0,271.7L310.2,271.8L310.8,271.6L310.6,266.5L312.2,265.9L311.7,261.0L310.6,260.5L310.6,253.0L310.8,252.8L310.7,252.7L309.5,251.6L309.9,248.9L306.3,250.3L303.7,249.2L299.0,243.7L297.6,243.1L292.7,236.9L292.2,236.3L292.0,236.2L286.9,236.9L284.9,238.1L283.5,238.7L283.3,238.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M304.0,206.0L298.4,203.4L290.4,204.4L288.6,206.5L284.6,203.0L282.7,204.8L281.3,204.0L280.6,203.9L280.4,203.9L276.1,208.5L274.6,209.9L269.2,212.6L269.1,213.4L269.0,213.5L268.5,215.0L268.6,215.5L270.1,218.8L270.6,219.1L270.7,219.1L274.7,221.2L281.0,220.7L282.0,218.1L288.4,216.8L291.1,215.0L292.9,212.3L300.0,213.7L302.5,212.9L302.6,212.8L302.5,211.2L303.5,209.4L303.7,208.1L304.4,206.4L304.5,206.0L304.0,206.0Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M266.8,233.8L265.6,231.8L265.2,230.5L264.0,230.5L263.6,230.7L261.8,232.1L258.2,232.8L248.3,234.1L248.0,234.0L247.8,234.6L245.9,236.0L247.3,239.3L248.1,243.1L247.5,243.6L247.1,243.8L258.5,244.5L258.7,241.7L261.1,240.6L261.1,237.1L266.3,233.8L266.9,234.0L266.8,233.8Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M276.4,122.7L271.7,125.8L272.3,129.9L274.8,128.6L276.4,122.7Z M273.4,14.0L272.9,14.0L271.6,14.3L271.5,18.9L265.8,19.1L264.5,25.0L261.7,24.5L260.3,25.9L259.3,33.1L257.3,36.9L255.9,41.4L252.2,43.1L252.6,46.4L251.5,52.4L248.5,58.1L250.6,61.2L249.8,63.6L246.6,63.0L244.3,64.1L241.2,70.5L242.1,73.3L242.2,81.0L241.4,85.8L244.7,89.4L243.8,92.4L242.0,93.8L243.0,97.2L242.6,101.5L238.5,106.4L238.5,112.0L236.9,111.7L236.4,111.2L235.7,112.8L236.0,117.2L238.1,122.1L238.2,124.6L239.8,127.3L241.6,132.6L244.2,136.5L243.0,139.2L241.9,138.6L244.1,146.6L246.2,147.9L251.0,147.4L251.9,146.2L251.4,142.6L257.2,140.0L260.4,139.8L263.4,130.9L263.8,127.4L263.3,123.7L263.6,117.6L262.6,115.9L265.2,115.4L273.0,108.4L272.7,107.8L266.5,109.3L265.8,108.5L260.7,107.8L266.8,107.1L269.8,108.3L274.1,104.4L273.4,101.0L269.3,97.1L265.6,95.4L264.8,85.5L266.1,85.8L265.4,77.9L269.9,73.8L270.7,71.1L277.0,65.8L281.8,57.6L280.9,48.5L283.6,43.9L289.8,43.7L290.8,43.3L288.1,38.1L288.6,33.8L287.0,31.5L284.2,21.5L283.7,21.5L274.4,14.4L273.4,14.0Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M466.0,284.5L453.1,291.6L450.4,294.4L444.1,298.1L436.7,298.3L431.7,302.5L425.3,303.1L425.5,306.3L426.8,308.2L425.2,309.0L424.1,313.1L421.9,312.9L421.6,313.6L421.7,316.4L423.1,317.5L424.5,322.9L425.6,324.8L427.9,323.7L431.3,327.3L430.4,331.3L427.6,334.0L427.8,336.0L427.5,336.4L427.5,337.0L428.5,339.1L428.3,339.6L428.5,342.7L428.5,343.1L429.4,343.1L434.8,345.1L437.7,344.7L448.8,331.9L450.4,329.9L452.3,327.9L462.6,315.9L465.1,310.1L463.8,305.5L463.8,301.9L461.6,293.6L464.1,291.8L466.7,285.6L466.7,285.4L466.0,284.5Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M228.5,362.8L225.0,358.8L223.0,359.8L220.9,358.3L219.1,351.6L226.8,343.3L226.0,339.5L222.2,335.4L222.5,332.6L227.4,327.5L226.1,325.6L221.2,327.3L216.3,322.4L212.0,323.6L209.4,325.4L207.4,325.8L204.3,329.9L205.3,331.2L204.1,336.6L204.2,343.6L202.4,348.5L197.5,352.4L196.8,355.1L202.3,365.4L229.0,365.4L229.0,365.4L229.4,363.5L229.4,363.3L228.5,362.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M421.9,312.9L424.1,313.1L425.2,309.0L426.8,308.2L425.5,306.3L425.3,303.1L431.7,302.5L436.7,298.3L444.1,298.1L450.4,294.4L453.1,291.6L466.0,284.5L466.7,285.4L467.3,285.0L468.6,282.0L476.9,280.1L483.5,278.0L483.9,278.1L483.8,277.9L478.3,272.7L477.5,272.9L477.6,268.2L476.2,267.7L471.1,259.5L473.1,258.6L473.6,254.5L475.3,255.0L475.6,254.9L475.2,254.7L475.0,254.5L474.6,254.2L470.6,252.9L468.3,254.0L461.4,245.8L461.1,245.5L461.1,245.3L454.4,243.1L453.4,245.1L449.1,246.8L446.7,246.9L446.3,248.0L442.4,252.8L436.7,256.1L433.7,255.9L427.0,260.1L417.1,260.6L414.6,259.6L413.0,261.1L408.7,258.1L405.3,259.6L401.7,258.0L401.5,256.7L386.4,262.1L383.8,263.7L373.0,273.5L369.4,273.1L366.4,274.2L362.0,274.4L360.4,276.0L363.0,278.3L366.7,278.3L360.4,280.6L361.2,282.9L355.9,283.8L351.7,283.8L350.1,285.7L348.5,284.6L344.6,285.8L341.0,290.4L341.3,295.6L346.5,293.8L348.0,303.4L344.5,304.0L346.2,307.6L347.4,307.1L351.9,308.5L351.8,312.2L355.4,315.9L353.6,318.1L361.0,316.6L355.4,320.4L359.8,320.0L367.2,318.2L373.7,322.4L379.7,317.4L379.8,314.1L385.3,313.5L388.9,314.5L395.8,318.0L397.9,318.1L404.5,315.0L408.2,309.8L414.8,307.7L420.7,303.2L421.5,303.5L420.6,308.3L422.2,312.0L421.9,312.9Z M339.6,273.6L340.3,273.7L340.4,278.2L340.9,280.5L339.0,283.5L339.2,283.9L344.6,283.6L344.7,284.8L348.9,280.7L349.2,279.3L354.8,277.3L359.7,277.0L354.6,273.5L351.3,270.2L351.3,269.1L347.5,270.0L343.8,269.9L339.5,273.4L339.6,273.6Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M355.3,166.8L354.2,167.0L349.6,171.1L350.1,175.9L347.3,175.0L342.4,176.7L340.5,175.0L338.0,176.3L329.9,177.1L328.9,175.9L316.3,176.3L308.2,181.4L308.1,181.5L308.6,182.1L312.0,187.3L311.8,191.9L310.3,192.5L304.9,200.7L306.5,205.9L304.7,206.0L304.5,206.0L304.4,206.4L303.7,208.1L303.5,209.4L302.5,211.2L302.6,212.8L303.2,212.7L304.1,214.1L305.3,214.5L307.7,216.6L307.9,216.7L308.1,216.5L312.7,215.6L318.3,215.3L321.3,217.2L322.9,215.9L329.1,213.2L331.3,210.3L331.6,210.2L331.6,209.8L339.0,207.3L343.6,209.6L348.1,210.0L350.6,215.4L351.9,216.0L353.1,219.2L355.5,220.3L355.1,223.8L351.6,225.1L349.5,230.8L347.0,235.0L346.7,235.3L347.6,236.2L348.6,236.6L352.5,235.5L357.1,235.2L357.1,234.3L356.0,230.4L359.3,228.6L361.4,224.1L361.7,221.2L368.5,218.6L366.5,213.4L370.3,218.7L366.7,220.0L369.9,220.5L370.4,222.1L373.7,223.0L378.2,220.9L381.8,222.3L375.5,229.5L383.1,230.6L383.8,235.9L388.2,236.0L390.1,232.5L394.0,230.5L396.4,226.6L401.9,225.5L400.2,222.0L395.8,224.8L391.3,222.2L390.7,214.8L394.0,211.9L399.9,209.2L403.6,204.3L407.6,202.9L407.7,202.7L406.8,198.2L409.2,194.4L414.7,187.9L411.7,184.9L410.7,181.7L412.3,179.0L411.3,175.8L409.4,176.2L398.9,174.9L398.0,176.6L387.8,176.2L385.2,175.7L382.8,177.1L373.4,170.8L371.8,171.1L371.3,165.8L366.0,161.5L358.4,164.3L357.5,166.8L355.4,166.8L355.3,166.8Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M426.8,347.0L423.3,347.3L423.1,350.4L424.6,353.2L424.5,358.1L428.2,355.8L428.6,355.7L428.5,354.9L428.8,352.8L428.1,350.8L427.9,348.3L427.4,346.9L426.8,347.0Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="367.363973732" padding="0" w="500"><proj id="laea" lat0="50.5" lon0="14.0"/><bbox h="461.97" w="630.48" x="684.76" y="753.17"/><llbbox lat0="33.0" lat1="68.0" lon0="-17.0" lon1="45.0"/></view></views></metadata><g id="countries"><path d="M293.5,271.0L291.3,270.6L290.7,270.5L288.9,278.0L289.8,278.1L289.9,288.5L290.5,291.6L295.1,297.7L295.2,298.6L298.0,297.5L297.4,296.1L299.8,294.3L301.7,290.4L301.5,287.7L301.5,287.0L301.5,286.8L297.2,280.8L297.7,277.4L297.8,277.3L297.9,276.9L297.2,274.4L295.9,273.2L294.0,271.2L293.7,271.0L293.5,271.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M161.8,265.9L161.9,265.1L161.0,264.7L160.2,264.7L159.9,264.9L159.8,265.3L160.8,266.4L161.6,266.1L161.8,266.1L161.8,265.9Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M471.0,239.3L470.8,239.5L466.1,242.3L461.4,245.2L461.1,245.5L461.4,245.8L468.3,254.0L470.6,252.9L474.6,254.2L475.0,254.5L475.7,254.1L476.6,253.2L480.5,254.4L482.5,252.9L486.7,257.4L487.2,258.0L487.6,257.9L488.5,257.1L489.7,256.6L489.3,255.7L485.2,251.2L480.2,249.5L475.7,243.5L476.6,242.0L472.1,240.8L471.3,239.7L471.0,239.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M268.9,213.2L268.6,212.4L256.2,210.0L254.6,213.0L250.3,213.7L249.0,212.2L248.8,212.1L248.7,212.3L246.7,213.9L243.5,224.7L238.2,222.3L232.2,224.9L230.1,225.1L226.8,223.5L225.1,226.0L220.7,223.3L220.5,223.4L220.7,223.5L221.1,224.0L221.0,224.7L220.4,225.8L220.4,226.0L220.5,226.7L220.6,227.0L220.7,227.8L220.6,227.9L220.9,228.0L224.5,230.1L225.7,228.9L226.4,229.8L226.3,230.1L226.5,230.2L230.4,230.4L237.8,228.4L239.2,232.2L246.6,233.7L248.0,234.0L248.3,234.1L258.2,232.8L261.8,232.1L263.6,230.7L264.0,230.5L265.0,229.4L266.1,225.5L270.2,219.6L270.6,219.1L270.1,218.8L268.6,215.5L268.5,215.0L269.0,213.5L269.1,213.4L268.9,213.2Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M475.0,254.5L475.2,254.7L475.6,254.9L475.8,255.0L482.4,258.8L485.8,258.3L487.2,258.0L486.7,257.4L482.5,252.9L480.5,254.4L476.6,253.2L475.7,254.1L475.0,254.5Z M492.2,223.3L490.1,231.3L485.8,232.2L480.5,229.3L478.9,229.4L478.2,229.6L478.1,230.0L478.1,232.7L482.0,234.3L481.9,236.6L477.5,237.5L473.3,236.8L471.9,237.5L471.0,239.3L471.3,239.7L472.1,240.8L476.6,242.0L475.7,243.5L480.2,249.5L485.2,251.2L489.3,255.7L489.7,256.6L490.2,256.4L497.0,244.7L500.0,246.0L500.0,228.6L494.7,224.4L493.1,223.5L492.2,223.3Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M198.9,189.6L199.7,189.4L200.1,190.0L199.5,189.9L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L182.9,182.7L184.6,182.1L185.4,182.0L189.4,183.8L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.6Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M310.8,252.8L310.6,253.0L310.6,260.5L311.7,261.0L312.2,265.9L310.6,266.5L310.8,271.6L310.2,271.8L311.5,273.1L315.6,277.0L315.4,278.1L315.5,280.6L315.4,280.8L316.2,280.8L325.9,277.6L328.9,278.8L333.4,279.1L338.7,277.0L338.7,273.5L339.6,273.6L339.5,273.4L343.8,269.9L347.5,270.0L351.3,269.1L351.0,268.4L346.7,265.0L348.3,262.3L348.7,257.5L349.8,255.2L352.6,253.6L352.3,251.3L348.5,251.2L347.0,249.8L339.6,249.6L337.2,250.6L331.0,255.7L314.8,255.9L312.7,256.6L311.3,253.2L310.8,252.8Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M282.0,271.7L282.1,271.7L281.8,267.8L284.5,263.9L286.6,261.9L286.8,261.9L287.2,261.4L289.2,256.8L285.8,252.7L284.9,249.0L284.6,249.0L284.2,249.1L282.1,247.1L270.1,245.8L264.9,248.0L262.3,247.0L262.0,251.0L264.7,253.3L265.5,256.3L277.5,269.2L281.3,271.5L282.0,271.7Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M326.3,132.7L322.6,136.8L321.2,136.8L319.1,138.7L319.0,138.8L319.1,139.2L320.1,143.2L315.9,147.6L315.5,152.8L311.6,156.8L304.8,158.3L304.3,158.1L305.4,161.3L307.8,166.7L308.1,170.2L304.8,174.6L307.4,175.8L307.6,180.6L308.1,181.5L308.2,181.4L316.3,176.3L328.9,175.9L329.9,177.1L338.0,176.3L340.5,175.0L342.4,176.7L347.3,175.0L350.1,175.9L349.6,171.1L354.2,167.0L355.3,166.8L355.2,166.6L350.8,156.9L354.6,157.0L357.3,152.7L351.6,150.7L349.8,147.9L347.5,146.6L345.7,143.4L343.6,142.6L342.4,135.0L337.2,133.5L334.5,135.6L333.4,133.3L327.4,133.4L326.5,132.7L326.3,132.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M219.4,222.6L215.4,221.3L212.7,222.0L208.5,222.1L208.0,221.8L207.2,222.2L203.4,224.6L199.5,228.5L196.6,234.9L200.1,232.4L202.6,237.3L202.7,237.7L202.9,237.9L207.8,238.2L211.2,234.3L212.6,233.8L214.9,237.2L219.3,234.0L222.3,234.8L226.0,231.4L226.3,230.1L226.4,229.8L225.7,228.9L224.5,230.1L220.9,228.0L220.6,227.9L220.1,227.9L220.0,227.9L220.0,227.5L220.0,226.8L220.4,225.8L221.0,224.7L221.1,224.0L220.7,223.5L220.5,223.4L219.4,222.6Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M408.6,324.4L411.2,318.8L408.9,321.0L404.5,323.5L400.4,324.0L399.5,326.5L399.0,326.5L404.6,325.4L406.8,326.1L409.3,325.0L408.6,324.4Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M398.5,326.5L396.8,328.3L398.3,331.3L399.9,331.5L409.5,325.1L409.3,325.0L406.8,326.1L404.6,325.4L399.0,326.5L398.5,326.5Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M254.9,191.8L251.7,190.0L251.2,191.7L245.3,194.4L243.4,196.1L241.0,196.2L239.2,198.2L242.5,206.6L248.5,211.7L248.8,212.1L249.0,212.2L250.3,213.7L254.6,213.0L256.2,210.0L268.6,212.4L268.9,213.2L269.1,213.4L269.2,212.6L274.6,209.9L276.1,208.5L280.4,203.9L280.6,203.9L280.6,203.6L278.4,200.2L275.7,199.5L272.2,197.0L268.5,195.7L267.1,198.7L262.8,193.8L257.9,191.4L255.5,191.7L255.0,191.7L254.9,191.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M250.2,160.7L249.0,159.8L250.3,162.4L251.0,162.3L251.2,162.3L251.1,161.8L251.2,161.5L250.2,160.7Z M220.1,152.2L221.4,155.5L219.4,156.5L221.0,157.5L220.8,160.0L223.1,162.0L219.1,161.1L218.3,163.1L211.2,162.4L210.1,165.8L210.4,166.2L209.0,171.4L206.7,173.6L208.4,174.5L206.4,179.3L201.5,180.2L202.7,183.1L200.3,187.8L201.2,188.6L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.6L200.6,197.1L201.6,202.4L201.5,202.9L201.8,202.9L203.7,206.0L208.2,206.5L212.4,209.5L207.7,221.6L208.0,221.8L208.5,222.1L212.7,222.0L215.4,221.3L219.4,222.6L220.5,223.4L220.7,223.3L225.1,226.0L226.8,223.5L230.1,225.1L232.2,224.9L238.2,222.3L243.5,224.7L246.7,213.9L248.7,212.3L248.8,212.1L248.5,211.7L242.5,206.6L239.2,198.2L241.0,196.2L243.4,196.1L245.3,194.4L251.2,191.7L251.7,190.0L254.9,191.8L255.0,191.7L255.0,191.6L256.2,187.8L253.6,182.2L254.5,179.8L251.5,172.9L251.5,163.7L251.4,163.7L244.5,157.0L241.9,156.4L235.1,161.3L233.3,158.0L228.1,155.7L226.6,155.8L226.1,152.5L226.0,152.3L222.9,151.9L221.4,151.3L220.1,151.2L220.1,152.2Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M231.5,144.9L227.0,147.2L231.1,150.4L232.1,149.6L231.5,144.9Z M242.1,143.6L242.4,141.2L236.1,142.5L234.3,147.8L236.9,149.3L238.0,153.3L239.0,153.0L240.3,145.9L242.1,143.6Z M220.1,151.2L221.4,151.3L222.9,151.9L226.0,152.3L225.9,151.3L225.6,145.8L228.0,143.5L227.5,142.5L231.2,139.2L233.0,136.1L230.0,135.0L230.3,131.3L231.8,127.0L228.8,125.6L225.8,129.3L221.5,129.7L219.3,133.0L222.0,133.5L224.8,130.9L221.6,135.2L218.6,134.4L217.7,144.2L218.8,145.1L220.1,150.3L220.1,151.2Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M203.9,325.8L196.8,323.5L197.0,324.7L191.8,323.9L191.2,323.0L187.7,324.8L185.0,325.2L177.5,323.4L169.9,322.4L167.8,323.1L160.3,324.0L158.4,323.6L147.5,323.5L140.5,326.0L139.5,327.4L135.7,327.1L131.5,328.3L121.9,332.1L120.4,331.6L122.5,339.3L121.6,349.5L123.4,361.8L101.8,361.3L100.6,365.4L202.3,365.4L196.8,355.1L197.5,352.4L202.4,348.5L204.2,343.6L204.1,336.6L205.3,331.2L204.3,329.9L207.4,325.8L203.9,325.8Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M419.4,360.9L418.9,360.2L418.7,360.0L418.6,360.2L414.8,362.9L412.4,363.5L406.9,365.4L422.1,365.4L421.4,364.2L420.5,362.8L419.4,360.9Z M401.0,365.4L400.1,362.8L391.1,365.4L401.0,365.4Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M168.5,293.9L165.9,292.8L162.5,294.7L168.8,297.9L170.8,294.5L168.5,293.9Z M87.0,254.1L91.4,253.5L92.9,256.6L99.1,257.6L103.1,263.8L97.5,266.8L97.7,268.1L94.7,274.8L95.0,276.9L92.9,278.9L90.5,278.3L91.2,284.0L90.8,287.0L88.3,290.1L88.4,294.7L85.0,298.0L84.8,302.0L86.6,302.2L91.1,306.1L92.2,312.6L94.4,315.6L98.4,315.2L102.0,313.4L104.0,313.9L106.8,312.4L118.9,315.3L125.8,314.4L127.4,311.9L131.5,309.5L136.3,309.8L140.2,302.5L142.9,301.5L144.8,299.5L143.5,298.6L144.8,289.1L148.7,285.5L152.1,281.1L156.1,279.0L164.6,276.8L170.0,274.6L172.5,269.1L172.4,268.4L167.7,268.6L166.4,267.9L162.8,266.7L161.8,266.1L161.6,266.1L160.8,266.4L159.8,265.3L159.9,264.9L159.5,263.9L148.1,260.5L146.0,260.3L141.4,256.5L138.7,252.8L138.5,252.8L134.8,252.7L130.0,251.2L124.5,248.6L119.9,248.4L111.4,243.8L104.1,242.4L90.1,240.8L87.6,241.7L88.4,248.2L86.4,254.1L87.0,254.1Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M293.8,113.4L291.3,119.8L293.6,117.2L297.6,114.6L293.8,113.4Z M295.1,111.2L294.8,109.6L290.6,110.6L293.3,112.8L295.1,111.2Z M303.5,119.5L307.2,117.0L311.0,118.4L319.5,120.3L319.6,120.2L319.6,120.0L320.1,117.4L317.7,108.6L320.0,101.8L319.1,100.8L319.1,101.0L315.9,101.8L306.7,101.6L306.5,102.7L299.9,105.2L297.4,107.3L298.6,113.2L303.1,114.5L303.5,119.1L303.5,119.5Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M273.4,14.0L274.4,14.4L283.7,21.5L284.2,21.5L287.0,31.5L288.6,33.8L288.1,38.1L290.8,43.3L291.1,43.2L295.6,45.1L296.3,49.0L294.0,52.7L293.3,55.6L286.6,68.3L283.3,69.7L282.2,73.8L285.3,88.3L284.9,90.5L287.5,94.8L291.4,96.6L292.2,99.8L293.2,97.9L294.3,101.6L296.2,99.7L300.4,98.5L308.0,94.4L307.4,93.2L315.8,91.1L316.0,91.0L321.2,82.4L326.3,70.9L325.2,62.3L319.2,58.9L317.8,52.4L314.2,46.5L313.1,37.0L308.0,29.9L307.7,28.8L309.5,22.6L308.5,20.8L303.4,17.6L302.3,9.7L302.5,9.5L302.1,9.2L302.7,5.0L301.6,3.3L296.5,0.5L291.8,4.2L291.0,6.2L291.2,12.7L289.3,16.3L285.6,14.8L282.5,16.4L276.6,11.4L273.5,13.6L273.4,14.0Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M217.6,269.3L211.9,271.4L210.7,274.6L212.6,281.6L215.2,282.3L217.8,275.6L217.6,269.3Z M179.5,184.2L176.1,184.4L173.0,191.2L163.4,194.9L160.5,198.4L154.2,194.1L150.7,192.5L151.2,203.1L147.6,202.9L144.9,201.7L143.1,202.4L140.4,198.7L130.5,199.3L132.0,203.4L130.0,203.7L131.9,207.0L132.9,206.9L139.4,210.9L140.9,211.2L141.8,214.4L145.2,215.1L143.6,218.7L147.1,225.1L148.6,225.8L147.3,231.8L147.6,233.4L144.9,241.5L146.0,241.5L141.2,251.7L139.9,252.7L138.7,252.8L141.4,256.5L146.0,260.3L148.1,260.5L159.5,263.9L159.9,264.9L160.2,264.7L161.0,264.7L161.9,265.1L161.8,265.9L161.8,266.1L162.8,266.7L166.4,267.9L167.7,268.6L172.4,268.4L172.3,268.1L171.7,264.3L173.7,261.1L179.8,258.0L184.2,260.7L186.7,261.1L193.8,264.8L197.1,263.9L202.4,259.5L203.3,259.2L203.6,258.8L203.7,259.0L203.7,259.1L204.1,258.9L205.2,255.1L203.6,255.4L200.9,253.6L199.3,245.7L202.9,242.6L201.1,238.6L202.1,238.2L202.7,237.7L202.6,237.3L200.1,232.4L196.6,234.9L199.5,228.5L203.4,224.6L207.2,222.2L208.0,221.8L207.7,221.6L212.4,209.5L208.2,206.5L203.7,206.0L201.8,202.9L201.5,202.9L201.1,202.7L200.1,202.5L199.8,202.7L198.3,202.1L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L179.5,184.2Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M420.0,359.9L419.9,359.3L420.5,356.9L419.9,358.0L418.7,360.0L418.9,360.2L419.4,360.9L420.0,359.9Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M133.4,133.3L128.5,135.8L127.2,137.3L127.4,140.4L133.7,142.7L135.9,144.3L136.4,144.7L140.3,142.6L141.1,140.3L139.5,133.8L137.7,133.0L133.5,133.7L133.4,133.3Z M145.8,112.2L142.5,112.2L145.2,116.7L147.2,115.8L145.6,114.4L145.8,112.2Z M148.0,104.1L142.9,104.9L145.9,107.0L148.0,104.1Z M163.5,106.7L164.1,105.7L151.0,108.0L151.7,109.8L148.2,111.3L148.0,115.6L144.3,121.0L148.4,120.7L146.9,122.6L145.3,127.9L148.4,128.9L144.6,137.6L144.2,139.7L147.0,140.5L153.3,140.0L151.5,143.6L152.2,147.2L154.6,148.3L152.0,154.3L153.3,156.7L145.4,155.7L141.1,158.8L144.7,158.6L142.5,164.5L135.5,166.7L136.9,169.6L141.7,170.5L141.4,171.4L145.8,174.3L139.0,176.3L132.4,181.2L129.4,182.1L131.7,184.4L140.8,184.7L142.7,182.0L146.6,181.2L151.6,183.5L155.9,181.5L159.4,183.5L168.5,184.1L173.1,182.2L173.7,180.3L169.4,179.3L168.6,178.2L171.7,175.5L173.7,175.5L176.2,172.8L177.7,168.9L177.5,167.1L173.7,164.5L171.5,163.9L169.6,165.2L168.4,164.0L170.7,161.9L168.0,156.0L169.8,155.9L169.3,151.3L167.5,147.8L165.1,145.8L164.4,139.6L162.4,132.7L160.3,131.0L157.7,131.1L157.4,129.8L160.7,128.2L160.4,126.4L164.0,123.4L167.9,118.0L167.7,116.8L158.9,114.2L156.1,114.3L163.4,107.5L163.5,106.7Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M478.0,229.5L472.6,229.2L471.4,226.4L464.8,226.3L462.4,227.4L459.5,230.6L457.9,230.7L450.5,228.3L441.6,230.9L434.5,230.3L430.4,233.0L432.1,233.5L439.9,235.7L442.1,235.8L447.4,244.6L446.7,246.9L449.1,246.8L453.4,245.1L454.4,243.1L461.1,245.3L461.1,245.5L461.4,245.2L466.1,242.3L470.8,239.5L471.0,239.3L471.9,237.5L473.3,236.8L477.5,237.5L481.9,236.6L482.0,234.3L478.1,232.7L478.1,230.0L478.2,229.6L478.0,229.5Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M328.7,335.9L326.4,336.2L327.8,339.0L336.0,339.3L336.5,340.6L347.7,338.3L344.0,335.8L341.8,336.4L331.4,336.3L328.7,335.9Z M321.6,303.3L318.8,304.5L321.5,305.5L324.0,308.1L327.0,308.2L328.6,310.7L329.7,310.1L322.2,304.3L321.6,303.3Z M343.7,296.5L340.0,297.5L345.2,299.6L343.7,296.5Z M339.6,273.6L338.7,273.5L338.7,277.0L333.4,279.1L328.9,278.8L325.9,277.6L316.2,280.8L315.4,280.8L315.0,280.8L307.4,285.4L302.5,286.8L301.5,287.0L301.5,287.7L301.7,290.4L299.8,294.3L297.4,296.1L298.0,297.5L295.2,298.6L296.0,299.2L301.6,304.9L305.2,311.1L311.1,309.8L320.7,311.5L318.9,313.4L311.1,310.7L305.3,315.2L309.8,320.0L309.3,323.0L312.1,326.1L313.3,323.1L319.5,325.8L320.4,322.5L319.0,319.9L322.0,318.7L322.9,316.6L321.4,316.4L319.9,314.1L321.0,313.2L325.2,313.4L327.6,315.1L327.2,310.6L325.5,309.0L315.5,304.7L318.0,303.9L317.0,300.9L320.7,301.3L314.3,293.6L314.1,289.1L319.7,292.5L322.4,289.8L326.7,290.1L322.2,285.7L325.7,284.9L326.6,283.5L331.8,282.0L338.7,283.1L339.0,283.5L340.9,280.5L340.4,278.2L340.3,273.7L339.6,273.6Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M282.6,272.9L282.3,272.5L282.0,272.1L282.0,271.7L281.3,271.5L277.5,269.2L276.7,269.2L273.0,267.6L281.2,272.1L282.6,272.9Z M266.9,234.0L266.3,233.8L261.1,237.1L261.1,240.6L258.7,241.7L258.5,244.5L247.1,243.8L246.7,244.2L248.2,249.0L249.8,250.5L251.8,246.1L253.8,246.0L256.3,249.1L256.8,252.7L258.9,254.8L258.3,256.9L267.0,262.8L270.6,264.2L275.3,268.1L265.5,256.3L264.7,253.3L262.0,251.0L262.3,247.0L264.9,248.0L270.1,245.8L282.1,247.1L284.2,249.1L284.6,249.0L284.5,248.7L286.2,244.9L284.3,243.8L283.3,238.9L283.3,238.7L283.3,238.7L280.2,240.5L275.9,240.5L267.3,234.1L266.9,234.0Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M302.5,212.9L300.0,213.7L292.9,212.3L291.1,215.0L288.4,216.8L282.0,218.1L281.0,220.7L274.7,221.2L270.7,219.1L270.6,219.1L270.2,219.6L266.1,225.5L265.0,229.4L264.0,230.5L265.2,230.5L265.6,231.8L266.8,233.8L266.9,234.0L267.3,234.1L275.9,240.5L280.2,240.5L283.3,238.7L283.3,238.7L283.5,238.7L284.9,238.1L286.9,236.9L292.0,236.2L292.2,236.3L292.5,236.1L297.5,234.5L301.6,225.3L302.6,221.6L307.8,217.0L307.9,216.7L307.7,216.6L305.3,214.5L304.1,214.1L303.2,212.7L302.6,212.8L302.5,212.9Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M133.7,132.9L127.9,131.0L125.4,134.0L126.2,137.1L123.5,139.0L119.8,137.1L115.1,137.0L117.0,140.6L117.1,148.4L112.3,151.7L112.5,152.9L107.0,155.3L106.2,158.5L110.6,159.2L108.1,162.4L111.2,163.3L117.3,162.8L117.4,161.3L121.9,161.8L123.1,160.9L130.3,161.5L129.8,160.4L134.2,154.0L134.8,146.1L136.1,144.7L135.9,144.3L133.7,142.7L127.4,140.4L127.2,137.3L128.5,135.8L133.4,133.3L133.7,132.9Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M489.7,256.6L488.5,257.1L487.6,257.9L487.2,258.0L485.8,258.3L482.4,258.8L475.8,255.0L475.6,254.9L475.3,255.0L473.6,254.5L473.1,258.6L471.1,259.5L476.2,267.7L477.6,268.2L477.5,272.9L478.3,272.7L483.8,277.9L483.9,278.1L483.9,278.1L492.4,286.5L495.2,287.1L498.5,285.8L500.0,290.9L500.0,248.9L500.0,246.8L500.0,246.0L497.0,244.7L490.2,256.4L489.7,256.6Z M500.0,293.1L498.9,298.9L497.8,299.3L499.4,302.5L500.0,293.1Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M483.9,278.1L483.5,278.0L476.9,280.1L468.6,282.0L467.3,285.0L466.7,285.4L466.7,285.6L464.1,291.8L461.6,293.6L463.8,301.9L463.8,305.5L465.1,310.1L462.6,315.9L452.3,327.9L450.4,329.9L451.6,331.8L454.9,337.4L457.4,339.1L456.6,340.6L458.4,340.4L482.6,342.2L484.7,343.0L500.0,348.5L499.4,302.5L497.8,299.3L498.9,298.9L500.0,293.1L500.0,290.9L498.5,285.8L495.2,287.1L492.4,286.5L483.9,278.1L483.9,278.1Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M136.8,17.8L134.6,14.1L133.3,16.6L125.2,12.8L122.0,13.2L121.2,14.7L119.1,11.1L116.2,13.7L112.6,15.7L113.1,11.2L115.1,10.6L111.4,3.1L107.9,4.1L104.5,7.3L105.1,9.4L108.0,9.9L111.0,13.2L108.7,16.4L104.0,14.6L102.5,15.3L105.7,20.8L102.4,24.3L99.6,25.1L104.2,27.4L107.3,32.6L112.5,37.0L115.8,37.2L123.2,36.6L132.4,35.4L137.8,31.5L138.9,31.5L140.7,27.5L138.9,20.7L136.8,17.8Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M428.6,355.7L428.2,355.8L424.5,358.1L424.6,353.2L423.1,350.4L423.3,347.3L426.8,347.0L427.4,346.9L427.0,344.7L427.2,344.0L428.1,343.3L428.5,343.1L428.5,342.7L428.3,339.6L428.5,339.1L427.5,337.0L427.5,336.4L427.3,336.6L425.3,340.2L424.7,340.8L422.3,341.4L422.3,342.5L421.8,350.4L421.4,353.5L420.5,356.8L420.5,356.9L419.9,359.3L420.0,359.9L419.4,360.9L420.5,362.8L421.4,364.2L422.1,365.4L428.4,365.4L429.2,359.0L428.8,358.3L428.7,357.2L428.6,355.7Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M262.2,314.7L259.9,314.7L252.2,316.8L247.5,317.0L240.2,315.1L238.0,319.1L238.5,320.1L243.5,322.0L248.4,325.4L251.1,325.7L254.0,328.6L257.9,329.6L260.2,326.5L258.6,323.0L259.6,319.0L262.2,314.7Z M217.7,288.1L215.3,284.8L209.8,287.9L207.4,287.1L206.9,288.4L208.6,294.8L207.6,303.7L209.2,306.6L212.1,305.6L212.5,303.8L216.8,302.9L217.4,294.0L218.8,291.9L217.7,288.1Z M226.3,230.1L226.0,231.4L222.3,234.8L219.3,234.0L214.9,237.2L212.6,233.8L211.2,234.3L207.8,238.2L202.9,237.9L202.7,237.7L202.1,238.2L201.1,238.6L202.9,242.6L199.3,245.7L200.9,253.6L203.6,255.4L205.2,255.1L204.1,258.9L205.8,258.7L213.5,253.3L217.1,254.5L223.5,259.4L225.1,268.1L231.9,274.3L240.0,283.2L243.3,285.4L245.3,285.1L249.0,286.6L250.6,289.8L252.3,289.7L256.2,291.4L257.1,295.2L262.7,297.5L266.9,307.6L266.8,309.4L263.4,317.4L265.9,317.3L269.6,309.7L272.5,307.4L273.6,303.1L269.0,298.6L270.0,295.9L272.6,292.1L275.4,293.7L278.9,294.1L282.7,298.4L283.4,294.4L279.4,290.4L268.8,285.3L264.0,281.6L265.8,278.9L258.5,278.7L253.9,275.7L251.3,273.2L247.8,264.6L245.0,261.7L240.8,258.6L238.2,254.3L237.8,251.4L238.9,248.4L238.2,244.4L243.4,242.6L244.6,241.3L248.5,242.8L248.1,243.1L247.3,239.3L245.9,236.0L247.8,234.6L248.0,234.0L246.6,233.7L239.2,232.2L237.8,228.4L230.4,230.4L226.5,230.2L226.3,230.1Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M456.6,340.6L457.4,339.1L454.9,337.4L451.6,331.8L450.4,329.9L448.8,331.9L437.7,344.7L434.8,345.1L429.4,343.1L428.5,343.1L428.1,343.3L427.2,344.0L427.0,344.7L427.4,346.9L427.9,348.3L428.1,350.8L428.8,352.8L428.5,354.9L428.6,355.7L428.7,357.2L428.8,358.3L429.2,359.0L428.4,365.4L447.5,365.4L449.1,361.3L451.3,358.9L440.7,352.1L455.7,342.1L456.6,340.6Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M500.0,179.1L494.7,182.6L494.2,187.2L495.0,188.7L499.2,189.5L494.7,190.9L491.5,193.8L492.3,195.3L496.4,194.9L500.0,198.2L500.0,179.1Z M477.2,180.6L480.7,175.9L482.0,172.4L486.0,167.7L492.9,166.1L495.9,163.6L500.0,168.3L500.0,114.2L493.6,120.8L492.4,123.2L484.7,123.4L487.1,126.6L481.3,124.0L471.5,125.4L469.1,124.6L464.0,128.3L461.7,128.7L455.8,145.1L458.5,151.3L457.8,152.2L450.6,149.3L450.2,149.7L449.8,157.7L450.2,159.6L452.9,163.4L452.8,168.6L453.8,169.9L459.5,173.9L465.4,171.9L471.2,175.7L474.2,178.3L471.8,179.2L472.7,180.8L477.5,180.9L477.2,180.6Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M304.5,272.7L300.3,265.1L297.2,264.4L296.3,267.8L295.5,268.2L294.6,268.5L293.4,269.0L293.3,269.3L293.7,270.9L293.7,271.0L294.0,271.2L295.9,273.2L297.2,274.4L297.9,276.9L297.8,277.3L297.9,277.4L299.2,275.2L304.7,273.0L304.7,273.0L304.5,272.7Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M427.8,336.0L427.6,334.0L430.4,331.3L431.3,327.3L427.9,323.7L425.6,324.8L425.8,325.6L423.9,329.2L424.1,331.3L422.5,340.5L422.3,341.4L424.7,340.8L425.3,340.2L427.3,336.6L427.5,336.4L427.8,336.0Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M229.4,363.3L229.4,363.5L229.0,365.4L229.0,365.4L233.8,365.4L231.9,364.2L230.6,363.9L229.4,363.3Z M325.7,365.4L325.5,364.7L317.7,362.6L313.2,362.9L311.5,364.4L307.9,365.4L325.7,365.4Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M220.7,227.8L220.6,227.0L220.5,226.7L220.4,226.0L220.4,225.8L220.0,226.8L220.0,227.5L220.0,227.9L220.1,227.9L220.6,227.9L220.7,227.8Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M288.3,146.7L288.6,146.7L289.0,146.0L289.2,144.6L288.8,145.5L288.3,146.7Z M288.5,139.5L288.7,141.5L289.9,146.0L290.2,146.7L290.2,146.7L299.5,149.9L299.1,152.0L299.5,154.2L299.7,154.6L300.0,154.2L303.9,156.2L304.3,157.9L304.3,158.1L304.8,158.3L311.6,156.8L315.5,152.8L315.9,147.6L320.1,143.2L319.1,139.2L319.0,138.8L318.7,138.8L313.2,135.4L299.6,134.8L293.6,135.2L288.4,139.0L288.5,139.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L198.3,202.1L199.8,202.7L200.1,202.5L201.1,202.7L201.5,202.9L201.6,202.4L200.6,197.1L200.7,196.6L200.8,196.3L200.7,196.3Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M319.5,120.3L311.0,118.4L307.2,117.0L303.5,119.5L303.5,120.3L302.7,128.1L299.2,127.8L295.2,123.3L290.4,124.1L289.3,126.6L288.0,137.2L288.4,139.0L293.6,135.2L299.6,134.8L313.2,135.4L318.7,138.8L319.0,138.8L319.1,138.7L321.2,136.8L322.6,136.8L326.3,132.7L326.5,132.7L326.5,132.2L322.5,125.1L322.7,123.2L320.2,120.1L319.6,120.2L319.5,120.3Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M118.8,331.1L114.1,328.1L112.9,328.6L101.7,326.3L97.7,321.2L96.1,318.4L92.9,318.3L87.4,327.0L82.8,332.2L75.4,335.1L68.9,335.9L59.6,341.2L57.6,345.6L54.1,348.3L50.0,357.1L48.4,365.4L100.6,365.4L101.8,361.3L123.4,361.8L121.6,349.5L122.5,339.3L120.4,331.6L118.8,331.1Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M203.7,259.1L203.7,259.0L203.6,258.8L203.3,259.2L203.7,259.1Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M347.0,235.0L349.5,230.8L351.6,225.1L355.1,223.8L355.5,220.3L353.1,219.2L351.9,216.0L350.6,215.4L348.1,210.0L343.6,209.6L339.0,207.3L331.6,209.8L331.6,210.2L332.2,210.0L335.5,212.5L337.2,215.3L343.1,220.8L344.0,222.5L345.1,230.5L346.3,234.8L346.7,235.3L347.0,235.0Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M310.0,271.7L305.9,272.7L305.1,273.0L304.7,273.0L304.7,273.0L299.2,275.2L297.9,277.4L297.8,277.3L297.7,277.4L297.2,280.8L301.5,286.8L301.5,287.0L302.5,286.8L307.4,285.4L315.0,280.8L315.4,280.8L315.5,280.6L315.4,278.1L315.6,277.0L311.5,273.1L310.2,271.8L310.0,271.7Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M286.6,261.9L284.5,263.9L281.8,267.8L282.1,271.7L282.0,271.7L282.0,272.1L282.3,272.5L282.6,272.9L282.9,273.0L283.5,273.4L285.4,274.5L287.7,277.3L288.9,278.0L290.7,270.5L291.3,270.6L293.5,271.0L293.7,271.0L293.7,270.9L293.3,269.3L293.4,269.0L294.6,268.5L295.5,268.2L295.5,267.9L291.2,265.7L290.4,265.3L286.8,262.0L286.8,261.9L286.6,261.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M189.9,182.8L189.4,182.4L188.6,182.7L185.9,181.9L185.4,182.0L189.4,183.8L189.9,182.8Z M198.9,189.7L199.2,189.9L199.5,189.9L200.7,190.1L201.2,188.6L200.3,187.8L202.7,183.1L201.5,180.2L206.4,179.3L208.4,174.5L206.7,173.6L209.0,171.4L210.4,166.2L209.6,166.0L202.8,164.5L197.6,168.0L188.3,182.1L190.2,182.4L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.7Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M256.4,19.6L256.6,12.7L254.0,20.8L255.2,22.0L257.4,20.5L256.4,19.6Z M262.1,9.4L260.5,13.9L264.0,11.7L262.1,9.4Z M267.7,4.5L267.2,2.8L264.6,8.9L268.2,6.8L267.7,4.5Z M236.9,111.7L238.5,112.0L238.5,106.4L242.6,101.5L243.0,97.2L242.0,93.8L243.8,92.4L244.7,89.4L241.4,85.8L242.2,81.0L242.1,73.3L241.2,70.5L244.3,64.1L246.6,63.0L249.8,63.6L250.6,61.2L248.5,58.1L251.5,52.4L252.6,46.4L252.2,43.1L255.9,41.4L257.3,36.9L259.3,33.1L260.3,25.9L261.7,24.5L264.5,25.0L265.8,19.1L271.5,18.9L271.6,14.3L272.9,14.0L273.4,14.0L273.5,13.6L276.6,11.4L282.5,16.4L285.6,14.8L289.3,16.3L291.2,12.7L291.0,6.2L291.8,4.2L296.5,0.5L301.6,3.3L302.7,5.0L302.1,9.2L302.5,9.5L303.0,9.2L303.3,6.6L307.4,3.3L307.0,0.9L306.5,0.9L301.8,0.0L281.9,0.0L281.2,2.7L276.9,1.6L272.5,5.6L273.3,9.3L271.4,5.3L269.6,10.5L269.6,7.1L267.8,7.6L266.1,10.7L267.0,11.8L263.1,14.1L260.4,18.2L261.3,21.3L258.7,21.2L253.0,26.9L256.1,31.3L252.2,32.1L250.1,34.0L246.3,40.2L245.9,44.2L242.3,50.5L239.6,54.1L240.1,55.7L237.1,57.9L232.9,62.5L230.7,66.0L234.0,67.5L236.7,65.7L236.7,64.2L239.0,63.5L235.5,67.7L232.5,69.2L231.2,66.8L227.5,66.4L225.5,67.3L226.1,69.5L224.1,70.8L218.9,72.3L217.6,74.7L222.2,74.9L219.7,75.9L215.6,75.4L216.3,77.4L209.5,79.1L209.2,80.3L215.2,83.2L208.5,81.5L209.6,85.7L207.8,86.5L209.0,89.3L219.5,89.8L217.1,90.4L207.9,89.6L207.2,93.0L207.7,98.0L209.6,99.1L207.0,99.5L206.3,103.4L212.1,97.2L209.8,101.1L207.1,103.5L205.7,107.4L209.9,107.2L207.2,113.5L207.7,114.5L213.8,120.1L221.9,118.1L228.9,111.4L232.2,109.2L236.9,111.4L236.9,111.7Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M281.5,155.6L278.3,156.7L276.0,155.2L275.0,153.0L273.0,152.3L264.5,155.4L263.5,156.6L251.4,161.7L251.2,161.5L251.1,161.8L251.2,162.3L252.0,162.4L253.2,162.8L252.8,164.3L251.5,163.7L251.5,172.9L254.5,179.8L253.6,182.2L256.2,187.8L255.0,191.6L255.0,191.7L255.5,191.7L257.9,191.4L262.8,193.8L267.1,198.7L268.5,195.7L272.2,197.0L275.7,199.5L278.4,200.2L280.6,203.6L280.6,203.9L281.3,204.0L282.7,204.8L284.6,203.0L288.6,206.5L290.4,204.4L298.4,203.4L304.0,206.0L304.5,206.0L304.7,206.0L306.5,205.9L304.9,200.7L310.3,192.5L311.8,191.9L312.0,187.3L308.6,182.1L308.1,181.5L307.6,180.6L307.4,175.8L304.8,174.6L308.1,170.2L307.8,166.7L305.4,161.3L304.3,158.1L304.3,157.9L303.9,156.2L300.0,154.2L299.7,154.6L299.6,154.7L296.4,155.0L281.8,155.4L281.5,155.6Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M86.0,254.9L85.6,261.8L81.8,269.8L76.3,276.9L73.5,282.8L74.9,285.2L78.5,287.5L76.9,289.5L74.9,296.5L72.5,299.9L75.8,299.9L80.4,302.5L84.1,301.9L84.8,302.0L85.0,298.0L88.4,294.7L88.3,290.1L90.8,287.0L91.2,284.0L90.5,278.3L92.9,278.9L95.0,276.9L94.7,274.8L97.7,268.1L97.5,266.8L103.1,263.8L99.1,257.6L92.9,256.6L91.4,253.5L87.0,254.1L86.0,254.9Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M346.3,234.8L345.1,230.5L344.0,222.5L343.1,220.8L337.2,215.3L335.5,212.5L332.2,210.0L331.6,210.2L331.3,210.3L329.1,213.2L322.9,215.9L321.3,217.2L318.3,215.3L312.7,215.6L308.1,216.5L307.9,216.7L307.8,217.0L302.6,221.6L301.6,225.3L297.5,234.5L292.5,236.1L292.2,236.3L292.7,236.9L297.6,243.1L299.0,243.7L303.7,249.2L306.3,250.3L309.9,248.9L309.5,251.6L310.7,252.7L310.8,252.8L311.3,253.2L312.7,256.6L314.8,255.9L331.0,255.7L337.2,250.6L339.6,249.6L347.0,249.8L348.5,251.2L352.3,251.3L352.2,250.7L352.7,240.6L356.9,239.4L357.1,235.8L357.1,235.2L352.5,235.5L348.6,236.6L347.6,236.2L346.7,235.3L346.3,234.8Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M288.6,146.7L288.3,146.7L288.1,147.3L285.8,150.2L283.1,153.6L282.6,154.5L281.8,155.4L296.4,155.0L299.6,154.7L299.7,154.6L299.5,154.2L299.1,152.0L299.5,149.9L290.2,146.7L290.3,148.3L286.9,149.8L288.2,147.7L288.6,146.7Z M500.0,0.0L372.3,0.0L373.6,3.6L371.3,7.3L365.8,6.1L364.4,0.0L357.0,0.0L359.5,8.4L361.9,9.0L366.1,18.8L362.8,17.0L357.2,17.4L352.5,30.7L357.7,35.9L352.6,38.3L348.0,38.3L345.3,36.9L342.6,37.2L342.0,39.8L345.5,43.2L348.6,43.1L351.1,46.9L349.9,47.9L344.1,48.4L340.3,46.1L336.6,45.4L332.2,38.2L331.6,32.7L326.2,30.6L322.3,27.4L319.5,24.0L321.6,24.1L329.4,27.2L333.3,27.6L342.1,27.4L346.1,26.6L350.5,22.5L352.3,15.3L347.9,8.6L341.8,7.3L333.2,4.0L325.3,1.6L313.7,2.1L311.6,0.8L314.4,0.0L309.9,0.0L307.7,0.9L307.0,0.9L307.4,3.3L303.3,6.6L303.0,9.2L302.5,9.5L302.3,9.7L303.4,17.6L308.5,20.8L309.5,22.6L307.7,28.8L308.0,29.9L313.1,37.0L314.2,46.5L317.8,52.4L319.2,58.9L325.2,62.3L326.3,70.9L321.2,82.4L316.0,91.0L317.7,90.3L322.7,93.1L325.8,92.3L328.5,94.6L323.5,94.8L322.6,96.9L318.8,98.0L319.2,100.1L319.1,100.8L320.0,101.8L317.7,108.6L320.1,117.4L319.6,120.0L319.6,120.2L320.2,120.1L322.7,123.2L322.5,125.1L326.5,132.2L326.5,132.7L327.4,133.4L333.4,133.3L334.5,135.6L337.2,133.5L342.4,135.0L343.6,142.6L345.7,143.4L347.5,146.6L349.8,147.9L351.6,150.7L357.3,152.7L354.6,157.0L350.8,156.9L355.2,166.6L355.3,166.8L355.4,166.8L357.5,166.8L358.4,164.3L366.0,161.5L371.3,165.8L371.8,171.1L373.4,170.8L382.8,177.1L385.2,175.7L387.8,176.2L398.0,176.6L398.9,174.9L409.4,176.2L411.3,175.8L412.3,179.0L410.7,181.7L411.7,184.9L414.7,187.9L409.2,194.4L406.8,198.2L407.7,202.7L409.2,201.3L413.3,198.9L413.6,201.4L410.0,204.8L410.8,206.1L406.9,208.8L412.5,211.5L408.6,217.3L409.2,219.4L403.1,223.9L408.2,225.2L409.0,226.1L412.5,225.9L415.5,227.8L419.4,227.8L429.5,232.8L430.4,233.0L434.5,230.3L441.6,230.9L450.5,228.3L457.9,230.7L459.5,230.6L462.4,227.4L464.8,226.3L471.4,226.4L472.6,229.2L478.0,229.5L478.2,229.6L478.9,229.4L480.5,229.3L485.8,232.2L490.1,231.3L492.2,223.3L491.4,223.0L480.4,216.0L477.8,208.5L478.3,211.3L475.1,206.9L470.4,205.6L470.4,192.7L473.1,190.0L477.8,181.3L477.5,180.9L472.7,180.8L471.8,179.2L474.2,178.3L471.2,175.7L465.4,171.9L459.5,173.9L453.8,169.9L452.8,168.6L452.9,163.4L450.2,159.6L449.8,157.7L450.2,149.7L450.6,149.3L457.8,152.2L458.5,151.3L455.8,145.1L461.7,128.7L464.0,128.3L469.1,124.6L471.5,125.4L481.3,124.0L487.1,126.6L484.7,123.4L492.4,123.2L493.6,120.8L500.0,114.2L500.0,78.4L500.0,74.9L500.0,0.0Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M456.6,340.6L455.7,342.1L440.7,352.1L451.3,358.9L449.1,361.3L447.5,365.4L500.0,365.4L500.0,348.5L484.7,343.0L482.6,342.2L458.4,340.4L456.6,340.6Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M283.3,238.7L283.3,238.9L284.3,243.8L286.2,244.9L284.5,248.7L284.6,249.0L284.9,249.0L285.8,252.7L289.2,256.8L287.2,261.4L286.8,261.9L286.8,262.0L290.4,265.3L291.2,265.7L295.5,267.9L295.5,268.2L296.3,267.8L297.2,264.4L300.3,265.1L304.5,272.7L304.7,273.0L305.1,273.0L305.9,272.7L310.0,271.7L310.2,271.8L310.8,271.6L310.6,266.5L312.2,265.9L311.7,261.0L310.6,260.5L310.6,253.0L310.8,252.8L310.7,252.7L309.5,251.6L309.9,248.9L306.3,250.3L303.7,249.2L299.0,243.7L297.6,243.1L292.7,236.9L292.2,236.3L292.0,236.2L286.9,236.9L284.9,238.1L283.5,238.7L283.3,238.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M304.0,206.0L298.4,203.4L290.4,204.4L288.6,206.5L284.6,203.0L282.7,204.8L281.3,204.0L280.6,203.9L280.4,203.9L276.1,208.5L274.6,209.9L269.2,212.6L269.1,213.4L269.0,213.5L268.5,215.0L268.6,215.5L270.1,218.8L270.6,219.1L270.7,219.1L274.7,221.2L281.0,220.7L282.0,218.1L288.4,216.8L291.1,215.0L292.9,212.3L300.0,213.7L302.5,212.9L302.6,212.8L302.5,211.2L303.5,209.4L303.7,208.1L304.4,206.4L304.5,206.0L304.0,206.0Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M266.8,233.8L265.6,231.8L265.2,230.5L264.0,230.5L263.6,230.7L261.8,232.1L258.2,232.8L248.3,234.1L248.0,234.0L247.8,234.6L245.9,236.0L247.3,239.3L248.1,243.1L247.5,243.6L247.1,243.8L258.5,244.5L258.7,241.7L261.1,240.6L261.1,237.1L266.3,233.8L266.9,234.0L266.8,233.8Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M276.4,122.7L271.7,125.8L272.3,129.9L274.8,128.6L276.4,122.7Z M273.4,14.0L272.9,14.0L271.6,14.3L271.5,18.9L265.8,19.1L264.5,25.0L261.7,24.5L260.3,25.9L259.3,33.1L257.3,36.9L255.9,41.4L252.2,43.1L252.6,46.4L251.5,52.4L248.5,58.1L250.6,61.2L249.8,63.6L246.6,63.0L244.3,64.1L241.2,70.5L242.1,73.3L242.2,81.0L241.4,85.8L244.7,89.4L243.8,92.4L242.0,93.8L243.0,97.2L242.6,101.5L238.5,106.4L238.5,112.0L236.9,111.7L236.4,111.2L235.7,112.8L236.0,117.2L238.1,122.1L238.2,124.6L239.8,127.3L241.6,132.6L244.2,136.5L243.0,139.2L241.9,138.6L244.1,146.6L246.2,147.9L251.0,147.4L251.9,146.2L251.4,142.6L257.2,140.0L260.4,139.8L263.4,130.9L263.8,127.4L263.3,123.7L263.6,117.6L262.6,115.9L265.2,115.4L273.0,108.4L272.7,107.8L266.5,109.3L265.8,108.5L260.7,107.8L266.8,107.1L269.8,108.3L274.1,104.4L273.4,101.0L269.3,97.1L265.6,95.4L264.8,85.5L266.1,85.8L265.4,77.9L269.9,73.8L270.7,71.1L277.0,65.8L281.8,57.6L280.9,48.5L283.6,43.9L289.8,43.7L290.8,43.3L288.1,38.1L288.6,33.8L287.0,31.5L284.2,21.5L283.7,21.5L274.4,14.4L273.4,14.0Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M466.0,284.5L453.1,291.6L450.4,294.4L444.1,298.1L436.7,298.3L431.7,302.5L425.3,303.1L425.5,306.3L426.8,308.2L425.2,309.0L424.1,313.1L421.9,312.9L421.6,313.6L421.7,316.4L423.1,317.5L424.5,322.9L425.6,324.8L427.9,323.7L431.3,327.3L430.4,331.3L427.6,334.0L427.8,336.0L427.5,336.4L427.5,337.0L428.5,339.1L428.3,339.6L428.5,342.7L428.5,343.1L429.4,343.1L434.8,345.1L437.7,344.7L448.8,331.9L450.4,329.9L452.3,327.9L462.6,315.9L465.1,310.1L463.8,305.5L463.8,301.9L461.6,293.6L464.1,291.8L466.7,285.6L466.7,285.4L466.0,284.5Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M228.5,362.8L225.0,358.8L223.0,359.8L220.9,358.3L219.1,351.6L226.8,343.3L226.0,339.5L222.2,335.4L222.5,332.6L227.4,327.5L226.1,325.6L221.2,327.3L216.3,322.4L212.0,323.6L209.4,325.4L207.4,325.8L204.3,329.9L205.3,331.2L204.1,336.6L204.2,343.6L202.4,348.5L197.5,352.4L196.8,355.1L202.3,365.4L229.0,365.4L229.0,365.4L229.4,363.5L229.4,363.3L228.5,362.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M421.9,312.9L424.1,313.1L425.2,309.0L426.8,308.2L425.5,306.3L425.3,303.1L431.7,302.5L436.7,298.3L444.1,298.1L450.4,294.4L453.1,291.6L466.0,284.5L466.7,285.4L467.3,285.0L468.6,282.0L476.9,280.1L483.5,278.0L483.9,278.1L483.8,277.9L478.3,272.7L477.5,272.9L477.6,268.2L476.2,267.7L471.1,259.5L473.1,258.6L473.6,254.5L475.3,255.0L475.6,254.9L475.2,254.7L475.0,254.5L474.6,254.2L470.6,252.9L468.3,254.0L461.4,245.8L461.1,245.5L461.1,245.3L454.4,243.1L453.4,245.1L449.1,246.8L446.7,246.9L446.3,248.0L442.4,252.8L436.7,256.1L433.7,255.9L427.0,260.1L417.1,260.6L414.6,259.6L413.0,261.1L408.7,258.1L405.3,259.6L401.7,258.0L401.5,256.7L386.4,262.1L383.8,263.7L373.0,273.5L369.4,273.1L366.4,274.2L362.0,274.4L360.4,276.0L363.0,278.3L366.7,278.3L360.4,280.6L361.2,282.9L355.9,283.8L351.7,283.8L350.1,285.7L348.5,284.6L344.6,285.8L341.0,290.4L341.3,295.6L346.5,293.8L348.0,303.4L344.5,304.0L346.2,307.6L347.4,307.1L351.9,308.5L351.8,312.2L355.4,315.9L353.6,318.1L361.0,316.6L355.4,320.4L359.8,320.0L367.2,318.2L373.7,322.4L379.7,317.4L379.8,314.1L385.3,313.5L388.9,314.5L395.8,318.0L397.9,318.1L404.5,315.0L408.2,309.8L414.8,307.7L420.7,303.2L421.5,303.5L420.6,308.3L422.2,312.0L421.9,312.9Z M339.6,273.6L340.3,273.7L340.4,278.2L340.9,280.5L339.0,283.5L339.2,283.9L344.6,283.6L344.7,284.8L348.9,280.7L349.2,279.3L354.8,277.3L359.7,277.0L354.6,273.5L351.3,270.2L351.3,269.1L347.5,270.0L343.8,269.9L339.5,273.4L339.6,273.6Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M355.3,166.8L354.2,167.0L349.6,171.1L350.1,175.9L347.3,175.0L342.4,176.7L340.5,175.0L338.0,176.3L329.9,177.1L328.9,175.9L316.3,176.3L308.2,181.4L308.1,181.5L308.6,182.1L312.0,187.3L311.8,191.9L310.3,192.5L304.9,200.7L306.5,205.9L304.7,206.0L304.5,206.0L304.4,206.4L303.7,208.1L303.5,209.4L302.5,211.2L302.6,212.8L303.2,212.7L304.1,214.1L305.3,214.5L307.7,216.6L307.9,216.7L308.1,216.5L312.7,215.6L318.3,215.3L321.3,217.2L322.9,215.9L329.1,213.2L331.3,210.3L331.6,210.2L331.6,209.8L339.0,207.3L343.6,209.6L348.1,210.0L350.6,215.4L351.9,216.0L353.1,219.2L355.5,220.3L355.1,223.8L351.6,225.1L349.5,230.8L347.0,235.0L346.7,235.3L347.6,236.2L348.6,236.6L352.5,235.5L357.1,235.2L357.1,234.3L356.0,230.4L359.3,228.6L361.4,224.1L361.7,221.2L368.5,218.6L366.5,213.4L370.3,218.7L366.7,220.0L369.9,220.5L370.4,222.1L373.7,223.0L378.2,220.9L381.8,222.3L375.5,229.5L383.1,230.6L383.8,235.9L388.2,236.0L390.1,232.5L394.0,230.5L396.4,226.6L401.9,225.5L400.2,222.0L395.8,224.8L391.3,222.2L390.7,214.8L394.0,211.9L399.9,209.2L403.6,204.3L407.6,202.9L407.7,202.7L406.8,198.2L409.2,194.4L414.7,187.9L411.7,184.9L410.7,181.7L412.3,179.0L411.3,175.8L409.4,176.2L398.9,174.9L398.0,176.6L387.8,176.2L385.2,175.7L382.8,177.1L373.4,170.8L371.8,171.1L371.3,165.8L366.0,161.5L358.4,164.3L357.5,166.8L355.4,166.8L355.3,166.8Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M426.8,347.0L423.3,347.3L423.1,350.4L424.6,353.2L424.5,358.1L428.2,355.8L428.6,355.7L428.5,354.9L428.8,352.8L428.1,350.8L427.9,348.3L427.4,346.9L426.8,347.0Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/IRQ.svg b/plugins/UserCountryMap/svg/IRQ.svg
index c6617a68f559b583cf66f2fc90998f19f68c3ecf..deeeb41b72bb3dccb81c07c253ca14e05a4fde5c 100644
--- a/plugins/UserCountryMap/svg/IRQ.svg
+++ b/plugins/UserCountryMap/svg/IRQ.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="37.0341222191" lon0="43.0157152588"/><bbox h="114.27" w="115.44" x="950.1" y="989.6"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M238,0L245,5L245,14L248,16L250,23L250,23L250,24L253,34L256,38L257,45L267,60L269,60L273,62L275,65L287,65L290,66L284,70L283,72L283,78L286,81L287,85L287,87L281,91L275,98L274,106L271,106L269,111L272,115L272,119L270,123L270,127L278,137L280,136L282,140L289,149L288,153L288,157L301,161L316,172L321,172L325,176L328,182L337,193L333,206L334,219L343,219L344,236L354,243L356,249L359,251L361,251L363,249L370,245L369,237L372,235L371,233L375,233L378,235L373,239L384,244L388,247L399,241L402,241L405,250L412,257L416,261L419,265L420,271L421,273L427,276L427,282L431,284L433,286L434,293L438,299L450,299L450,26L442,29L431,30L414,28L409,26L398,20L393,16L387,8L383,7L367,6L362,4L358,0L238,0Z " data-iso="IRN"/><path d="M249,23L244,23L237,29L236,29L234,19L230,18L226,21L217,20L207,16L203,18L198,17L195,20L190,24L188,25L188,25L187,26L178,37L173,41L163,44L161,45L159,54L158,58L161,69L161,72L157,83L156,99L151,111L149,112L143,114L98,139L90,143L92,150L97,172L95,172L96,178L102,176L103,180L99,184L105,185L132,191L135,192L165,211L178,219L192,231L216,251L252,280L253,280L299,283L304,282L308,276L314,267L318,258L320,252L325,249L330,248L337,249L344,251L344,250L348,249L354,252L357,252L359,251L356,249L354,243L344,236L343,219L334,219L333,206L337,193L328,182L325,176L321,172L316,172L301,161L288,157L288,153L289,149L282,140L280,136L278,137L270,127L270,123L272,119L272,115L269,111L271,106L274,106L275,98L281,91L287,87L287,85L286,81L283,78L283,72L284,70L290,66L287,65L275,65L273,62L269,60L267,60L257,45L256,38L253,34L250,24L250,23L249,23Z " data-iso="IRQ"/><path d="M1,169L2,162L3,160L7,159L8,159L9,157L12,152L11,147L12,146L12,138L12,136L11,137L3,142L1,146L0,146L0,169L1,169Z " data-iso="ISR"/><path d="M99,184L103,180L102,176L96,178L95,172L97,172L92,150L90,143L83,147L70,154L35,174L23,171L20,167L15,166L11,160L8,159L7,159L3,160L2,162L1,169L1,174L0,179L0,179L0,272L8,273L21,264L28,254L29,253L49,250L64,235L38,201L45,199L94,187L99,184Z " data-iso="JOR"/><path d="M352,262L354,257L351,252L349,252L347,257L349,261L352,262Z M344,251L337,249L330,248L325,249L320,252L318,258L314,267L308,276L304,282L309,282L330,284L332,289L334,295L337,298L359,297L357,294L353,286L351,283L347,271L345,271L341,271L337,271L344,263L349,264L348,263L343,252L344,251Z " data-iso="KWT"/><path d="M12,136L13,135L15,133L15,129L19,124L26,124L24,122L33,112L31,105L29,98L26,97L18,98L18,101L13,104L8,110L7,117L4,121L0,129L0,146L1,146L3,142L11,137L12,136Z " data-iso="LBN"/><path d="M359,297L337,298L334,295L332,289L330,284L309,282L304,282L299,283L253,280L252,280L216,251L192,231L178,219L165,211L135,192L132,191L105,185L99,184L94,187L45,199L38,201L64,235L49,250L29,253L28,254L21,264L8,273L0,272L0,299L360,299L359,297Z " data-iso="SAU"/><path d="M186,21L180,22L172,24L166,25L155,25L152,24L145,24L138,27L127,33L110,37L103,37L93,35L86,30L80,28L73,31L60,36L51,35L48,31L40,29L40,30L36,40L39,48L33,48L32,49L31,54L27,56L25,60L19,56L17,58L14,67L18,72L18,79L16,84L16,91L18,98L26,97L29,98L31,105L33,112L24,122L26,124L19,124L15,129L15,133L13,135L12,136L12,138L12,146L11,147L12,152L9,157L8,159L11,160L15,166L20,167L23,171L35,174L70,154L83,147L90,143L98,139L143,114L149,112L151,111L156,99L157,83L161,72L161,69L158,58L159,54L161,45L163,44L173,41L178,37L187,26L188,25L188,25L186,21Z " data-iso="SYR"/><path d="M19,56L25,60L27,56L31,54L32,49L33,48L39,48L36,40L40,30L40,29L48,31L51,35L60,36L73,31L80,28L86,30L93,35L103,37L110,37L127,33L138,27L145,24L152,24L155,25L166,25L172,24L180,22L186,21L188,25L190,24L195,20L198,17L203,18L207,16L217,20L226,21L230,18L234,19L236,29L237,29L244,23L249,23L250,23L250,23L248,16L245,14L245,5L238,0L0,0L0,31L7,34L11,34L14,30L25,25L27,27L28,33L19,41L17,44L20,54L19,56Z " data-iso="TUR"/><path d="M1,169L0,169L0,179L0,179L1,174L1,169Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M188,26L189,28L191,29L194,35L196,35L200,38L204,36L209,35L212,30L216,32L222,33L221,29L221,27L225,28L225,28L226,27L231,23L232,21L232,18L231,18L227,21L216,20L208,16L197,17L194,22L188,26L188,26Z " data-fips="IZ08" data-fips-="" data-iso3="IRQ" data-name="Dihok"/><path d="M247,64L244,65L241,65L232,68L229,66L224,70L224,75L220,76L219,78L215,79L214,78L213,78L211,79L214,82L215,85L214,85L217,89L228,96L234,98L239,102L241,96L245,92L245,88L245,88L247,87L250,84L250,80L251,79L248,67L247,64L247,64Z " data-fips="IZ13" data-fips-="" data-iso3="IRQ" data-name="At-Ta'mim"/><path d="M232,18L232,21L231,23L226,27L225,28L227,29L234,33L236,34L238,37L234,41L226,44L226,45L218,57L217,59L213,62L214,63L212,69L213,70L213,70L214,76L214,78L214,78L215,79L219,78L220,76L224,75L224,70L229,66L232,68L241,65L244,65L247,64L247,64L247,64L250,64L256,64L250,59L246,55L248,54L246,52L244,48L247,46L248,46L256,43L256,43L257,38L256,36L251,34L253,31L253,28L251,27L250,23L246,22L238,28L238,29L235,26L236,21L232,18L232,18Z " data-fips="IZ11" data-fips-="" data-iso3="IRQ" data-name="Arbil"/><path d="M187,27L174,40L173,41L162,44L159,50L158,59L161,65L161,71L160,75L156,87L156,87L160,88L167,89L179,94L183,94L185,94L191,94L191,91L194,90L205,90L205,88L201,79L202,77L205,75L213,70L213,70L212,69L214,63L213,62L217,59L218,57L226,45L226,44L234,41L238,37L236,34L234,33L227,29L225,28L225,28L221,27L221,29L222,33L216,32L212,30L209,35L204,36L200,38L196,35L194,35L191,29L189,28L188,26L187,27Z " data-fips="IZ15" data-fips-="" data-iso3="IRQ" data-name="Ninawa"/><path d="M214,78L214,76L213,70L213,70L213,70L205,75L202,77L201,79L205,88L205,90L194,90L191,91L191,94L191,94L191,101L192,106L199,111L202,109L203,115L206,123L208,125L216,133L233,138L234,142L236,143L238,143L239,141L242,139L242,130L243,127L239,125L240,121L244,116L244,114L244,106L246,107L249,106L250,104L255,98L256,97L256,94L256,93L252,91L248,91L245,88L245,88L245,92L241,96L239,102L234,98L228,96L217,89L214,85L215,85L214,82L211,79L213,78L214,78L214,78Z " data-fips="IZ18" data-fips-="" data-iso3="IRQ" data-name="Sala ad-Din"/><path d="M240,179L238,180L236,180L223,184L226,187L225,190L221,192L217,193L211,201L210,205L205,220L198,236L200,238L200,238L227,260L234,249L239,234L241,230L247,225L250,220L252,208L246,206L243,203L247,201L246,195L245,191L248,186L249,184L247,184L245,182L242,185L240,183L241,180L240,178L240,179Z " data-fips="IZ17" data-fips-="" data-iso3="IRQ" data-name="An-Najaf"/><path d="M230,163L223,164L211,171L211,173L217,180L222,183L223,184L236,180L238,180L240,179L240,178L240,178L237,170L238,165L236,164L235,164L230,163Z " data-fips="IZ12" data-fips-="IZ06" data-iso3="IRQ" data-name="Karbala'"/><path d="M239,145L239,145L239,145L237,148L237,149L239,151L239,151L239,151L240,151L240,151L245,151L245,150L246,146L244,145L240,143L240,145L239,145Z " data-fips="IZ07" data-fips-="" data-iso3="IRQ" data-name="Baghdad"/><path d="M333,211L320,212L318,213L318,215L319,218L319,225L318,230L318,233L313,233L304,236L304,238L305,243L308,246L309,249L307,262L307,270L305,273L305,281L309,276L315,264L317,259L322,251L326,249L335,248L350,250L356,252L359,252L357,250L355,243L349,240L347,236L344,236L343,219L334,219L333,211Z " data-fips="IZ02" data-fips-="" data-iso3="IRQ" data-name="Al-Basrah"/><path d="M252,208L250,220L247,225L241,230L239,234L234,249L227,260L252,280L253,280L299,283L304,282L305,281L305,273L307,270L307,262L309,249L308,246L305,243L304,238L304,236L303,236L298,229L293,228L280,226L279,222L280,218L281,218L280,214L282,210L281,205L282,201L281,200L281,200L265,198L260,200L262,202L259,210L259,213L257,212L252,208Z " data-fips="IZ03" data-fips-="" data-iso3="IRQ" data-name="Al-Muthannia"/><path d="M264,176L259,180L254,182L252,185L250,184L249,184L248,186L245,191L246,195L247,201L243,203L246,206L252,208L257,212L259,213L259,210L262,202L260,200L265,198L281,200L281,200L280,196L279,192L279,192L279,191L279,190L277,187L278,187L274,185L270,181L269,178L266,177L264,176L264,176Z " data-fips="IZ04" data-fips-="" data-iso3="IRQ" data-name="Al-Qadisiyah"/><path d="M313,215L309,215L307,212L306,209L304,207L303,203L299,198L296,189L295,188L288,188L286,189L286,189L282,190L279,190L279,191L279,192L279,192L280,196L281,200L282,201L281,205L282,210L280,214L281,218L280,218L279,222L280,226L293,228L298,229L303,236L304,236L313,233L318,233L318,230L319,225L319,218L318,215L313,215Z " data-fips="IZ09" data-fips-="" data-iso3="IRQ" data-name="Dhi-Qar"/><path d="M302,161L300,163L298,174L303,184L302,188L298,188L295,188L296,189L299,198L303,203L304,207L306,209L307,212L309,215L313,215L318,215L318,213L320,212L333,211L333,206L337,194L332,186L327,182L324,174L320,172L317,173L315,171L302,161L302,161Z " data-fips="IZ14" data-fips-="" data-iso3="IRQ" data-name="Maysan"/><path d="M284,140L283,143L277,147L275,150L271,154L261,152L254,151L246,157L246,157L245,157L247,163L250,163L257,166L260,173L264,176L264,176L266,177L269,178L270,181L274,185L278,187L277,187L279,190L282,190L286,189L286,189L288,188L295,188L298,188L302,188L303,184L298,174L300,163L302,161L299,160L293,157L288,158L287,152L288,152L290,150L290,148L286,144L284,140L284,140Z " data-fips="IZ16" data-fips-="" data-iso3="IRQ" data-name="Wasit"/><path d="M256,43L248,46L247,46L244,48L246,52L248,54L246,55L250,59L256,64L250,64L247,64L247,64L248,67L251,79L250,80L250,84L247,87L245,88L248,91L252,91L256,93L256,94L256,97L258,98L262,100L262,107L264,107L269,103L271,97L273,95L276,88L278,91L278,95L278,95L280,93L281,90L287,88L287,84L286,81L282,77L283,70L289,68L291,66L290,65L287,66L285,64L278,66L276,66L271,61L268,59L265,61L265,56L263,51L264,51L262,46L258,47L256,43L256,43Z " data-fips="IZ05" data-fips-="" data-iso3="IRQ" data-name="As-Sulaymaniyah"/><path d="M256,97L255,98L250,104L249,106L246,107L244,106L244,114L244,116L240,121L239,125L243,127L242,130L242,139L239,141L238,143L239,145L239,145L240,145L240,143L244,145L246,146L245,150L245,152L245,153L246,155L246,156L246,157L246,157L254,151L261,152L271,154L275,150L277,147L283,143L284,140L284,140L281,140L280,136L277,136L273,131L271,126L268,125L272,120L270,109L271,106L275,102L274,102L278,95L278,95L278,91L276,88L273,95L271,97L269,103L264,107L262,107L262,100L258,98L256,97Z " data-fips="IZ10" data-fips-="" data-iso3="IRQ" data-name="Diyala"/><path d="M156,93L149,112L143,114L90,143L97,172L95,172L102,178L103,180L99,184L132,191L178,219L190,229L198,236L205,220L210,205L211,201L217,193L221,192L225,190L226,187L223,184L222,183L217,180L211,173L211,171L223,164L230,163L235,164L235,161L233,159L232,154L226,152L231,151L238,152L239,151L239,151L237,149L237,148L239,145L239,145L239,145L239,145L238,143L236,143L234,142L233,138L216,133L208,125L206,123L203,115L202,109L199,111L192,106L191,101L191,94L191,94L185,94L183,94L179,94L167,89L160,88L156,87L156,93Z " data-fips="IZ01" data-fips-="" data-iso3="IRQ" data-name="Al-Anbar"/><path d="M238,152L231,151L226,152L232,154L233,159L235,161L235,164L236,164L238,165L237,170L240,178L240,178L241,180L240,183L242,185L245,182L247,184L249,184L250,184L252,185L254,182L259,180L264,176L264,176L264,176L260,173L257,166L250,163L247,163L245,157L246,157L246,156L246,155L245,153L245,152L245,151L240,151L240,151L239,151L239,151L238,152Z " data-fips="IZ06" data-fips-="" data-iso3="IRQ" data-name="Babil"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="37.0341222191" lon0="43.0157152588"/><bbox h="114.27" w="115.44" x="950.1" y="989.6"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M238,0L245,5L245,14L248,16L250,23L250,23L250,24L253,34L256,38L257,45L267,60L269,60L273,62L275,65L287,65L290,66L284,70L283,72L283,78L286,81L287,85L287,87L281,91L275,98L274,106L271,106L269,111L272,115L272,119L270,123L270,127L278,137L280,136L282,140L289,149L288,153L288,157L301,161L316,172L321,172L325,176L328,182L337,193L333,206L334,219L343,219L344,236L354,243L356,249L359,251L361,251L363,249L370,245L369,237L372,235L371,233L375,233L378,235L373,239L384,244L388,247L399,241L402,241L405,250L412,257L416,261L419,265L420,271L421,273L427,276L427,282L431,284L433,286L434,293L438,299L450,299L450,26L442,29L431,30L414,28L409,26L398,20L393,16L387,8L383,7L367,6L362,4L358,0L238,0Z " data-iso="IRN"/><path d="M249,23L244,23L237,29L236,29L234,19L230,18L226,21L217,20L207,16L203,18L198,17L195,20L190,24L188,25L188,25L187,26L178,37L173,41L163,44L161,45L159,54L158,58L161,69L161,72L157,83L156,99L151,111L149,112L143,114L98,139L90,143L92,150L97,172L95,172L96,178L102,176L103,180L99,184L105,185L132,191L135,192L165,211L178,219L192,231L216,251L252,280L253,280L299,283L304,282L308,276L314,267L318,258L320,252L325,249L330,248L337,249L344,251L344,250L348,249L354,252L357,252L359,251L356,249L354,243L344,236L343,219L334,219L333,206L337,193L328,182L325,176L321,172L316,172L301,161L288,157L288,153L289,149L282,140L280,136L278,137L270,127L270,123L272,119L272,115L269,111L271,106L274,106L275,98L281,91L287,87L287,85L286,81L283,78L283,72L284,70L290,66L287,65L275,65L273,62L269,60L267,60L257,45L256,38L253,34L250,24L250,23L249,23Z " data-iso="IRQ"/><path d="M1,169L2,162L3,160L7,159L8,159L9,157L12,152L11,147L12,146L12,138L12,136L11,137L3,142L1,146L0,146L0,169L1,169Z " data-iso="ISR"/><path d="M99,184L103,180L102,176L96,178L95,172L97,172L92,150L90,143L83,147L70,154L35,174L23,171L20,167L15,166L11,160L8,159L7,159L3,160L2,162L1,169L1,174L0,179L0,179L0,272L8,273L21,264L28,254L29,253L49,250L64,235L38,201L45,199L94,187L99,184Z " data-iso="JOR"/><path d="M352,262L354,257L351,252L349,252L347,257L349,261L352,262Z M344,251L337,249L330,248L325,249L320,252L318,258L314,267L308,276L304,282L309,282L330,284L332,289L334,295L337,298L359,297L357,294L353,286L351,283L347,271L345,271L341,271L337,271L344,263L349,264L348,263L343,252L344,251Z " data-iso="KWT"/><path d="M12,136L13,135L15,133L15,129L19,124L26,124L24,122L33,112L31,105L29,98L26,97L18,98L18,101L13,104L8,110L7,117L4,121L0,129L0,146L1,146L3,142L11,137L12,136Z " data-iso="LBN"/><path d="M359,297L337,298L334,295L332,289L330,284L309,282L304,282L299,283L253,280L252,280L216,251L192,231L178,219L165,211L135,192L132,191L105,185L99,184L94,187L45,199L38,201L64,235L49,250L29,253L28,254L21,264L8,273L0,272L0,299L360,299L359,297Z " data-iso="SAU"/><path d="M186,21L180,22L172,24L166,25L155,25L152,24L145,24L138,27L127,33L110,37L103,37L93,35L86,30L80,28L73,31L60,36L51,35L48,31L40,29L40,30L36,40L39,48L33,48L32,49L31,54L27,56L25,60L19,56L17,58L14,67L18,72L18,79L16,84L16,91L18,98L26,97L29,98L31,105L33,112L24,122L26,124L19,124L15,129L15,133L13,135L12,136L12,138L12,146L11,147L12,152L9,157L8,159L11,160L15,166L20,167L23,171L35,174L70,154L83,147L90,143L98,139L143,114L149,112L151,111L156,99L157,83L161,72L161,69L158,58L159,54L161,45L163,44L173,41L178,37L187,26L188,25L188,25L186,21Z " data-iso="SYR"/><path d="M19,56L25,60L27,56L31,54L32,49L33,48L39,48L36,40L40,30L40,29L48,31L51,35L60,36L73,31L80,28L86,30L93,35L103,37L110,37L127,33L138,27L145,24L152,24L155,25L166,25L172,24L180,22L186,21L188,25L190,24L195,20L198,17L203,18L207,16L217,20L226,21L230,18L234,19L236,29L237,29L244,23L249,23L250,23L250,23L248,16L245,14L245,5L238,0L0,0L0,31L7,34L11,34L14,30L25,25L27,27L28,33L19,41L17,44L20,54L19,56Z " data-iso="TUR"/><path d="M1,169L0,169L0,179L0,179L1,174L1,169Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M188,26L189,28L191,29L194,35L196,35L200,38L204,36L209,35L212,30L216,32L222,33L221,29L221,27L225,28L225,28L226,27L231,23L232,21L232,18L231,18L227,21L216,20L208,16L197,17L194,22L188,26L188,26Z " data-fips="IZ08" data-fips-="" data-iso3="IRQ" data-name="Dihok"/><path d="M247,64L244,65L241,65L232,68L229,66L224,70L224,75L220,76L219,78L215,79L214,78L213,78L211,79L214,82L215,85L214,85L217,89L228,96L234,98L239,102L241,96L245,92L245,88L245,88L247,87L250,84L250,80L251,79L248,67L247,64L247,64Z " data-fips="IZ13" data-fips-="" data-iso3="IRQ" data-name="At-Ta'mim"/><path d="M232,18L232,21L231,23L226,27L225,28L227,29L234,33L236,34L238,37L234,41L226,44L226,45L218,57L217,59L213,62L214,63L212,69L213,70L213,70L214,76L214,78L214,78L215,79L219,78L220,76L224,75L224,70L229,66L232,68L241,65L244,65L247,64L247,64L247,64L250,64L256,64L250,59L246,55L248,54L246,52L244,48L247,46L248,46L256,43L256,43L257,38L256,36L251,34L253,31L253,28L251,27L250,23L246,22L238,28L238,29L235,26L236,21L232,18L232,18Z " data-fips="IZ11" data-fips-="" data-iso3="IRQ" data-name="Arbil"/><path d="M187,27L174,40L173,41L162,44L159,50L158,59L161,65L161,71L160,75L156,87L156,87L160,88L167,89L179,94L183,94L185,94L191,94L191,91L194,90L205,90L205,88L201,79L202,77L205,75L213,70L213,70L212,69L214,63L213,62L217,59L218,57L226,45L226,44L234,41L238,37L236,34L234,33L227,29L225,28L225,28L221,27L221,29L222,33L216,32L212,30L209,35L204,36L200,38L196,35L194,35L191,29L189,28L188,26L187,27Z " data-fips="IZ15" data-fips-="" data-iso3="IRQ" data-name="Ninawa"/><path d="M214,78L214,76L213,70L213,70L213,70L205,75L202,77L201,79L205,88L205,90L194,90L191,91L191,94L191,94L191,101L192,106L199,111L202,109L203,115L206,123L208,125L216,133L233,138L234,142L236,143L238,143L239,141L242,139L242,130L243,127L239,125L240,121L244,116L244,114L244,106L246,107L249,106L250,104L255,98L256,97L256,94L256,93L252,91L248,91L245,88L245,88L245,92L241,96L239,102L234,98L228,96L217,89L214,85L215,85L214,82L211,79L213,78L214,78L214,78Z " data-fips="IZ18" data-fips-="" data-iso3="IRQ" data-name="Sala ad-Din"/><path d="M240,179L238,180L236,180L223,184L226,187L225,190L221,192L217,193L211,201L210,205L205,220L198,236L200,238L200,238L227,260L234,249L239,234L241,230L247,225L250,220L252,208L246,206L243,203L247,201L246,195L245,191L248,186L249,184L247,184L245,182L242,185L240,183L241,180L240,178L240,179Z " data-fips="IZ17" data-fips-="" data-iso3="IRQ" data-name="An-Najaf"/><path d="M230,163L223,164L211,171L211,173L217,180L222,183L223,184L236,180L238,180L240,179L240,178L240,178L237,170L238,165L236,164L235,164L230,163Z " data-fips="IZ12" data-fips-="IZ06" data-iso3="IRQ" data-name="Karbala'"/><path d="M239,145L239,145L239,145L237,148L237,149L239,151L239,151L239,151L240,151L240,151L245,151L245,150L246,146L244,145L240,143L240,145L239,145Z " data-fips="IZ07" data-fips-="" data-iso3="IRQ" data-name="Baghdad"/><path d="M333,211L320,212L318,213L318,215L319,218L319,225L318,230L318,233L313,233L304,236L304,238L305,243L308,246L309,249L307,262L307,270L305,273L305,281L309,276L315,264L317,259L322,251L326,249L335,248L350,250L356,252L359,252L357,250L355,243L349,240L347,236L344,236L343,219L334,219L333,211Z " data-fips="IZ02" data-fips-="" data-iso3="IRQ" data-name="Al-Basrah"/><path d="M252,208L250,220L247,225L241,230L239,234L234,249L227,260L252,280L253,280L299,283L304,282L305,281L305,273L307,270L307,262L309,249L308,246L305,243L304,238L304,236L303,236L298,229L293,228L280,226L279,222L280,218L281,218L280,214L282,210L281,205L282,201L281,200L281,200L265,198L260,200L262,202L259,210L259,213L257,212L252,208Z " data-fips="IZ03" data-fips-="" data-iso3="IRQ" data-name="Al-Muthannia"/><path d="M264,176L259,180L254,182L252,185L250,184L249,184L248,186L245,191L246,195L247,201L243,203L246,206L252,208L257,212L259,213L259,210L262,202L260,200L265,198L281,200L281,200L280,196L279,192L279,192L279,191L279,190L277,187L278,187L274,185L270,181L269,178L266,177L264,176L264,176Z " data-fips="IZ04" data-fips-="" data-iso3="IRQ" data-name="Al-Qadisiyah"/><path d="M313,215L309,215L307,212L306,209L304,207L303,203L299,198L296,189L295,188L288,188L286,189L286,189L282,190L279,190L279,191L279,192L279,192L280,196L281,200L282,201L281,205L282,210L280,214L281,218L280,218L279,222L280,226L293,228L298,229L303,236L304,236L313,233L318,233L318,230L319,225L319,218L318,215L313,215Z " data-fips="IZ09" data-fips-="" data-iso3="IRQ" data-name="Dhi-Qar"/><path d="M302,161L300,163L298,174L303,184L302,188L298,188L295,188L296,189L299,198L303,203L304,207L306,209L307,212L309,215L313,215L318,215L318,213L320,212L333,211L333,206L337,194L332,186L327,182L324,174L320,172L317,173L315,171L302,161L302,161Z " data-fips="IZ14" data-fips-="" data-iso3="IRQ" data-name="Maysan"/><path d="M284,140L283,143L277,147L275,150L271,154L261,152L254,151L246,157L246,157L245,157L247,163L250,163L257,166L260,173L264,176L264,176L266,177L269,178L270,181L274,185L278,187L277,187L279,190L282,190L286,189L286,189L288,188L295,188L298,188L302,188L303,184L298,174L300,163L302,161L299,160L293,157L288,158L287,152L288,152L290,150L290,148L286,144L284,140L284,140Z " data-fips="IZ16" data-fips-="" data-iso3="IRQ" data-name="Wasit"/><path d="M256,43L248,46L247,46L244,48L246,52L248,54L246,55L250,59L256,64L250,64L247,64L247,64L248,67L251,79L250,80L250,84L247,87L245,88L248,91L252,91L256,93L256,94L256,97L258,98L262,100L262,107L264,107L269,103L271,97L273,95L276,88L278,91L278,95L278,95L280,93L281,90L287,88L287,84L286,81L282,77L283,70L289,68L291,66L290,65L287,66L285,64L278,66L276,66L271,61L268,59L265,61L265,56L263,51L264,51L262,46L258,47L256,43L256,43Z " data-fips="IZ05" data-fips-="" data-iso3="IRQ" data-name="As-Sulaymaniyah"/><path d="M256,97L255,98L250,104L249,106L246,107L244,106L244,114L244,116L240,121L239,125L243,127L242,130L242,139L239,141L238,143L239,145L239,145L240,145L240,143L244,145L246,146L245,150L245,152L245,153L246,155L246,156L246,157L246,157L254,151L261,152L271,154L275,150L277,147L283,143L284,140L284,140L281,140L280,136L277,136L273,131L271,126L268,125L272,120L270,109L271,106L275,102L274,102L278,95L278,95L278,91L276,88L273,95L271,97L269,103L264,107L262,107L262,100L258,98L256,97Z " data-fips="IZ10" data-fips-="" data-iso3="IRQ" data-name="Diyala"/><path d="M156,93L149,112L143,114L90,143L97,172L95,172L102,178L103,180L99,184L132,191L178,219L190,229L198,236L205,220L210,205L211,201L217,193L221,192L225,190L226,187L223,184L222,183L217,180L211,173L211,171L223,164L230,163L235,164L235,161L233,159L232,154L226,152L231,151L238,152L239,151L239,151L237,149L237,148L239,145L239,145L239,145L239,145L238,143L236,143L234,142L233,138L216,133L208,125L206,123L203,115L202,109L199,111L192,106L191,101L191,94L191,94L185,94L183,94L179,94L167,89L160,88L156,87L156,93Z " data-fips="IZ01" data-fips-="" data-iso3="IRQ" data-name="Al-Anbar"/><path d="M238,152L231,151L226,152L232,154L233,159L235,161L235,164L236,164L238,165L237,170L240,178L240,178L241,180L240,183L242,185L245,182L247,184L249,184L250,184L252,185L254,182L259,180L264,176L264,176L264,176L260,173L257,166L250,163L247,163L245,157L246,157L246,156L246,155L245,153L245,152L245,151L240,151L240,151L239,151L239,151L238,152Z " data-fips="IZ06" data-fips-="" data-iso3="IRQ" data-name="Babil"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/ISR.svg b/plugins/UserCountryMap/svg/ISR.svg
index 509040a5e491749d340ed77016079ac2cae69135..056cf07bfb60bac207bd15b0f6db0c40739ea923 100644
--- a/plugins/UserCountryMap/svg/ISR.svg
+++ b/plugins/UserCountryMap/svg/ISR.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 563" height="563px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 563" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="563.5" padding="0.06" w="450"><proj id="laea" lat0="30.6838638372" lon0="34.8541779513"/><bbox h="50.44" w="19.16" x="992.57" y="965.33"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M207,552L203,540L193,506L187,482L178,454L163,419L161,410L158,398L148,366L139,343L129,314L126,302L124,298L121,301L89,317L61,324L27,323L6,330L0,321L0,562L198,562L200,558L207,552Z " data-iso="EGY"/><path d="M142,302L142,293L163,270L162,268L157,262L146,276L124,298L126,302L129,314L142,302Z " data-iso="GAZ"/><path d="M310,97L317,86L323,74L319,68L318,62L318,55L322,49L320,41L316,33L314,29L314,22L315,16L317,8L314,10L308,17L302,22L290,30L287,34L284,30L279,33L275,51L265,57L253,57L244,55L230,56L227,72L219,92L209,121L195,178L181,220L158,261L157,262L162,268L163,270L142,293L142,302L129,314L139,343L148,366L158,398L161,410L163,419L178,454L187,482L193,506L203,540L207,552L215,541L221,509L225,494L226,483L235,460L234,453L236,427L235,422L239,408L246,387L253,370L256,362L263,345L270,324L265,311L268,298L268,298L271,277L266,276L251,284L230,292L207,294L204,292L203,288L210,269L212,260L222,250L236,242L242,239L241,236L233,230L224,227L216,230L213,229L213,227L215,224L217,217L216,206L215,193L213,183L218,167L219,159L225,142L240,132L253,135L260,135L263,137L265,143L274,150L282,151L284,120L284,117L289,111L303,105L309,104L310,97Z " data-iso="ISR"/><path d="M450,145L429,160L390,154L377,151L367,141L359,136L341,131L329,113L321,107L309,104L303,105L289,111L284,117L284,120L282,151L284,172L280,191L280,207L283,237L276,250L273,265L271,277L268,298L268,298L265,311L270,324L263,345L256,362L253,370L246,387L239,408L235,422L236,427L234,453L235,460L226,483L225,494L221,509L215,541L216,551L214,562L379,562L395,548L421,501L427,496L450,491L450,275L448,273L450,272L450,145Z " data-iso="JOR"/><path d="M230,56L244,55L253,57L265,57L275,51L279,33L284,30L287,34L290,30L302,22L308,17L314,10L317,8L323,3L323,0L255,0L247,14L241,32L236,46L230,56Z " data-iso="LBN"/><path d="M450,562L450,491L427,496L421,501L395,548L379,562L450,562Z M450,272L448,273L450,275L450,272Z " data-iso="SAU"/><path d="M317,8L315,16L314,22L314,29L316,33L320,41L322,49L318,55L318,62L319,68L323,74L317,86L310,97L309,104L321,107L329,113L341,131L359,136L367,141L377,151L390,154L429,160L450,145L450,0L323,0L323,3L317,8Z " data-iso="SYR"/><path d="M274,150L265,143L263,137L260,135L253,135L240,132L225,142L219,159L218,167L213,183L215,193L216,206L217,217L215,224L213,227L213,229L216,230L224,227L233,230L241,236L242,239L236,242L222,250L212,260L210,269L203,288L204,292L207,294L230,292L251,284L266,276L271,277L273,265L276,250L283,237L280,207L280,191L284,172L282,151L274,150Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M172,237L172,238L161,256L158,260L157,262L161,265L163,268L163,271L157,276L144,288L141,293L142,300L142,303L138,307L132,312L139,343L157,390L159,401L160,407L160,409L163,414L162,420L163,425L169,431L171,433L186,477L188,488L197,515L200,530L200,539L201,542L204,548L206,550L208,550L212,544L214,534L217,528L218,520L219,517L224,502L225,499L225,490L226,486L229,475L234,468L236,463L236,459L233,450L233,446L234,444L235,437L237,432L235,421L237,415L237,412L242,395L249,381L251,373L256,367L256,358L258,354L262,350L264,347L263,343L264,339L270,328L270,324L269,320L265,311L265,307L268,301L268,298L267,297L269,293L271,287L272,284L264,275L257,279L244,290L237,293L223,293L216,294L210,295L206,295L204,293L202,288L204,283L209,275L211,263L213,259L203,251L203,240L201,238L198,234L194,237L193,237L190,232L185,232L183,235L180,235L182,231L180,229L184,228L184,224L183,222L179,223L172,237Z " data-fips="IS01" data-fips-="" data-iso3="ISR" data-name="HaDarom"/><path d="M226,86L221,92L213,91L212,93L211,106L209,117L207,127L207,128L203,146L203,149L210,149L216,149L219,152L222,153L223,146L225,142L242,131L242,131L236,128L232,132L231,132L225,131L221,122L224,121L222,118L230,113L230,109L233,109L234,105L234,103L236,99L234,90L230,88L230,85L227,82L226,86Z " data-fips="IS04" data-fips-="" data-iso3="ISR" data-name="Haifa"/><path d="M199,167L195,179L202,183L202,187L200,194L202,196L204,202L196,205L189,205L187,203L184,212L182,215L179,223L183,222L184,224L184,228L180,229L182,231L180,235L183,235L185,232L190,232L193,237L194,237L198,234L205,232L207,231L210,228L212,227L213,225L219,222L217,218L215,212L216,200L214,187L212,181L213,177L218,173L219,168L218,167L217,161L218,159L220,158L221,155L222,153L219,152L216,149L210,149L203,149L199,167Z " data-fips="IS02" data-fips-="" data-iso3="ISR" data-name="HaMerkaz"/><path d="M227,82L230,85L230,88L234,90L236,99L234,103L234,105L233,109L230,109L230,113L222,118L224,121L221,122L225,131L231,132L232,132L236,128L242,131L244,131L247,134L249,135L256,135L260,135L263,137L264,140L265,148L268,149L283,152L282,145L283,144L285,137L283,134L283,129L285,128L284,126L284,120L283,117L289,111L285,106L285,106L287,106L287,106L291,102L291,100L291,100L291,99L291,99L292,99L292,99L291,85L287,82L287,78L285,68L284,66L290,58L291,51L292,43L292,34L290,34L289,34L289,34L289,34L288,35L288,35L285,33L282,29L281,29L278,34L278,37L277,44L273,56L269,56L264,58L258,60L250,54L239,56L230,56L228,58L229,61L227,68L226,76L225,78L227,81L227,82Z " data-fips="IS03" data-fips-="" data-iso3="ISR" data-name="HaZafon"/><path d="M190,196L188,197L188,200L187,203L189,205L196,205L204,202L202,196L200,194L202,187L202,183L195,179L190,196Z " data-fips="IS05" data-fips-="" data-iso3="ISR" data-name="Tel Aviv"/><path d="M213,258L215,256L224,249L233,242L240,240L242,240L241,233L239,232L231,230L225,227L222,227L220,230L217,231L213,230L212,228L212,227L210,228L207,231L205,232L198,234L201,238L203,240L203,251L213,259L213,258Z " data-fips="IS06" data-fips-="" data-iso3="ISR" data-name="Jerusalem"/><path d="M288,35L288,35L289,34L289,34L289,34L292,34L292,38L292,43L291,51L290,58L284,66L285,68L287,78L287,82L291,85L292,99L292,99L291,99L291,99L291,100L291,100L291,102L287,106L287,106L285,106L285,106L285,108L289,111L291,112L297,107L303,103L305,102L308,98L314,91L315,87L315,86L316,82L320,75L317,70L315,56L316,54L311,52L314,45L313,41L311,40L310,33L306,30L310,24L305,21L311,18L311,15L310,14L306,20L300,23L294,28L287,31L288,35L288,35Z " data-fips="" data-fips-="" data-iso3="ISR" data-name="Golan"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="563.5" padding="0.06" w="450"><proj id="laea" lat0="30.6838638372" lon0="34.8541779513"/><bbox h="50.44" w="19.16" x="992.57" y="965.33"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M207,552L203,540L193,506L187,482L178,454L163,419L161,410L158,398L148,366L139,343L129,314L126,302L124,298L121,301L89,317L61,324L27,323L6,330L0,321L0,562L198,562L200,558L207,552Z " data-iso="EGY"/><path d="M142,302L142,293L163,270L162,268L157,262L146,276L124,298L126,302L129,314L142,302Z " data-iso="PSE"/><path d="M310,97L317,86L323,74L319,68L318,62L318,55L322,49L320,41L316,33L314,29L314,22L315,16L317,8L314,10L308,17L302,22L290,30L287,34L284,30L279,33L275,51L265,57L253,57L244,55L230,56L227,72L219,92L209,121L195,178L181,220L158,261L157,262L162,268L163,270L142,293L142,302L129,314L139,343L148,366L158,398L161,410L163,419L178,454L187,482L193,506L203,540L207,552L215,541L221,509L225,494L226,483L235,460L234,453L236,427L235,422L239,408L246,387L253,370L256,362L263,345L270,324L265,311L268,298L268,298L271,277L266,276L251,284L230,292L207,294L204,292L203,288L210,269L212,260L222,250L236,242L242,239L241,236L233,230L224,227L216,230L213,229L213,227L215,224L217,217L216,206L215,193L213,183L218,167L219,159L225,142L240,132L253,135L260,135L263,137L265,143L274,150L282,151L284,120L284,117L289,111L303,105L309,104L310,97Z " data-iso="ISR"/><path d="M450,145L429,160L390,154L377,151L367,141L359,136L341,131L329,113L321,107L309,104L303,105L289,111L284,117L284,120L282,151L284,172L280,191L280,207L283,237L276,250L273,265L271,277L268,298L268,298L265,311L270,324L263,345L256,362L253,370L246,387L239,408L235,422L236,427L234,453L235,460L226,483L225,494L221,509L215,541L216,551L214,562L379,562L395,548L421,501L427,496L450,491L450,275L448,273L450,272L450,145Z " data-iso="JOR"/><path d="M230,56L244,55L253,57L265,57L275,51L279,33L284,30L287,34L290,30L302,22L308,17L314,10L317,8L323,3L323,0L255,0L247,14L241,32L236,46L230,56Z " data-iso="LBN"/><path d="M450,562L450,491L427,496L421,501L395,548L379,562L450,562Z M450,272L448,273L450,275L450,272Z " data-iso="SAU"/><path d="M317,8L315,16L314,22L314,29L316,33L320,41L322,49L318,55L318,62L319,68L323,74L317,86L310,97L309,104L321,107L329,113L341,131L359,136L367,141L377,151L390,154L429,160L450,145L450,0L323,0L323,3L317,8Z " data-iso="SYR"/><path d="M274,150L265,143L263,137L260,135L253,135L240,132L225,142L219,159L218,167L213,183L215,193L216,206L217,217L215,224L213,227L213,229L216,230L224,227L233,230L241,236L242,239L236,242L222,250L212,260L210,269L203,288L204,292L207,294L230,292L251,284L266,276L271,277L273,265L276,250L283,237L280,207L280,191L284,172L282,151L274,150Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M172,237L172,238L161,256L158,260L157,262L161,265L163,268L163,271L157,276L144,288L141,293L142,300L142,303L138,307L132,312L139,343L157,390L159,401L160,407L160,409L163,414L162,420L163,425L169,431L171,433L186,477L188,488L197,515L200,530L200,539L201,542L204,548L206,550L208,550L212,544L214,534L217,528L218,520L219,517L224,502L225,499L225,490L226,486L229,475L234,468L236,463L236,459L233,450L233,446L234,444L235,437L237,432L235,421L237,415L237,412L242,395L249,381L251,373L256,367L256,358L258,354L262,350L264,347L263,343L264,339L270,328L270,324L269,320L265,311L265,307L268,301L268,298L267,297L269,293L271,287L272,284L264,275L257,279L244,290L237,293L223,293L216,294L210,295L206,295L204,293L202,288L204,283L209,275L211,263L213,259L203,251L203,240L201,238L198,234L194,237L193,237L190,232L185,232L183,235L180,235L182,231L180,229L184,228L184,224L183,222L179,223L172,237Z " data-fips="IS01" data-fips-="" data-iso3="ISR" data-name="HaDarom"/><path d="M226,86L221,92L213,91L212,93L211,106L209,117L207,127L207,128L203,146L203,149L210,149L216,149L219,152L222,153L223,146L225,142L242,131L242,131L236,128L232,132L231,132L225,131L221,122L224,121L222,118L230,113L230,109L233,109L234,105L234,103L236,99L234,90L230,88L230,85L227,82L226,86Z " data-fips="IS04" data-fips-="" data-iso3="ISR" data-name="Haifa"/><path d="M199,167L195,179L202,183L202,187L200,194L202,196L204,202L196,205L189,205L187,203L184,212L182,215L179,223L183,222L184,224L184,228L180,229L182,231L180,235L183,235L185,232L190,232L193,237L194,237L198,234L205,232L207,231L210,228L212,227L213,225L219,222L217,218L215,212L216,200L214,187L212,181L213,177L218,173L219,168L218,167L217,161L218,159L220,158L221,155L222,153L219,152L216,149L210,149L203,149L199,167Z " data-fips="IS02" data-fips-="" data-iso3="ISR" data-name="HaMerkaz"/><path d="M227,82L230,85L230,88L234,90L236,99L234,103L234,105L233,109L230,109L230,113L222,118L224,121L221,122L225,131L231,132L232,132L236,128L242,131L244,131L247,134L249,135L256,135L260,135L263,137L264,140L265,148L268,149L283,152L282,145L283,144L285,137L283,134L283,129L285,128L284,126L284,120L283,117L289,111L285,106L285,106L287,106L287,106L291,102L291,100L291,100L291,99L291,99L292,99L292,99L291,85L287,82L287,78L285,68L284,66L290,58L291,51L292,43L292,34L290,34L289,34L289,34L289,34L288,35L288,35L285,33L282,29L281,29L278,34L278,37L277,44L273,56L269,56L264,58L258,60L250,54L239,56L230,56L228,58L229,61L227,68L226,76L225,78L227,81L227,82Z " data-fips="IS03" data-fips-="" data-iso3="ISR" data-name="HaZafon"/><path d="M190,196L188,197L188,200L187,203L189,205L196,205L204,202L202,196L200,194L202,187L202,183L195,179L190,196Z " data-fips="IS05" data-fips-="" data-iso3="ISR" data-name="Tel Aviv"/><path d="M213,258L215,256L224,249L233,242L240,240L242,240L241,233L239,232L231,230L225,227L222,227L220,230L217,231L213,230L212,228L212,227L210,228L207,231L205,232L198,234L201,238L203,240L203,251L213,259L213,258Z " data-fips="IS06" data-fips-="" data-iso3="ISR" data-name="Jerusalem"/><path d="M288,35L288,35L289,34L289,34L289,34L292,34L292,38L292,43L291,51L290,58L284,66L285,68L287,78L287,82L291,85L292,99L292,99L291,99L291,99L291,100L291,100L291,102L287,106L287,106L285,106L285,106L285,108L289,111L291,112L297,107L303,103L305,102L308,98L314,91L315,87L315,86L316,82L320,75L317,70L315,56L316,54L311,52L314,45L313,41L311,40L310,33L306,30L310,24L305,21L311,18L311,15L310,14L306,20L300,23L294,28L287,31L288,35L288,35Z " data-fips="" data-fips-="" data-iso3="ISR" data-name="Golan"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/JOR.svg b/plugins/UserCountryMap/svg/JOR.svg
index a904f1a00c148aef6d7446f11fb45e7f1a49e5b6..1e65f8d83b4138b0e5040c61f660a8019a07f825 100644
--- a/plugins/UserCountryMap/svg/JOR.svg
+++ b/plugins/UserCountryMap/svg/JOR.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="29.9761292589" lon0="35.1987712554"/><bbox h="57.61" w="50.84" x="994.6" y="954.78"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M105,267L103,261L91,221L84,204L82,195L77,180L73,169L69,156L67,150L66,148L65,149L50,157L37,160L21,160L11,163L8,157L0,159L0,289L2,291L6,299L91,299L95,280L102,270L105,267Z " data-iso="EGY"/><path d="M75,150L75,146L84,135L82,132L77,138L66,148L67,150L69,156L75,150Z " data-iso="GAZ"/><path d="M312,14L317,28L330,70L326,71L329,82L340,79L343,85L335,93L347,95L383,100L402,103L408,105L450,128L450,0L334,0L327,5L312,14Z " data-iso="IRQ"/><path d="M154,55L160,44L158,41L157,35L159,32L155,23L156,17L157,13L155,14L144,23L143,26L141,24L139,25L137,33L133,36L122,35L116,36L115,43L111,52L106,66L100,92L93,112L82,131L82,132L84,135L75,146L75,150L69,156L73,169L77,180L82,195L84,204L91,221L103,261L105,267L109,262L114,235L118,224L117,221L118,209L118,206L120,200L123,190L131,170L134,161L133,155L133,148L135,138L133,138L125,142L116,146L105,147L103,144L108,131L112,126L121,121L121,119L117,117L113,115L109,117L110,111L108,95L111,83L114,76L121,71L131,73L132,76L137,79L140,80L141,65L143,61L150,58L153,58L154,55Z " data-iso="ISR"/><path d="M343,85L340,79L329,82L326,71L330,70L317,28L312,14L299,23L275,39L209,84L190,82L185,80L176,73L168,71L162,62L159,59L153,58L150,58L143,61L141,65L140,80L141,90L139,98L139,106L141,120L138,126L136,133L135,138L133,148L133,155L134,161L131,170L123,190L120,200L118,206L118,209L117,221L118,224L114,235L109,262L109,266L107,275L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L217,137L231,133L294,112L327,101L335,93L343,85Z " data-iso="JOR"/><path d="M116,36L122,35L133,36L137,33L139,25L141,24L143,26L144,23L155,14L157,13L159,11L162,7L165,5L162,0L132,0L128,9L124,16L121,24L119,31L116,36Z " data-iso="LBN"/><path d="M335,93L327,101L294,112L231,133L217,137L246,167L275,199L258,209L256,212L248,231L247,232L208,241L205,243L192,265L170,284L167,285L107,275L102,299L450,299L450,128L408,105L402,103L383,100L347,95L335,93Z " data-iso="SAU"/><path d="M157,13L156,17L155,23L159,32L157,35L158,41L160,44L154,55L153,58L159,59L162,62L168,71L176,73L185,80L190,82L209,84L275,39L299,23L312,14L327,5L334,0L162,0L165,5L162,7L159,11L157,13Z " data-iso="SYR"/><path d="M137,79L132,76L131,73L121,71L114,76L111,83L108,95L110,111L109,117L113,115L117,117L121,119L121,121L112,126L108,131L103,144L105,147L116,146L125,142L133,138L135,138L136,133L138,126L141,120L139,106L139,98L141,90L140,80L137,79Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,194L134,194L130,191L129,190L125,187L125,187L121,194L118,206L119,211L118,213L117,219L118,223L115,231L113,243L110,250L109,257L108,261L110,263L108,268L108,274L107,275L151,282L148,261L145,247L140,238L135,236L128,235L127,227L131,220L131,218L131,211L133,203L135,198L135,194Z " data-fips="JO21" data-fips-="" data-iso3="JOR" data-name="Aqaba"/><path d="M169,72L170,77L165,79L166,82L165,83L165,84L162,88L163,91L164,92L165,93L165,95L169,95L177,96L181,98L185,97L193,101L261,123L271,120L326,102L327,101L343,85L342,81L340,79L329,82L330,70L320,38L300,23L275,39L245,60L217,78L209,84L202,84L200,83L190,82L185,80L180,75L175,71L170,72L169,72Z " data-fips="JO15" data-fips-="JO10" data-iso3="JOR" data-name="Mafraq"/><path d="M161,102L160,103L151,110L147,112L146,114L150,115L149,118L149,119L151,119L156,119L156,125L155,126L155,130L158,133L156,142L155,143L156,145L156,150L156,151L157,153L173,153L232,152L217,137L217,137L219,136L204,121L202,121L199,122L194,120L191,116L191,115L194,111L192,109L187,104L173,106L167,108L163,104L161,102Z " data-fips="JO16" data-fips-="JO11" data-iso3="JOR" data-name="Amman"/><path d="M164,181L156,174L147,171L136,170L135,176L133,176L129,174L129,175L128,180L126,182L125,186L125,187L129,190L130,191L134,194L135,194L137,194L147,194L152,194L162,191L167,184L164,181Z " data-fips="JO12" data-fips-="" data-iso3="JOR" data-name="Tafilah"/><path d="M232,152L173,153L174,159L176,163L173,172L167,184L162,191L152,194L147,194L137,194L135,194L135,198L133,203L131,211L131,218L131,220L127,227L128,235L135,236L140,238L145,247L148,261L151,282L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L232,152Z " data-fips="JO19" data-fips-="JO07" data-iso3="JOR" data-name="Ma`an"/><path d="M141,93L141,93L145,93L145,93L144,89L149,82L155,80L156,79L158,82L159,83L161,82L162,82L164,83L165,83L166,82L165,79L170,77L169,72L168,72L165,66L165,63L161,62L159,60L153,58L147,59L145,61L143,61L141,64L142,69L141,72L140,78L140,84L141,90L141,93Z " data-fips="JO18" data-fips-="JO14" data-iso3="JOR" data-name="Irbid"/><path d="M158,82L156,79L155,80L149,82L144,89L145,93L145,93L146,94L147,95L148,95L150,92L156,86L158,84L159,83L158,82Z " data-fips="JO20" data-fips-="JO14" data-iso3="JOR" data-name="Ajlun"/><path d="M164,83L162,82L161,82L159,83L158,84L156,86L150,92L148,95L148,96L154,96L155,96L157,97L159,99L161,96L163,95L164,94L164,94L164,92L163,91L162,88L165,84L165,83L164,83Z " data-fips="JO22" data-fips-="JO14" data-iso3="JOR" data-name="Jarash"/><path d="M141,93L141,93L140,94L139,100L139,104L141,120L139,122L138,125L142,125L145,121L148,120L149,119L149,118L150,115L146,114L147,112L151,110L160,103L161,102L160,101L160,101L160,101L159,100L159,99L157,97L155,96L154,96L148,96L148,95L147,95L146,94L145,93L141,93Z " data-fips="JO02" data-fips-="" data-iso3="JOR" data-name="Balqa"/><path d="M156,142L158,133L155,130L155,126L156,125L156,119L151,119L149,119L148,120L145,121L142,125L138,125L136,128L136,133L135,138L135,141L141,141L148,143L153,142L155,143L156,142Z " data-fips="JO23" data-fips-="JO02" data-iso3="JOR" data-name="Madaba"/><path d="M153,142L148,143L141,141L135,141L135,142L133,148L132,153L134,162L132,168L131,173L129,174L133,176L135,176L136,170L147,171L156,174L164,181L167,184L173,172L176,163L174,159L173,153L157,153L156,151L156,150L156,145L155,143L153,142Z " data-fips="JO09" data-fips-="" data-iso3="JOR" data-name="Karak"/><path d="M164,92L164,94L164,94L163,95L161,96L159,99L159,100L160,101L160,101L160,101L161,102L163,104L167,108L173,106L187,104L192,109L194,111L191,115L191,116L194,120L199,122L202,121L204,121L219,136L261,123L193,101L185,97L181,98L177,96L169,95L165,95L165,93L164,92Z " data-fips="JO13" data-fips-="JO17" data-iso3="JOR" data-name="Zarqa"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="29.9761292589" lon0="35.1987712554"/><bbox h="57.61" w="50.84" x="994.6" y="954.78"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M105,267L103,261L91,221L84,204L82,195L77,180L73,169L69,156L67,150L66,148L65,149L50,157L37,160L21,160L11,163L8,157L0,159L0,289L2,291L6,299L91,299L95,280L102,270L105,267Z " data-iso="EGY"/><path d="M75,150L75,146L84,135L82,132L77,138L66,148L67,150L69,156L75,150Z " data-iso="PSE"/><path d="M312,14L317,28L330,70L326,71L329,82L340,79L343,85L335,93L347,95L383,100L402,103L408,105L450,128L450,0L334,0L327,5L312,14Z " data-iso="IRQ"/><path d="M154,55L160,44L158,41L157,35L159,32L155,23L156,17L157,13L155,14L144,23L143,26L141,24L139,25L137,33L133,36L122,35L116,36L115,43L111,52L106,66L100,92L93,112L82,131L82,132L84,135L75,146L75,150L69,156L73,169L77,180L82,195L84,204L91,221L103,261L105,267L109,262L114,235L118,224L117,221L118,209L118,206L120,200L123,190L131,170L134,161L133,155L133,148L135,138L133,138L125,142L116,146L105,147L103,144L108,131L112,126L121,121L121,119L117,117L113,115L109,117L110,111L108,95L111,83L114,76L121,71L131,73L132,76L137,79L140,80L141,65L143,61L150,58L153,58L154,55Z " data-iso="ISR"/><path d="M343,85L340,79L329,82L326,71L330,70L317,28L312,14L299,23L275,39L209,84L190,82L185,80L176,73L168,71L162,62L159,59L153,58L150,58L143,61L141,65L140,80L141,90L139,98L139,106L141,120L138,126L136,133L135,138L133,148L133,155L134,161L131,170L123,190L120,200L118,206L118,209L117,221L118,224L114,235L109,262L109,266L107,275L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L217,137L231,133L294,112L327,101L335,93L343,85Z " data-iso="JOR"/><path d="M116,36L122,35L133,36L137,33L139,25L141,24L143,26L144,23L155,14L157,13L159,11L162,7L165,5L162,0L132,0L128,9L124,16L121,24L119,31L116,36Z " data-iso="LBN"/><path d="M335,93L327,101L294,112L231,133L217,137L246,167L275,199L258,209L256,212L248,231L247,232L208,241L205,243L192,265L170,284L167,285L107,275L102,299L450,299L450,128L408,105L402,103L383,100L347,95L335,93Z " data-iso="SAU"/><path d="M157,13L156,17L155,23L159,32L157,35L158,41L160,44L154,55L153,58L159,59L162,62L168,71L176,73L185,80L190,82L209,84L275,39L299,23L312,14L327,5L334,0L162,0L165,5L162,7L159,11L157,13Z " data-iso="SYR"/><path d="M137,79L132,76L131,73L121,71L114,76L111,83L108,95L110,111L109,117L113,115L117,117L121,119L121,121L112,126L108,131L103,144L105,147L116,146L125,142L133,138L135,138L136,133L138,126L141,120L139,106L139,98L141,90L140,80L137,79Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,194L134,194L130,191L129,190L125,187L125,187L121,194L118,206L119,211L118,213L117,219L118,223L115,231L113,243L110,250L109,257L108,261L110,263L108,268L108,274L107,275L151,282L148,261L145,247L140,238L135,236L128,235L127,227L131,220L131,218L131,211L133,203L135,198L135,194Z " data-fips="JO21" data-fips-="" data-iso3="JOR" data-name="Aqaba"/><path d="M169,72L170,77L165,79L166,82L165,83L165,84L162,88L163,91L164,92L165,93L165,95L169,95L177,96L181,98L185,97L193,101L261,123L271,120L326,102L327,101L343,85L342,81L340,79L329,82L330,70L320,38L300,23L275,39L245,60L217,78L209,84L202,84L200,83L190,82L185,80L180,75L175,71L170,72L169,72Z " data-fips="JO15" data-fips-="JO10" data-iso3="JOR" data-name="Mafraq"/><path d="M161,102L160,103L151,110L147,112L146,114L150,115L149,118L149,119L151,119L156,119L156,125L155,126L155,130L158,133L156,142L155,143L156,145L156,150L156,151L157,153L173,153L232,152L217,137L217,137L219,136L204,121L202,121L199,122L194,120L191,116L191,115L194,111L192,109L187,104L173,106L167,108L163,104L161,102Z " data-fips="JO16" data-fips-="JO11" data-iso3="JOR" data-name="Amman"/><path d="M164,181L156,174L147,171L136,170L135,176L133,176L129,174L129,175L128,180L126,182L125,186L125,187L129,190L130,191L134,194L135,194L137,194L147,194L152,194L162,191L167,184L164,181Z " data-fips="JO12" data-fips-="" data-iso3="JOR" data-name="Tafilah"/><path d="M232,152L173,153L174,159L176,163L173,172L167,184L162,191L152,194L147,194L137,194L135,194L135,198L133,203L131,211L131,218L131,220L127,227L128,235L135,236L140,238L145,247L148,261L151,282L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L232,152Z " data-fips="JO19" data-fips-="JO07" data-iso3="JOR" data-name="Ma`an"/><path d="M141,93L141,93L145,93L145,93L144,89L149,82L155,80L156,79L158,82L159,83L161,82L162,82L164,83L165,83L166,82L165,79L170,77L169,72L168,72L165,66L165,63L161,62L159,60L153,58L147,59L145,61L143,61L141,64L142,69L141,72L140,78L140,84L141,90L141,93Z " data-fips="JO18" data-fips-="JO14" data-iso3="JOR" data-name="Irbid"/><path d="M158,82L156,79L155,80L149,82L144,89L145,93L145,93L146,94L147,95L148,95L150,92L156,86L158,84L159,83L158,82Z " data-fips="JO20" data-fips-="JO14" data-iso3="JOR" data-name="Ajlun"/><path d="M164,83L162,82L161,82L159,83L158,84L156,86L150,92L148,95L148,96L154,96L155,96L157,97L159,99L161,96L163,95L164,94L164,94L164,92L163,91L162,88L165,84L165,83L164,83Z " data-fips="JO22" data-fips-="JO14" data-iso3="JOR" data-name="Jarash"/><path d="M141,93L141,93L140,94L139,100L139,104L141,120L139,122L138,125L142,125L145,121L148,120L149,119L149,118L150,115L146,114L147,112L151,110L160,103L161,102L160,101L160,101L160,101L159,100L159,99L157,97L155,96L154,96L148,96L148,95L147,95L146,94L145,93L141,93Z " data-fips="JO02" data-fips-="" data-iso3="JOR" data-name="Balqa"/><path d="M156,142L158,133L155,130L155,126L156,125L156,119L151,119L149,119L148,120L145,121L142,125L138,125L136,128L136,133L135,138L135,141L141,141L148,143L153,142L155,143L156,142Z " data-fips="JO23" data-fips-="JO02" data-iso3="JOR" data-name="Madaba"/><path d="M153,142L148,143L141,141L135,141L135,142L133,148L132,153L134,162L132,168L131,173L129,174L133,176L135,176L136,170L147,171L156,174L164,181L167,184L173,172L176,163L174,159L173,153L157,153L156,151L156,150L156,145L155,143L153,142Z " data-fips="JO09" data-fips-="" data-iso3="JOR" data-name="Karak"/><path d="M164,92L164,94L164,94L163,95L161,96L159,99L159,100L160,101L160,101L160,101L161,102L163,104L167,108L173,106L187,104L192,109L194,111L191,115L191,116L194,120L199,122L202,121L204,121L219,136L261,123L193,101L185,97L181,98L177,96L169,95L165,95L165,93L164,92Z " data-fips="JO13" data-fips-="JO17" data-iso3="JOR" data-name="Zarqa"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/KEN.svg b/plugins/UserCountryMap/svg/KEN.svg
index 3570343d775f4f6a2a6356f3104cb9166f3ed1d9..e9e6ba89aa06bf1116fdf83030b723b79816ee69 100644
--- a/plugins/UserCountryMap/svg/KEN.svg
+++ b/plugins/UserCountryMap/svg/KEN.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 451" height="451px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 451" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="0.691043402681" lon0="38.4607587629"/><bbox h="137.33" w="110.39" x="937.69" y="934.82"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M120,19L120,21L122,24L128,22L139,25L141,28L139,41L140,47L146,55L148,59L153,61L182,62L186,63L205,75L233,94L239,95L254,96L260,97L279,101L290,102L292,101L296,97L302,90L304,86L311,82L341,69L356,81L359,82L380,80L386,80L387,78L392,74L400,71L405,71L423,68L428,61L432,57L436,53L450,47L450,0L108,0L109,5L112,12L119,19L120,19Z " data-iso="ETH"/><path d="M350,328L355,326L354,323L350,326L350,328Z M120,19L113,27L84,54L76,63L68,71L74,84L75,87L79,90L84,92L86,95L85,103L87,113L90,115L92,123L100,131L101,135L105,141L104,143L105,151L107,158L108,166L107,175L100,185L101,190L95,193L88,199L85,206L79,213L75,217L73,221L70,229L66,234L65,242L65,257L64,275L64,281L67,281L215,364L216,365L217,374L215,378L214,383L216,383L220,388L231,396L278,430L279,430L279,429L282,427L285,428L290,422L303,394L305,385L310,376L315,372L315,369L318,363L318,355L319,349L322,347L327,344L336,343L343,338L343,335L347,333L347,327L346,323L350,320L355,321L361,319L366,316L372,309L372,304L350,276L350,219L349,127L350,126L364,112L381,88L386,80L380,80L359,82L356,81L341,69L311,82L304,86L302,90L296,97L292,101L290,102L279,101L260,97L254,96L239,95L233,94L205,75L186,63L182,62L153,61L148,59L146,55L140,47L139,41L141,28L139,25L128,22L122,24L120,21L120,19Z " data-iso="KEN"/><path d="M68,71L76,63L84,54L113,27L120,19L119,19L112,12L109,5L108,0L0,0L0,92L2,91L10,89L22,87L28,84L35,88L41,89L48,89L58,80L68,71Z " data-iso="SDS"/><path d="M386,80L381,88L364,112L350,126L349,127L350,219L350,276L372,304L372,309L376,305L380,299L390,280L400,271L407,262L410,259L414,254L420,248L450,216L450,47L436,53L432,57L428,61L423,68L405,71L400,71L392,74L387,78L386,80Z " data-iso="SOM"/><path d="M305,449L305,439L301,440L297,440L298,447L298,449L305,449Z M279,430L278,430L231,396L220,388L216,383L214,383L215,378L217,374L216,365L215,364L67,281L64,281L60,281L46,281L24,281L0,281L0,449L274,449L275,442L278,434L279,430Z " data-iso="TZA"/><path d="M64,281L64,275L65,257L65,242L66,234L70,229L73,221L75,217L79,213L85,206L88,199L95,193L101,190L100,185L107,175L108,166L107,158L105,151L104,143L105,141L101,135L100,131L92,123L90,115L87,113L85,103L86,95L84,92L79,90L75,87L74,84L68,71L58,80L48,89L41,89L35,88L28,84L22,87L10,89L2,91L0,92L0,281L24,281L46,281L60,281L64,281Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,62L151,109L153,111L155,115L154,120L159,121L159,122L164,125L167,131L167,134L170,138L172,144L174,144L179,139L183,149L185,151L189,159L195,160L200,164L202,168L204,169L205,173L209,177L211,183L212,184L222,181L227,184L227,190L231,195L232,209L230,209L226,211L217,214L212,218L207,217L204,216L201,211L193,209L186,211L186,213L184,217L203,220L204,224L205,227L204,232L200,237L194,240L193,240L194,241L207,258L207,263L209,265L209,271L203,273L200,272L199,276L204,280L204,283L197,285L195,290L195,291L194,292L191,294L188,294L185,298L184,298L184,299L189,300L188,302L189,305L196,313L195,315L201,322L203,322L214,328L218,329L217,331L216,334L213,336L226,350L226,351L226,353L227,353L234,350L236,350L241,354L244,359L248,361L251,360L254,362L262,364L272,363L255,338L262,335L269,320L269,318L268,312L270,309L270,287L265,276L246,244L248,244L252,242L259,243L260,244L259,235L260,232L257,223L258,221L261,220L263,217L276,212L282,204L288,201L281,183L282,182L288,179L284,175L279,172L275,166L271,161L268,152L265,140L268,138L274,126L275,123L281,120L282,100L280,101L266,99L256,96L252,95L251,94L245,96L237,95L229,91L194,68L190,65L183,62L175,62L174,62L160,62L157,62L151,62Z " data-fips="KE03" data-fips-="" data-iso3="KEN" data-name="Eastern"/><path d="M91,196L94,200L98,204L102,207L108,205L113,206L115,212L112,216L107,216L105,218L103,218L102,221L105,222L106,226L105,234L100,240L99,241L99,241L106,243L108,242L111,243L112,242L117,242L120,247L121,251L115,248L114,246L111,250L109,256L110,259L111,269L111,271L108,277L97,280L94,280L92,281L95,289L97,298L215,364L216,365L217,370L223,369L223,369L224,362L226,353L226,351L226,350L213,336L216,334L217,331L218,329L214,328L203,322L201,322L195,315L196,313L189,305L188,302L189,300L184,299L184,298L183,297L182,297L178,294L176,293L176,293L169,292L171,286L173,285L172,278L170,274L170,270L169,266L165,264L165,258L164,257L159,257L157,252L157,250L158,244L159,241L168,237L170,239L175,241L171,244L172,246L178,247L182,246L184,247L183,250L185,253L188,253L190,250L190,246L191,243L193,240L194,240L200,237L204,232L205,227L204,224L203,220L184,217L186,213L186,211L193,209L201,211L204,216L207,217L212,218L217,214L226,211L230,209L232,209L231,195L227,190L227,184L222,181L212,184L211,183L209,177L205,173L204,169L202,168L200,164L195,160L189,159L185,151L183,149L179,139L174,144L172,144L170,138L167,134L167,131L164,125L159,122L159,121L154,120L155,115L153,111L151,109L151,62L151,62L147,58L146,55L141,49L139,45L139,37L142,33L141,26L135,24L132,24L130,23L126,23L124,24L121,25L119,22L120,20L84,54L69,71L71,80L73,81L72,84L77,86L75,86L79,90L80,91L87,94L86,99L84,101L84,105L87,114L89,114L94,125L98,126L100,133L101,136L105,140L105,143L103,145L103,146L107,156L107,161L109,164L108,165L108,173L106,177L103,180L102,183L100,185L101,190L99,192L92,194L91,196L91,196Z " data-fips="KE08" data-fips-="" data-iso3="KEN" data-name="Rift Valley"/><path d="M91,197L88,197L87,201L85,206L80,212L79,213L74,218L71,225L72,226L64,236L64,237L66,244L71,236L73,232L78,229L83,229L85,232L87,234L89,239L89,241L98,242L99,241L100,240L105,234L106,226L105,222L102,221L103,218L105,218L107,216L112,216L115,212L113,206L108,205L102,207L98,204L94,200L91,196L91,197Z " data-fips="KE09" data-fips-="" data-iso3="KEN" data-name="Western"/><path d="M282,100L281,120L275,123L274,126L268,138L265,140L268,152L271,161L275,166L279,172L284,175L288,179L282,182L281,183L288,201L282,204L276,212L263,217L261,220L258,221L257,223L260,232L259,235L260,244L267,245L269,243L272,243L276,246L282,246L289,250L291,252L293,254L296,261L299,265L300,265L303,270L305,279L308,285L307,287L310,290L312,302L315,307L315,311L315,315L316,316L317,325L319,324L351,310L372,309L372,306L372,304L350,276L349,241L349,160L349,127L350,126L364,112L373,100L386,81L382,81L381,80L368,82L359,82L355,81L353,80L349,75L347,74L341,68L338,70L326,75L325,76L318,78L304,85L300,93L293,100L292,103L282,100L282,100Z " data-fips="KE06" data-fips-="" data-iso3="KEN" data-name="North-Eastern"/><path d="M357,325L356,324L353,325L350,326L351,328L357,325Z M226,353L224,362L223,369L223,369L217,370L218,375L213,378L214,383L218,383L220,388L278,430L281,427L286,428L288,424L288,426L290,422L291,419L297,407L297,406L293,405L297,401L297,404L302,399L305,390L302,387L302,386L305,387L309,377L316,372L318,363L317,359L318,354L317,353L320,348L326,344L335,344L339,341L342,333L344,332L349,333L347,328L347,325L345,321L347,322L348,324L349,324L350,319L350,322L351,323L355,321L358,321L364,318L368,315L372,309L372,309L351,310L319,324L317,325L316,316L315,315L315,311L315,307L312,302L310,290L307,287L308,285L305,279L303,270L300,265L299,265L296,261L293,254L291,252L289,250L282,246L276,246L272,243L269,243L267,245L260,244L259,243L252,242L248,244L246,244L265,276L270,287L270,309L268,312L269,318L269,320L262,335L255,338L272,363L262,364L254,362L251,360L248,361L244,359L241,354L236,350L234,350L227,353L226,353Z " data-fips="KE02" data-fips-="" data-iso3="KEN" data-name="Coast"/><path d="M191,243L190,246L190,250L188,253L185,253L183,250L184,247L182,246L178,247L172,246L171,244L175,241L170,239L168,237L159,241L158,244L157,250L157,252L159,257L164,257L165,258L165,264L169,266L170,270L170,274L172,278L173,285L171,286L169,292L176,293L176,293L177,292L185,288L187,287L189,290L194,290L195,291L195,290L197,285L204,283L204,280L199,276L200,272L203,273L209,271L209,265L207,263L207,258L194,241L193,240L191,243Z " data-fips="KE01" data-fips-="" data-iso3="KEN" data-name="Central"/><path d="M194,290L189,290L187,287L185,288L177,292L176,293L178,294L182,297L183,297L184,298L185,298L188,294L191,294L194,292L195,291L194,290Z " data-fips="KE05" data-fips-="" data-iso3="KEN" data-name="Nairobi"/><path d="M98,242L89,241L89,239L87,234L85,232L83,229L78,229L73,232L71,236L66,244L66,246L66,247L64,268L64,281L68,281L70,283L97,298L95,289L92,281L94,280L97,280L108,277L111,271L111,269L110,259L109,256L111,250L114,246L115,248L121,251L120,247L117,242L112,242L111,243L108,242L106,243L99,241L99,241L98,242Z " data-fips="KE07" data-fips-="" data-iso3="KEN" data-name="Nyanza"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="0.691043402681" lon0="38.4607587629"/><bbox h="137.33" w="110.39" x="937.69" y="934.82"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M120,19L120,21L122,24L128,22L139,25L141,28L139,41L140,47L146,55L148,59L153,61L182,62L186,63L205,75L233,94L239,95L254,96L260,97L279,101L290,102L292,101L296,97L302,90L304,86L311,82L341,69L356,81L359,82L380,80L386,80L387,78L392,74L400,71L405,71L423,68L428,61L432,57L436,53L450,47L450,0L108,0L109,5L112,12L119,19L120,19Z " data-iso="ETH"/><path d="M350,328L355,326L354,323L350,326L350,328Z M120,19L113,27L84,54L76,63L68,71L74,84L75,87L79,90L84,92L86,95L85,103L87,113L90,115L92,123L100,131L101,135L105,141L104,143L105,151L107,158L108,166L107,175L100,185L101,190L95,193L88,199L85,206L79,213L75,217L73,221L70,229L66,234L65,242L65,257L64,275L64,281L67,281L215,364L216,365L217,374L215,378L214,383L216,383L220,388L231,396L278,430L279,430L279,429L282,427L285,428L290,422L303,394L305,385L310,376L315,372L315,369L318,363L318,355L319,349L322,347L327,344L336,343L343,338L343,335L347,333L347,327L346,323L350,320L355,321L361,319L366,316L372,309L372,304L350,276L350,219L349,127L350,126L364,112L381,88L386,80L380,80L359,82L356,81L341,69L311,82L304,86L302,90L296,97L292,101L290,102L279,101L260,97L254,96L239,95L233,94L205,75L186,63L182,62L153,61L148,59L146,55L140,47L139,41L141,28L139,25L128,22L122,24L120,21L120,19Z " data-iso="KEN"/><path d="M68,71L76,63L84,54L113,27L120,19L119,19L112,12L109,5L108,0L0,0L0,92L2,91L10,89L22,87L28,84L35,88L41,89L48,89L58,80L68,71Z " data-iso="SSD"/><path d="M386,80L381,88L364,112L350,126L349,127L350,219L350,276L372,304L372,309L376,305L380,299L390,280L400,271L407,262L410,259L414,254L420,248L450,216L450,47L436,53L432,57L428,61L423,68L405,71L400,71L392,74L387,78L386,80Z " data-iso="SOM"/><path d="M305,449L305,439L301,440L297,440L298,447L298,449L305,449Z M279,430L278,430L231,396L220,388L216,383L214,383L215,378L217,374L216,365L215,364L67,281L64,281L60,281L46,281L24,281L0,281L0,449L274,449L275,442L278,434L279,430Z " data-iso="TZA"/><path d="M64,281L64,275L65,257L65,242L66,234L70,229L73,221L75,217L79,213L85,206L88,199L95,193L101,190L100,185L107,175L108,166L107,158L105,151L104,143L105,141L101,135L100,131L92,123L90,115L87,113L85,103L86,95L84,92L79,90L75,87L74,84L68,71L58,80L48,89L41,89L35,88L28,84L22,87L10,89L2,91L0,92L0,281L24,281L46,281L60,281L64,281Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,62L151,109L153,111L155,115L154,120L159,121L159,122L164,125L167,131L167,134L170,138L172,144L174,144L179,139L183,149L185,151L189,159L195,160L200,164L202,168L204,169L205,173L209,177L211,183L212,184L222,181L227,184L227,190L231,195L232,209L230,209L226,211L217,214L212,218L207,217L204,216L201,211L193,209L186,211L186,213L184,217L203,220L204,224L205,227L204,232L200,237L194,240L193,240L194,241L207,258L207,263L209,265L209,271L203,273L200,272L199,276L204,280L204,283L197,285L195,290L195,291L194,292L191,294L188,294L185,298L184,298L184,299L189,300L188,302L189,305L196,313L195,315L201,322L203,322L214,328L218,329L217,331L216,334L213,336L226,350L226,351L226,353L227,353L234,350L236,350L241,354L244,359L248,361L251,360L254,362L262,364L272,363L255,338L262,335L269,320L269,318L268,312L270,309L270,287L265,276L246,244L248,244L252,242L259,243L260,244L259,235L260,232L257,223L258,221L261,220L263,217L276,212L282,204L288,201L281,183L282,182L288,179L284,175L279,172L275,166L271,161L268,152L265,140L268,138L274,126L275,123L281,120L282,100L280,101L266,99L256,96L252,95L251,94L245,96L237,95L229,91L194,68L190,65L183,62L175,62L174,62L160,62L157,62L151,62Z " data-fips="KE03" data-fips-="" data-iso3="KEN" data-name="Eastern"/><path d="M91,196L94,200L98,204L102,207L108,205L113,206L115,212L112,216L107,216L105,218L103,218L102,221L105,222L106,226L105,234L100,240L99,241L99,241L106,243L108,242L111,243L112,242L117,242L120,247L121,251L115,248L114,246L111,250L109,256L110,259L111,269L111,271L108,277L97,280L94,280L92,281L95,289L97,298L215,364L216,365L217,370L223,369L223,369L224,362L226,353L226,351L226,350L213,336L216,334L217,331L218,329L214,328L203,322L201,322L195,315L196,313L189,305L188,302L189,300L184,299L184,298L183,297L182,297L178,294L176,293L176,293L169,292L171,286L173,285L172,278L170,274L170,270L169,266L165,264L165,258L164,257L159,257L157,252L157,250L158,244L159,241L168,237L170,239L175,241L171,244L172,246L178,247L182,246L184,247L183,250L185,253L188,253L190,250L190,246L191,243L193,240L194,240L200,237L204,232L205,227L204,224L203,220L184,217L186,213L186,211L193,209L201,211L204,216L207,217L212,218L217,214L226,211L230,209L232,209L231,195L227,190L227,184L222,181L212,184L211,183L209,177L205,173L204,169L202,168L200,164L195,160L189,159L185,151L183,149L179,139L174,144L172,144L170,138L167,134L167,131L164,125L159,122L159,121L154,120L155,115L153,111L151,109L151,62L151,62L147,58L146,55L141,49L139,45L139,37L142,33L141,26L135,24L132,24L130,23L126,23L124,24L121,25L119,22L120,20L84,54L69,71L71,80L73,81L72,84L77,86L75,86L79,90L80,91L87,94L86,99L84,101L84,105L87,114L89,114L94,125L98,126L100,133L101,136L105,140L105,143L103,145L103,146L107,156L107,161L109,164L108,165L108,173L106,177L103,180L102,183L100,185L101,190L99,192L92,194L91,196L91,196Z " data-fips="KE08" data-fips-="" data-iso3="KEN" data-name="Rift Valley"/><path d="M91,197L88,197L87,201L85,206L80,212L79,213L74,218L71,225L72,226L64,236L64,237L66,244L71,236L73,232L78,229L83,229L85,232L87,234L89,239L89,241L98,242L99,241L100,240L105,234L106,226L105,222L102,221L103,218L105,218L107,216L112,216L115,212L113,206L108,205L102,207L98,204L94,200L91,196L91,197Z " data-fips="KE09" data-fips-="" data-iso3="KEN" data-name="Western"/><path d="M282,100L281,120L275,123L274,126L268,138L265,140L268,152L271,161L275,166L279,172L284,175L288,179L282,182L281,183L288,201L282,204L276,212L263,217L261,220L258,221L257,223L260,232L259,235L260,244L267,245L269,243L272,243L276,246L282,246L289,250L291,252L293,254L296,261L299,265L300,265L303,270L305,279L308,285L307,287L310,290L312,302L315,307L315,311L315,315L316,316L317,325L319,324L351,310L372,309L372,306L372,304L350,276L349,241L349,160L349,127L350,126L364,112L373,100L386,81L382,81L381,80L368,82L359,82L355,81L353,80L349,75L347,74L341,68L338,70L326,75L325,76L318,78L304,85L300,93L293,100L292,103L282,100L282,100Z " data-fips="KE06" data-fips-="" data-iso3="KEN" data-name="North-Eastern"/><path d="M357,325L356,324L353,325L350,326L351,328L357,325Z M226,353L224,362L223,369L223,369L217,370L218,375L213,378L214,383L218,383L220,388L278,430L281,427L286,428L288,424L288,426L290,422L291,419L297,407L297,406L293,405L297,401L297,404L302,399L305,390L302,387L302,386L305,387L309,377L316,372L318,363L317,359L318,354L317,353L320,348L326,344L335,344L339,341L342,333L344,332L349,333L347,328L347,325L345,321L347,322L348,324L349,324L350,319L350,322L351,323L355,321L358,321L364,318L368,315L372,309L372,309L351,310L319,324L317,325L316,316L315,315L315,311L315,307L312,302L310,290L307,287L308,285L305,279L303,270L300,265L299,265L296,261L293,254L291,252L289,250L282,246L276,246L272,243L269,243L267,245L260,244L259,243L252,242L248,244L246,244L265,276L270,287L270,309L268,312L269,318L269,320L262,335L255,338L272,363L262,364L254,362L251,360L248,361L244,359L241,354L236,350L234,350L227,353L226,353Z " data-fips="KE02" data-fips-="" data-iso3="KEN" data-name="Coast"/><path d="M191,243L190,246L190,250L188,253L185,253L183,250L184,247L182,246L178,247L172,246L171,244L175,241L170,239L168,237L159,241L158,244L157,250L157,252L159,257L164,257L165,258L165,264L169,266L170,270L170,274L172,278L173,285L171,286L169,292L176,293L176,293L177,292L185,288L187,287L189,290L194,290L195,291L195,290L197,285L204,283L204,280L199,276L200,272L203,273L209,271L209,265L207,263L207,258L194,241L193,240L191,243Z " data-fips="KE01" data-fips-="" data-iso3="KEN" data-name="Central"/><path d="M194,290L189,290L187,287L185,288L177,292L176,293L178,294L182,297L183,297L184,298L185,298L188,294L191,294L194,292L195,291L194,290Z " data-fips="KE05" data-fips-="" data-iso3="KEN" data-name="Nairobi"/><path d="M98,242L89,241L89,239L87,234L85,232L83,229L78,229L73,232L71,236L66,244L66,246L66,247L64,268L64,281L68,281L70,283L97,298L95,289L92,281L94,280L97,280L108,277L111,271L111,269L110,259L109,256L111,250L114,246L115,248L121,251L120,247L117,242L112,242L111,243L108,242L106,243L99,241L99,241L98,242Z " data-fips="KE07" data-fips-="" data-iso3="KEN" data-name="Nyanza"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SAU.svg b/plugins/UserCountryMap/svg/SAU.svg
index aefdea80253b075f99fc1b674df4e60f9964451b..a294832ffb7968f6425ea88d1ac9e21f13ed0446 100644
--- a/plugins/UserCountryMap/svg/SAU.svg
+++ b/plugins/UserCountryMap/svg/SAU.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="24.9427672386" lon0="39.9504406811"/><bbox h="222.51" w="266.84" x="926.21" y="897.14"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M443,32L449,33L450,34L450,20L448,23L446,27L443,32Z M450,0L436,0L450,5L450,6L450,0Z " data-iso="AFG"/><path d="M346,140L347,137L344,139L346,140Z M384,105L382,110L377,116L371,124L365,132L362,138L355,142L342,142L336,142L329,146L324,145L321,141L320,142L320,144L337,163L376,164L377,163L377,160L377,154L380,143L379,142L383,134L382,126L385,125L386,127L391,123L390,122L389,113L388,112L386,112L386,111L384,105L384,105Z " data-iso="ARE"/><path d="M304,116L303,112L301,115L304,116Z " data-iso="BHR"/><path d="M98,186L97,185L91,180L88,176L83,174L80,170L78,165L78,155L78,154L82,154L73,145L64,124L61,119L57,110L56,108L54,98L53,96L51,90L51,87L46,82L42,75L39,65L35,57L37,53L39,52L41,59L45,67L47,76L54,85L58,88L61,90L64,84L65,80L67,73L69,65L71,62L72,62L69,50L67,45L65,36L64,33L63,31L63,31L63,31L56,33L48,32L40,33L37,30L33,33L29,29L34,29L32,26L18,26L12,26L10,25L0,30L0,182L11,183L13,180L14,183L27,184L92,186L98,187L98,186Z " data-iso="EGY"/><path d="M148,291L146,289L145,293L152,293L148,291Z M124,253L118,260L106,265L105,268L98,269L96,276L96,281L89,299L141,299L138,294L136,290L134,288L133,283L132,274L128,263L124,253Z M147,299L143,295L142,298L147,299Z " data-iso="ERI"/><path d="M65,31L65,30L67,26L66,28L63,31L63,31L64,33L65,31Z " data-iso="GAZ"/><path d="M384,91L382,90L372,98L377,96L381,95L384,91Z M231,0L231,3L237,5L245,11L248,10L251,16L256,21L254,28L255,34L259,34L260,43L265,46L267,50L268,51L269,51L273,48L274,41L278,43L274,44L283,49L289,45L290,45L293,51L299,58L300,62L303,63L303,66L310,77L310,78L314,82L328,85L332,90L348,98L356,98L360,99L366,99L373,95L376,91L380,89L382,87L391,86L392,87L403,107L412,108L413,109L425,108L429,110L435,108L437,109L443,109L449,109L450,107L450,39L448,37L446,35L443,32L443,32L446,27L448,23L450,20L450,6L450,5L436,0L231,0Z " data-iso="IRN"/><path d="M134,19L137,20L151,22L168,32L178,39L182,42L214,66L238,68L240,67L242,64L248,51L253,50L260,51L260,51L266,51L267,51L268,51L267,50L265,46L260,43L259,34L255,34L254,28L256,21L251,16L248,10L245,11L237,5L231,3L231,0L129,0L131,13L132,16L136,17L134,19Z " data-iso="IRQ"/><path d="M77,4L73,17L71,21L68,26L67,26L65,30L65,31L64,33L65,36L67,45L69,50L72,62L73,60L76,50L77,44L81,31L81,29L81,29L73,31L75,25L78,24L76,23L75,17L76,12L78,11L82,14L83,14L84,10L84,9L86,8L87,8L87,7L89,5L89,2L88,0L83,0L83,2L82,2L77,2L77,4Z " data-iso="ISR"/><path d="M87,8L86,8L84,9L84,10L83,14L83,16L83,20L83,24L81,27L81,29L81,31L77,44L76,50L73,60L73,62L73,64L89,67L117,46L102,29L131,21L134,19L136,17L132,16L131,13L129,0L126,0L101,15L96,15L90,12L88,9L87,8Z " data-iso="JOR"/><path d="M265,57L266,54L262,54L265,57Z M260,51L253,50L248,51L242,64L240,67L243,67L253,68L257,75L268,75L268,73L264,68L262,61L257,61L260,57L263,58L260,52L260,51Z " data-iso="KWT"/><path d="M77,2L82,2L83,2L83,0L79,0L78,1L77,2Z " data-iso="LBN"/><path d="M435,197L438,192L437,189L434,195L435,197Z M377,163L378,164L385,173L378,208L335,228L333,229L334,230L347,256L348,256L353,266L357,265L362,264L369,259L373,258L380,259L384,257L387,252L386,249L389,243L391,242L403,239L406,236L407,228L414,222L424,219L421,206L423,197L425,193L427,195L431,195L436,182L444,170L448,158L447,157L441,155L429,142L426,141L422,141L419,140L411,140L405,139L400,135L393,127L391,123L386,127L385,125L382,126L383,134L379,142L380,143L377,154L377,160L377,163Z M384,105L386,111L386,112L388,112L388,111L389,104L385,103L384,105Z " data-iso="OMN"/><path d="M443,32L446,35L448,37L450,39L450,34L449,33L443,32Z " data-iso="PAK"/><path d="M317,136L319,132L319,127L317,121L317,119L315,113L313,111L308,119L306,124L308,133L308,134L309,136L315,137L317,136Z " data-iso="QAT"/><path d="M177,274L177,271L174,273L177,274Z M134,19L131,21L102,29L117,46L89,67L73,64L70,74L70,78L67,85L68,84L75,86L78,91L81,96L83,99L84,102L90,110L94,118L96,119L96,122L103,132L105,143L108,149L114,151L120,155L122,159L129,172L132,180L130,189L132,195L132,198L134,204L144,215L147,216L153,220L158,224L168,246L173,255L178,259L182,262L186,272L188,273L190,278L190,280L195,275L196,263L200,261L206,263L221,261L231,263L246,264L252,263L256,268L259,268L264,265L268,257L274,247L288,239L290,238L330,230L333,229L335,228L378,208L385,173L378,164L377,163L376,164L337,163L320,144L320,142L320,142L316,141L317,139L316,137L315,137L309,136L308,134L307,133L304,130L303,126L298,121L297,113L297,110L294,106L296,104L293,101L289,100L286,96L280,92L281,91L276,89L275,85L269,76L268,75L257,75L253,68L243,67L240,67L238,68L214,66L182,42L178,39L168,32L151,22L137,20L134,19Z " data-iso="SAU"/><path d="M123,252L119,250L106,239L104,235L103,227L103,223L103,211L102,201L103,200L101,198L98,190L98,187L92,186L27,184L14,183L13,180L11,183L0,182L0,299L89,299L96,281L96,276L98,269L105,268L106,265L118,260L124,253L123,252Z " data-iso="SDN"/><path d="M87,8L88,9L90,12L96,15L101,15L126,0L88,0L89,2L89,5L87,7L87,8Z " data-iso="SYR"/><path d="M82,14L78,11L76,12L75,17L76,23L78,24L75,25L73,31L81,29L81,29L81,27L83,24L83,20L83,16L83,14L82,14Z " data-iso="WEB"/><path d="M353,266L348,256L347,256L334,230L333,229L330,230L290,238L288,239L274,247L268,257L264,265L259,268L256,268L252,263L246,264L231,263L221,261L206,263L200,261L196,263L195,275L190,280L191,285L189,292L191,296L189,299L310,299L315,296L327,292L341,284L340,279L341,275L346,270L353,266Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M142,109L141,109L135,110L133,109L128,107L123,106L122,107L115,102L112,97L109,99L104,97L99,100L102,109L104,110L104,113L105,119L106,118L109,120L112,124L114,129L115,129L116,139L109,142L106,144L108,147L115,151L116,152L122,158L124,162L125,163L125,163L129,163L137,169L142,168L145,170L148,179L151,177L156,177L167,166L165,164L172,159L174,154L176,154L176,153L176,148L177,144L177,143L176,142L174,138L171,136L170,130L167,128L167,128L165,128L161,127L157,128L154,131L145,131L145,126L144,121L145,116L142,114L143,111L143,110L142,109Z " data-fips="SA05" data-fips-="" data-iso3="SAU" data-name="Al Madinah"/><path d="M213,100L211,102L208,101L204,98L202,98L194,103L192,106L183,112L177,119L178,120L174,121L175,125L167,128L167,128L167,128L170,130L171,136L174,138L176,142L177,143L177,143L180,141L182,141L191,142L192,138L196,133L201,132L207,127L216,126L215,120L211,113L211,111L214,106L217,102L215,100L214,99L213,100Z " data-fips="SA08" data-fips-="" data-iso3="SAU" data-name="Al Quassim"/><path d="M216,94L211,90L205,89L201,81L200,80L197,82L191,81L189,78L185,78L181,75L175,74L170,74L164,73L156,75L155,75L153,74L153,74L147,76L141,79L139,80L133,83L131,85L131,85L138,87L143,92L144,98L148,101L143,110L143,110L143,111L142,114L145,116L144,121L145,126L145,131L154,131L157,128L161,127L165,128L167,128L167,128L175,125L174,121L178,120L177,119L183,112L192,106L194,103L202,98L204,98L208,101L211,102L213,100L214,99L214,99L214,97L214,96L215,95L216,94L216,94Z " data-fips="SA13" data-fips-="" data-iso3="SAU" data-name="Ha'il"/><path d="M71,72L70,78L67,84L76,86L75,86L80,95L82,98L84,102L87,106L94,118L96,120L96,122L97,124L102,129L104,135L104,139L105,143L106,144L109,142L116,139L115,129L114,129L112,124L109,120L106,118L105,119L104,113L104,110L102,109L99,100L104,97L109,99L112,97L115,102L122,107L123,106L128,107L133,109L135,110L141,109L142,109L143,110L143,110L148,101L144,98L143,92L138,87L131,85L131,85L130,84L126,85L125,84L118,83L115,82L113,80L113,73L108,78L100,76L94,78L90,72L88,71L81,70L78,71L71,71L71,72Z " data-fips="SA19" data-fips-="" data-iso3="SAU" data-name="Tabuk"/><path d="M117,25L115,32L120,39L134,38L144,40L148,42L159,43L162,45L167,46L169,48L173,52L171,55L159,62L156,65L156,72L153,74L155,75L156,75L164,73L170,74L175,74L181,75L185,78L189,78L191,81L197,82L200,80L201,81L205,89L211,90L216,94L216,94L216,94L217,95L218,95L219,94L219,94L222,86L227,76L230,72L239,67L238,68L214,66L201,57L185,45L175,36L151,22L134,19L131,21L117,25Z " data-fips="SA15" data-fips-="" data-iso3="SAU" data-name="Al Hudud ash Shamaliyah"/><path d="M117,25L103,29L117,46L109,54L99,56L95,62L89,67L72,64L71,71L71,71L78,71L81,70L88,71L90,72L94,78L100,76L108,78L113,73L113,80L115,82L118,83L125,84L126,85L130,84L131,85L133,83L139,80L141,79L147,76L153,74L153,74L156,72L156,65L159,62L171,55L173,52L169,48L167,46L162,45L159,43L148,42L144,40L134,38L120,39L115,32L117,25L117,25Z " data-fips="SA03" data-fips-="SA20" data-iso3="SAU" data-name="Al Jawf"/><path d="M176,209L169,210L168,208L165,208L164,214L162,216L160,217L158,219L161,222L161,227L165,231L167,230L169,224L172,224L172,223L174,220L175,217L177,215L176,212L177,210L176,209Z " data-fips="SA02" data-fips-="" data-iso3="SAU" data-name="Al Bahah"/><path d="M216,227L210,221L207,217L208,210L205,205L202,203L201,204L191,206L187,209L181,214L179,213L177,210L177,210L176,212L177,215L175,217L174,220L172,223L173,223L175,225L174,227L175,230L173,233L168,234L167,238L173,241L174,246L174,248L175,248L176,252L178,252L181,255L188,258L189,255L192,253L192,255L197,259L199,261L199,261L202,261L203,262L203,262L204,253L204,248L211,240L214,239L215,236L214,233L216,229L216,227L216,227Z " data-fips="SA11" data-fips-="" data-iso3="SAU" data-name="`Asir"/><path d="M176,274L175,272L174,273L177,275L180,277L180,274L176,274Z M177,271L175,271L176,273L177,271Z M174,248L173,249L173,249L172,250L171,251L171,251L174,255L182,262L183,269L184,267L189,274L190,278L195,276L197,273L195,271L196,266L197,265L198,262L199,261L197,259L192,255L192,253L189,255L188,258L181,255L178,252L176,252L175,248L174,248Z " data-fips="SA17" data-fips-="" data-iso3="SAU" data-name="Jizan"/><path d="M174,154L172,159L165,164L167,166L156,177L151,177L148,179L145,170L142,168L137,169L129,163L125,163L126,164L130,172L129,173L131,177L131,182L130,189L133,196L131,198L135,205L142,214L149,217L152,220L156,224L157,224L158,227L164,235L164,237L165,239L165,242L171,251L171,251L172,250L173,249L173,249L174,248L174,246L173,241L167,238L168,234L173,233L175,230L174,227L175,225L173,223L172,223L172,224L169,224L167,230L165,231L161,227L161,222L158,219L160,217L162,216L164,214L165,208L168,208L169,210L176,209L177,210L177,210L179,213L181,214L187,209L191,206L201,204L202,203L198,197L200,187L199,181L199,178L192,177L192,173L189,171L186,171L182,170L180,165L178,159L176,156L176,154L174,154Z " data-fips="SA14" data-fips-="" data-iso3="SAU" data-name="Makkah"/><path d="M265,225L228,231L224,231L221,230L216,227L216,229L214,233L215,236L214,239L211,240L204,248L204,253L203,262L204,263L208,264L209,263L219,261L228,261L232,263L246,264L260,268L264,265L264,265L267,225L265,225Z " data-fips="SA16" data-fips-="" data-iso3="SAU" data-name="Najran"/><path d="M269,192L272,156L269,146L258,137L257,115L256,113L251,111L246,108L244,108L236,105L234,105L229,101L223,99L219,94L219,94L218,95L217,95L216,94L216,94L215,95L214,96L214,97L214,99L214,99L215,100L217,102L214,106L211,111L211,113L215,120L216,126L207,127L201,132L196,133L192,138L191,142L182,141L180,141L177,143L177,143L177,144L176,148L176,153L176,154L176,156L178,159L180,165L182,170L186,171L189,171L192,173L192,177L199,178L199,181L200,187L198,197L202,203L205,205L208,210L207,217L210,221L216,227L216,227L221,230L224,231L228,231L265,225L267,225L269,192Z " data-fips="SA10" data-fips-="" data-iso3="SAU" data-name="Ar Riyad"/><path d="M239,67L230,72L227,76L222,86L219,94L219,94L219,94L223,99L229,101L234,105L236,105L244,108L246,108L251,111L256,113L257,115L258,137L269,146L272,156L269,192L267,225L264,265L264,265L266,259L274,247L289,239L333,229L382,189L385,173L377,163L337,163L320,145L320,142L316,141L318,138L316,138L310,137L304,130L302,124L295,115L294,115L294,112L297,113L296,108L295,107L293,104L295,104L286,97L283,96L282,92L280,90L274,87L276,86L271,81L269,75L257,75L254,68L240,67L239,67Z " data-fips="SA06" data-fips-="" data-iso3="SAU" data-name="Ash Sharqiyah"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="24.9427672386" lon0="39.9504406811"/><bbox h="222.51" w="266.84" x="926.21" y="897.14"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M443,32L449,33L450,34L450,20L448,23L446,27L443,32Z M450,0L436,0L450,5L450,6L450,0Z " data-iso="AFG"/><path d="M346,140L347,137L344,139L346,140Z M384,105L382,110L377,116L371,124L365,132L362,138L355,142L342,142L336,142L329,146L324,145L321,141L320,142L320,144L337,163L376,164L377,163L377,160L377,154L380,143L379,142L383,134L382,126L385,125L386,127L391,123L390,122L389,113L388,112L386,112L386,111L384,105L384,105Z " data-iso="ARE"/><path d="M304,116L303,112L301,115L304,116Z " data-iso="BHR"/><path d="M98,186L97,185L91,180L88,176L83,174L80,170L78,165L78,155L78,154L82,154L73,145L64,124L61,119L57,110L56,108L54,98L53,96L51,90L51,87L46,82L42,75L39,65L35,57L37,53L39,52L41,59L45,67L47,76L54,85L58,88L61,90L64,84L65,80L67,73L69,65L71,62L72,62L69,50L67,45L65,36L64,33L63,31L63,31L63,31L56,33L48,32L40,33L37,30L33,33L29,29L34,29L32,26L18,26L12,26L10,25L0,30L0,182L11,183L13,180L14,183L27,184L92,186L98,187L98,186Z " data-iso="EGY"/><path d="M148,291L146,289L145,293L152,293L148,291Z M124,253L118,260L106,265L105,268L98,269L96,276L96,281L89,299L141,299L138,294L136,290L134,288L133,283L132,274L128,263L124,253Z M147,299L143,295L142,298L147,299Z " data-iso="ERI"/><path d="M65,31L65,30L67,26L66,28L63,31L63,31L64,33L65,31Z " data-iso="PSE"/><path d="M384,91L382,90L372,98L377,96L381,95L384,91Z M231,0L231,3L237,5L245,11L248,10L251,16L256,21L254,28L255,34L259,34L260,43L265,46L267,50L268,51L269,51L273,48L274,41L278,43L274,44L283,49L289,45L290,45L293,51L299,58L300,62L303,63L303,66L310,77L310,78L314,82L328,85L332,90L348,98L356,98L360,99L366,99L373,95L376,91L380,89L382,87L391,86L392,87L403,107L412,108L413,109L425,108L429,110L435,108L437,109L443,109L449,109L450,107L450,39L448,37L446,35L443,32L443,32L446,27L448,23L450,20L450,6L450,5L436,0L231,0Z " data-iso="IRN"/><path d="M134,19L137,20L151,22L168,32L178,39L182,42L214,66L238,68L240,67L242,64L248,51L253,50L260,51L260,51L266,51L267,51L268,51L267,50L265,46L260,43L259,34L255,34L254,28L256,21L251,16L248,10L245,11L237,5L231,3L231,0L129,0L131,13L132,16L136,17L134,19Z " data-iso="IRQ"/><path d="M77,4L73,17L71,21L68,26L67,26L65,30L65,31L64,33L65,36L67,45L69,50L72,62L73,60L76,50L77,44L81,31L81,29L81,29L73,31L75,25L78,24L76,23L75,17L76,12L78,11L82,14L83,14L84,10L84,9L86,8L87,8L87,7L89,5L89,2L88,0L83,0L83,2L82,2L77,2L77,4Z " data-iso="ISR"/><path d="M87,8L86,8L84,9L84,10L83,14L83,16L83,20L83,24L81,27L81,29L81,31L77,44L76,50L73,60L73,62L73,64L89,67L117,46L102,29L131,21L134,19L136,17L132,16L131,13L129,0L126,0L101,15L96,15L90,12L88,9L87,8Z " data-iso="JOR"/><path d="M265,57L266,54L262,54L265,57Z M260,51L253,50L248,51L242,64L240,67L243,67L253,68L257,75L268,75L268,73L264,68L262,61L257,61L260,57L263,58L260,52L260,51Z " data-iso="KWT"/><path d="M77,2L82,2L83,2L83,0L79,0L78,1L77,2Z " data-iso="LBN"/><path d="M435,197L438,192L437,189L434,195L435,197Z M377,163L378,164L385,173L378,208L335,228L333,229L334,230L347,256L348,256L353,266L357,265L362,264L369,259L373,258L380,259L384,257L387,252L386,249L389,243L391,242L403,239L406,236L407,228L414,222L424,219L421,206L423,197L425,193L427,195L431,195L436,182L444,170L448,158L447,157L441,155L429,142L426,141L422,141L419,140L411,140L405,139L400,135L393,127L391,123L386,127L385,125L382,126L383,134L379,142L380,143L377,154L377,160L377,163Z M384,105L386,111L386,112L388,112L388,111L389,104L385,103L384,105Z " data-iso="OMN"/><path d="M443,32L446,35L448,37L450,39L450,34L449,33L443,32Z " data-iso="PAK"/><path d="M317,136L319,132L319,127L317,121L317,119L315,113L313,111L308,119L306,124L308,133L308,134L309,136L315,137L317,136Z " data-iso="QAT"/><path d="M177,274L177,271L174,273L177,274Z M134,19L131,21L102,29L117,46L89,67L73,64L70,74L70,78L67,85L68,84L75,86L78,91L81,96L83,99L84,102L90,110L94,118L96,119L96,122L103,132L105,143L108,149L114,151L120,155L122,159L129,172L132,180L130,189L132,195L132,198L134,204L144,215L147,216L153,220L158,224L168,246L173,255L178,259L182,262L186,272L188,273L190,278L190,280L195,275L196,263L200,261L206,263L221,261L231,263L246,264L252,263L256,268L259,268L264,265L268,257L274,247L288,239L290,238L330,230L333,229L335,228L378,208L385,173L378,164L377,163L376,164L337,163L320,144L320,142L320,142L316,141L317,139L316,137L315,137L309,136L308,134L307,133L304,130L303,126L298,121L297,113L297,110L294,106L296,104L293,101L289,100L286,96L280,92L281,91L276,89L275,85L269,76L268,75L257,75L253,68L243,67L240,67L238,68L214,66L182,42L178,39L168,32L151,22L137,20L134,19Z " data-iso="SAU"/><path d="M123,252L119,250L106,239L104,235L103,227L103,223L103,211L102,201L103,200L101,198L98,190L98,187L92,186L27,184L14,183L13,180L11,183L0,182L0,299L89,299L96,281L96,276L98,269L105,268L106,265L118,260L124,253L123,252Z " data-iso="SDN"/><path d="M87,8L88,9L90,12L96,15L101,15L126,0L88,0L89,2L89,5L87,7L87,8Z " data-iso="SYR"/><path d="M82,14L78,11L76,12L75,17L76,23L78,24L75,25L73,31L81,29L81,29L81,27L83,24L83,20L83,16L83,14L82,14Z " data-iso="PSE"/><path d="M353,266L348,256L347,256L334,230L333,229L330,230L290,238L288,239L274,247L268,257L264,265L259,268L256,268L252,263L246,264L231,263L221,261L206,263L200,261L196,263L195,275L190,280L191,285L189,292L191,296L189,299L310,299L315,296L327,292L341,284L340,279L341,275L346,270L353,266Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M142,109L141,109L135,110L133,109L128,107L123,106L122,107L115,102L112,97L109,99L104,97L99,100L102,109L104,110L104,113L105,119L106,118L109,120L112,124L114,129L115,129L116,139L109,142L106,144L108,147L115,151L116,152L122,158L124,162L125,163L125,163L129,163L137,169L142,168L145,170L148,179L151,177L156,177L167,166L165,164L172,159L174,154L176,154L176,153L176,148L177,144L177,143L176,142L174,138L171,136L170,130L167,128L167,128L165,128L161,127L157,128L154,131L145,131L145,126L144,121L145,116L142,114L143,111L143,110L142,109Z " data-fips="SA05" data-fips-="" data-iso3="SAU" data-name="Al Madinah"/><path d="M213,100L211,102L208,101L204,98L202,98L194,103L192,106L183,112L177,119L178,120L174,121L175,125L167,128L167,128L167,128L170,130L171,136L174,138L176,142L177,143L177,143L180,141L182,141L191,142L192,138L196,133L201,132L207,127L216,126L215,120L211,113L211,111L214,106L217,102L215,100L214,99L213,100Z " data-fips="SA08" data-fips-="" data-iso3="SAU" data-name="Al Quassim"/><path d="M216,94L211,90L205,89L201,81L200,80L197,82L191,81L189,78L185,78L181,75L175,74L170,74L164,73L156,75L155,75L153,74L153,74L147,76L141,79L139,80L133,83L131,85L131,85L138,87L143,92L144,98L148,101L143,110L143,110L143,111L142,114L145,116L144,121L145,126L145,131L154,131L157,128L161,127L165,128L167,128L167,128L175,125L174,121L178,120L177,119L183,112L192,106L194,103L202,98L204,98L208,101L211,102L213,100L214,99L214,99L214,97L214,96L215,95L216,94L216,94Z " data-fips="SA13" data-fips-="" data-iso3="SAU" data-name="Ha'il"/><path d="M71,72L70,78L67,84L76,86L75,86L80,95L82,98L84,102L87,106L94,118L96,120L96,122L97,124L102,129L104,135L104,139L105,143L106,144L109,142L116,139L115,129L114,129L112,124L109,120L106,118L105,119L104,113L104,110L102,109L99,100L104,97L109,99L112,97L115,102L122,107L123,106L128,107L133,109L135,110L141,109L142,109L143,110L143,110L148,101L144,98L143,92L138,87L131,85L131,85L130,84L126,85L125,84L118,83L115,82L113,80L113,73L108,78L100,76L94,78L90,72L88,71L81,70L78,71L71,71L71,72Z " data-fips="SA19" data-fips-="" data-iso3="SAU" data-name="Tabuk"/><path d="M117,25L115,32L120,39L134,38L144,40L148,42L159,43L162,45L167,46L169,48L173,52L171,55L159,62L156,65L156,72L153,74L155,75L156,75L164,73L170,74L175,74L181,75L185,78L189,78L191,81L197,82L200,80L201,81L205,89L211,90L216,94L216,94L216,94L217,95L218,95L219,94L219,94L222,86L227,76L230,72L239,67L238,68L214,66L201,57L185,45L175,36L151,22L134,19L131,21L117,25Z " data-fips="SA15" data-fips-="" data-iso3="SAU" data-name="Al Hudud ash Shamaliyah"/><path d="M117,25L103,29L117,46L109,54L99,56L95,62L89,67L72,64L71,71L71,71L78,71L81,70L88,71L90,72L94,78L100,76L108,78L113,73L113,80L115,82L118,83L125,84L126,85L130,84L131,85L133,83L139,80L141,79L147,76L153,74L153,74L156,72L156,65L159,62L171,55L173,52L169,48L167,46L162,45L159,43L148,42L144,40L134,38L120,39L115,32L117,25L117,25Z " data-fips="SA03" data-fips-="SA20" data-iso3="SAU" data-name="Al Jawf"/><path d="M176,209L169,210L168,208L165,208L164,214L162,216L160,217L158,219L161,222L161,227L165,231L167,230L169,224L172,224L172,223L174,220L175,217L177,215L176,212L177,210L176,209Z " data-fips="SA02" data-fips-="" data-iso3="SAU" data-name="Al Bahah"/><path d="M216,227L210,221L207,217L208,210L205,205L202,203L201,204L191,206L187,209L181,214L179,213L177,210L177,210L176,212L177,215L175,217L174,220L172,223L173,223L175,225L174,227L175,230L173,233L168,234L167,238L173,241L174,246L174,248L175,248L176,252L178,252L181,255L188,258L189,255L192,253L192,255L197,259L199,261L199,261L202,261L203,262L203,262L204,253L204,248L211,240L214,239L215,236L214,233L216,229L216,227L216,227Z " data-fips="SA11" data-fips-="" data-iso3="SAU" data-name="`Asir"/><path d="M176,274L175,272L174,273L177,275L180,277L180,274L176,274Z M177,271L175,271L176,273L177,271Z M174,248L173,249L173,249L172,250L171,251L171,251L174,255L182,262L183,269L184,267L189,274L190,278L195,276L197,273L195,271L196,266L197,265L198,262L199,261L197,259L192,255L192,253L189,255L188,258L181,255L178,252L176,252L175,248L174,248Z " data-fips="SA17" data-fips-="" data-iso3="SAU" data-name="Jizan"/><path d="M174,154L172,159L165,164L167,166L156,177L151,177L148,179L145,170L142,168L137,169L129,163L125,163L126,164L130,172L129,173L131,177L131,182L130,189L133,196L131,198L135,205L142,214L149,217L152,220L156,224L157,224L158,227L164,235L164,237L165,239L165,242L171,251L171,251L172,250L173,249L173,249L174,248L174,246L173,241L167,238L168,234L173,233L175,230L174,227L175,225L173,223L172,223L172,224L169,224L167,230L165,231L161,227L161,222L158,219L160,217L162,216L164,214L165,208L168,208L169,210L176,209L177,210L177,210L179,213L181,214L187,209L191,206L201,204L202,203L198,197L200,187L199,181L199,178L192,177L192,173L189,171L186,171L182,170L180,165L178,159L176,156L176,154L174,154Z " data-fips="SA14" data-fips-="" data-iso3="SAU" data-name="Makkah"/><path d="M265,225L228,231L224,231L221,230L216,227L216,229L214,233L215,236L214,239L211,240L204,248L204,253L203,262L204,263L208,264L209,263L219,261L228,261L232,263L246,264L260,268L264,265L264,265L267,225L265,225Z " data-fips="SA16" data-fips-="" data-iso3="SAU" data-name="Najran"/><path d="M269,192L272,156L269,146L258,137L257,115L256,113L251,111L246,108L244,108L236,105L234,105L229,101L223,99L219,94L219,94L218,95L217,95L216,94L216,94L215,95L214,96L214,97L214,99L214,99L215,100L217,102L214,106L211,111L211,113L215,120L216,126L207,127L201,132L196,133L192,138L191,142L182,141L180,141L177,143L177,143L177,144L176,148L176,153L176,154L176,156L178,159L180,165L182,170L186,171L189,171L192,173L192,177L199,178L199,181L200,187L198,197L202,203L205,205L208,210L207,217L210,221L216,227L216,227L221,230L224,231L228,231L265,225L267,225L269,192Z " data-fips="SA10" data-fips-="" data-iso3="SAU" data-name="Ar Riyad"/><path d="M239,67L230,72L227,76L222,86L219,94L219,94L219,94L223,99L229,101L234,105L236,105L244,108L246,108L251,111L256,113L257,115L258,137L269,146L272,156L269,192L267,225L264,265L264,265L266,259L274,247L289,239L333,229L382,189L385,173L377,163L337,163L320,145L320,142L316,141L318,138L316,138L310,137L304,130L302,124L295,115L294,115L294,112L297,113L296,108L295,107L293,104L295,104L286,97L283,96L282,92L280,90L274,87L276,86L271,81L269,75L257,75L254,68L240,67L239,67Z " data-fips="SA06" data-fips-="" data-iso3="SAU" data-name="Ash Sharqiyah"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SDN.svg b/plugins/UserCountryMap/svg/SDN.svg
index 579148ce6fd4926880b59923a1cf240792964d63..decf7b25cfa724d792c68ec5f3f869558b069063 100644
--- a/plugins/UserCountryMap/svg/SDN.svg
+++ b/plugins/UserCountryMap/svg/SDN.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.0942972887" lon0="34.053577784"/><bbox h="189.28" w="224.76" x="840.9" y="850.61"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M108,280L106,280L97,278L97,275L95,272L98,267L99,257L97,253L92,245L86,238L85,235L84,235L78,234L69,237L64,240L63,243L56,252L54,253L49,258L44,263L36,269L30,268L28,269L9,271L12,277L8,281L0,288L0,299L129,299L121,291L119,290L111,288L109,286L109,281L108,280Z " data-iso="CAF"/><path d="M450,218L446,222L446,224L447,236L448,237L450,218Z " data-iso="DJI"/><path d="M134,21L141,21L176,22L197,23L248,23L250,20L251,24L284,24L314,24L350,23L350,23L349,22L342,16L338,11L332,9L328,5L326,0L135,0L135,12L134,16L134,21Z " data-iso="EGY"/><path d="M413,145L413,143L410,142L410,147L418,147L413,145Z M383,101L380,104L377,109L373,110L367,112L363,115L362,118L354,120L352,128L352,134L345,155L343,157L345,169L346,174L346,174L353,174L358,170L365,176L371,162L373,164L377,166L380,170L383,170L389,169L394,166L396,169L402,168L406,169L426,175L433,183L437,187L445,193L450,200L450,183L443,178L433,166L426,163L423,161L415,158L412,154L411,152L407,151L407,156L401,148L400,144L397,141L396,136L394,125L389,112L383,101Z " data-iso="ERI"/><path d="M346,174L344,179L339,197L338,204L330,206L328,208L322,219L316,232L315,239L309,240L303,247L301,259L299,267L299,268L299,269L300,285L297,288L284,288L279,299L450,299L448,237L447,236L446,224L446,222L450,218L450,200L445,193L437,187L433,183L426,175L406,169L402,168L396,169L394,166L389,169L383,170L380,170L377,166L373,164L371,162L365,176L358,170L353,174L346,174L346,174Z M360,222L357,221L356,221L355,220L355,215L356,214L357,213L360,214L361,213L364,212L364,212L366,216L366,218L364,221L363,223L362,225L361,224L361,224L360,222Z " data-iso="ETH"/><path d="M113,69L114,66L114,59L132,59L134,30L134,21L134,16L135,12L135,0L1,0L38,23L46,28L105,64L113,69Z " data-iso="LBY"/><path d="M450,124L448,122L446,124L446,120L443,123L450,127L450,124Z M384,0L387,6L389,11L390,15L388,25L392,32L391,36L394,43L406,56L409,56L417,61L419,64L422,66L429,79L432,86L435,91L442,102L450,108L450,0L384,0Z " data-iso="SAU"/><path d="M134,21L134,30L132,59L114,59L114,66L113,69L113,77L110,141L110,142L94,142L90,145L90,152L85,157L79,164L81,172L73,177L75,188L67,197L67,198L77,201L78,203L79,211L80,214L80,220L81,224L86,227L86,233L85,235L86,238L92,245L97,253L99,257L98,267L95,272L97,275L97,278L106,280L108,280L108,280L108,280L111,278L116,276L118,270L118,267L121,264L122,258L131,249L141,247L143,252L148,256L155,265L157,266L165,263L179,264L183,269L199,270L199,267L204,263L211,261L213,258L213,255L221,251L230,257L236,262L244,261L253,253L258,244L267,237L266,233L266,224L261,218L274,218L283,214L280,226L282,241L287,247L296,253L297,260L296,263L299,268L299,268L299,268L299,267L301,259L303,247L309,240L315,239L316,232L322,219L328,208L330,206L338,204L339,197L344,179L346,174L345,169L343,157L345,155L352,134L352,128L354,120L362,118L363,115L367,112L373,110L377,109L380,104L383,101L383,99L378,97L362,85L360,80L358,70L358,66L356,60L357,51L356,48L355,41L356,39L351,31L350,28L350,23L314,24L284,24L251,24L250,20L248,23L197,23L176,22L141,21L134,21Z " data-iso="SDN"/><path d="M299,268L299,268L299,268L296,263L297,260L296,253L287,247L282,241L280,226L283,214L274,218L261,218L266,224L266,233L267,237L258,244L253,253L244,261L236,262L230,257L221,251L213,255L213,258L211,261L204,263L199,267L199,270L183,269L179,264L165,263L157,266L155,265L148,256L143,252L141,247L131,249L122,258L121,264L118,267L118,270L116,276L111,278L108,280L108,280L108,280L109,281L109,286L111,288L119,290L121,291L129,299L279,299L284,288L297,288L300,285L299,269L299,268Z " data-iso="SDS"/><path d="M85,235L86,233L86,227L81,224L80,220L80,214L79,211L78,203L77,201L67,198L67,197L75,188L73,177L81,172L79,164L85,157L90,152L90,145L94,142L110,142L110,141L113,77L113,69L105,64L46,28L38,23L1,0L0,0L0,288L8,281L12,277L9,271L28,269L30,268L36,269L44,263L49,258L54,253L56,252L63,243L64,240L69,237L78,234L84,235L85,235Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M283,214L283,216L280,226L282,241L288,247L296,254L297,260L296,263L296,268L299,266L302,257L304,252L303,246L306,242L308,240L313,244L316,241L315,238L317,235L316,232L318,227L319,221L320,221L319,220L313,213L307,205L302,205L288,214L283,214L283,214Z " data-fips="SU42" data-fips-="SU04" data-iso3="SDN" data-name="Blue Nile"/><path d="M283,24L290,29L285,33L286,39L285,39L285,45L289,48L292,53L291,63L292,69L291,73L300,94L311,99L314,103L317,107L319,111L329,117L335,121L336,121L353,119L353,119L361,120L363,117L363,114L367,113L368,111L376,110L383,99L377,96L378,95L374,94L367,87L363,87L358,71L358,66L356,61L356,53L357,53L354,39L355,37L352,34L350,23L283,24Z " data-fips="EG02" data-fips-="SU08" data-iso3="SDN" data-name="Red Sea"/><path d="M87,229L97,225L111,217L113,214L112,211L109,204L120,194L116,194L115,193L118,185L116,185L110,188L108,188L99,184L101,178L107,172L112,165L111,159L109,149L110,142L110,142L105,142L95,142L93,142L90,145L91,148L84,158L85,161L79,163L80,168L82,172L75,175L72,179L75,183L75,189L69,193L69,201L76,201L78,202L77,205L79,211L78,213L80,213L79,221L82,224L86,226L87,229L87,229Z " data-fips="SU47" data-fips-="SU07" data-iso3="SDN" data-name="West Darfur"/><path d="M120,194L109,204L112,211L113,214L111,217L97,225L87,229L87,230L85,236L88,240L93,245L99,257L100,261L97,269L95,270L95,273L97,275L102,279L109,280L110,278L116,276L116,274L118,271L119,267L121,264L123,257L125,255L127,249L128,249L140,247L142,248L143,251L146,256L148,256L155,265L157,266L165,263L180,264L180,264L176,255L176,253L170,236L169,230L168,228L169,223L168,220L165,220L156,219L153,216L149,216L146,212L141,201L138,199L134,196L126,195L120,194Z " data-fips="SU49" data-fips-="SU07" data-iso3="SDN" data-name="South Darfur"/><path d="M299,140L291,141L288,140L279,138L272,134L262,132L258,128L258,127L257,127L253,130L258,140L260,144L264,151L265,152L266,156L266,156L268,156L270,156L272,156L272,156L276,154L285,152L289,151L290,150L292,147L294,146L298,148L305,149L302,143L302,141L301,140L299,140Z " data-fips="SU29" data-fips-="SU03" data-iso3="SDN" data-name="Khartoum"/><path d="M297,178L296,176L303,165L298,157L291,153L289,151L285,152L276,154L272,156L272,156L272,157L270,159L273,162L273,166L268,173L269,178L273,188L275,186L275,185L279,184L281,179L283,178L286,181L287,181L291,177L297,179L297,179L297,178Z " data-fips="SU38" data-fips-="SU04" data-iso3="SDN" data-name="Gezira"/><path d="M305,149L298,148L294,146L292,147L290,150L289,151L291,153L298,157L303,165L296,176L297,178L297,179L298,179L299,182L304,190L313,196L316,199L320,201L330,205L330,205L337,204L338,205L340,192L344,183L346,174L344,164L326,167L323,167L319,162L316,155L315,154L307,149L305,149Z " data-fips="SU39" data-fips-="SU08" data-iso3="SDN" data-name="Gedarif"/><path d="M329,117L319,111L317,107L314,103L311,99L300,94L291,73L292,69L291,63L292,53L289,48L285,45L285,39L286,39L285,33L290,29L283,24L282,24L271,24L264,84L271,96L273,104L271,108L258,127L258,128L262,132L272,134L279,138L288,140L291,141L299,140L301,140L302,139L307,132L327,129L328,128L329,124L329,117Z " data-fips="SU53" data-fips-="SU05" data-iso3="SDN" data-name="River Nile"/><path d="M132,59L133,60L178,61L176,126L243,129L249,129L250,129L253,130L257,127L258,127L271,108L273,104L271,96L264,84L271,24L252,24L251,24L250,20L248,23L134,21L132,59Z " data-fips="SU43" data-fips-="SU05" data-iso3="SDN" data-name="Northern"/><path d="M270,156L268,156L266,156L266,156L260,158L257,161L255,166L252,167L251,175L251,177L255,182L258,188L259,188L261,194L254,199L253,200L254,207L255,213L257,214L261,218L274,218L274,214L274,214L283,214L280,205L280,200L277,195L276,187L275,186L273,188L269,178L268,173L273,166L273,162L270,159L272,157L272,156L270,156Z " data-fips="SU41" data-fips-="SU04" data-iso3="SDN" data-name="White Nile"/><path d="M275,186L276,187L277,195L280,200L280,205L283,214L283,214L288,214L302,205L307,205L313,213L319,220L320,221L321,220L324,215L325,213L330,205L330,205L320,201L316,199L313,196L304,190L299,182L298,179L297,179L297,179L291,177L287,181L286,181L283,178L281,179L279,184L275,185L275,186Z " data-fips="SU58" data-fips-="" data-iso3="SDN" data-name="Sennar"/><path d="M132,59L132,60L114,59L113,69L110,142L109,149L111,159L112,165L107,172L101,178L99,184L108,188L110,188L116,185L118,185L115,193L116,194L120,194L126,195L134,196L138,199L141,201L146,212L149,216L153,216L156,219L165,220L168,220L167,218L166,216L165,215L166,212L166,212L165,209L165,209L165,209L165,209L166,207L168,198L171,195L174,188L175,185L174,183L175,178L170,163L168,161L165,126L176,126L176,126L178,61L133,60L132,59L132,59Z " data-fips="SU55" data-fips-="SU07" data-iso3="SDN" data-name="North Darfur"/><path d="M212,212L212,212L207,212L202,208L196,216L195,218L189,219L184,218L180,225L174,230L169,229L168,228L169,230L170,236L176,253L176,253L176,255L179,261L180,264L182,268L183,269L199,270L200,266L204,263L211,261L214,258L214,256L221,252L230,257L236,262L245,261L253,253L258,244L267,237L267,233L266,224L261,218L257,214L255,213L254,207L250,205L244,206L236,213L234,213L231,209L228,208L222,207L222,205L220,203L212,212L212,212Z " data-fips="SU50" data-fips-="SU09" data-iso3="SDN" data-name="South Kordufan"/><path d="M176,126L165,126L168,161L170,163L175,178L174,183L175,185L174,188L171,195L168,198L166,207L165,209L165,209L165,209L165,209L166,212L166,212L165,215L166,216L167,218L168,220L169,223L168,228L169,229L174,230L180,225L184,218L189,219L195,218L196,216L202,208L207,212L212,212L212,212L212,212L220,203L222,205L222,207L228,208L231,209L234,213L236,213L244,206L250,205L254,207L253,200L254,199L261,194L259,188L258,188L255,182L251,177L251,175L252,167L255,166L257,161L260,158L266,156L265,152L264,151L260,144L258,140L253,130L250,129L249,129L243,129L176,126L176,126Z " data-fips="SU56" data-fips-="SU09" data-iso3="SDN" data-name="North Kordufan"/><path d="M329,117L329,124L328,128L327,129L307,132L302,139L301,140L302,141L302,143L305,149L307,149L315,154L316,155L319,162L323,167L326,167L344,164L343,157L347,149L348,146L350,143L353,132L352,130L354,125L353,119L353,119L336,121L335,121L329,117Z " data-fips="SU52" data-fips-="SU08" data-iso3="SDN" data-name="Kassala"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.0942972887" lon0="34.053577784"/><bbox h="189.28" w="224.76" x="840.9" y="850.61"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M108,280L106,280L97,278L97,275L95,272L98,267L99,257L97,253L92,245L86,238L85,235L84,235L78,234L69,237L64,240L63,243L56,252L54,253L49,258L44,263L36,269L30,268L28,269L9,271L12,277L8,281L0,288L0,299L129,299L121,291L119,290L111,288L109,286L109,281L108,280Z " data-iso="CAF"/><path d="M450,218L446,222L446,224L447,236L448,237L450,218Z " data-iso="DJI"/><path d="M134,21L141,21L176,22L197,23L248,23L250,20L251,24L284,24L314,24L350,23L350,23L349,22L342,16L338,11L332,9L328,5L326,0L135,0L135,12L134,16L134,21Z " data-iso="EGY"/><path d="M413,145L413,143L410,142L410,147L418,147L413,145Z M383,101L380,104L377,109L373,110L367,112L363,115L362,118L354,120L352,128L352,134L345,155L343,157L345,169L346,174L346,174L353,174L358,170L365,176L371,162L373,164L377,166L380,170L383,170L389,169L394,166L396,169L402,168L406,169L426,175L433,183L437,187L445,193L450,200L450,183L443,178L433,166L426,163L423,161L415,158L412,154L411,152L407,151L407,156L401,148L400,144L397,141L396,136L394,125L389,112L383,101Z " data-iso="ERI"/><path d="M346,174L344,179L339,197L338,204L330,206L328,208L322,219L316,232L315,239L309,240L303,247L301,259L299,267L299,268L299,269L300,285L297,288L284,288L279,299L450,299L448,237L447,236L446,224L446,222L450,218L450,200L445,193L437,187L433,183L426,175L406,169L402,168L396,169L394,166L389,169L383,170L380,170L377,166L373,164L371,162L365,176L358,170L353,174L346,174L346,174Z M360,222L357,221L356,221L355,220L355,215L356,214L357,213L360,214L361,213L364,212L364,212L366,216L366,218L364,221L363,223L362,225L361,224L361,224L360,222Z " data-iso="ETH"/><path d="M113,69L114,66L114,59L132,59L134,30L134,21L134,16L135,12L135,0L1,0L38,23L46,28L105,64L113,69Z " data-iso="LBY"/><path d="M450,124L448,122L446,124L446,120L443,123L450,127L450,124Z M384,0L387,6L389,11L390,15L388,25L392,32L391,36L394,43L406,56L409,56L417,61L419,64L422,66L429,79L432,86L435,91L442,102L450,108L450,0L384,0Z " data-iso="SAU"/><path d="M134,21L134,30L132,59L114,59L114,66L113,69L113,77L110,141L110,142L94,142L90,145L90,152L85,157L79,164L81,172L73,177L75,188L67,197L67,198L77,201L78,203L79,211L80,214L80,220L81,224L86,227L86,233L85,235L86,238L92,245L97,253L99,257L98,267L95,272L97,275L97,278L106,280L108,280L108,280L108,280L111,278L116,276L118,270L118,267L121,264L122,258L131,249L141,247L143,252L148,256L155,265L157,266L165,263L179,264L183,269L199,270L199,267L204,263L211,261L213,258L213,255L221,251L230,257L236,262L244,261L253,253L258,244L267,237L266,233L266,224L261,218L274,218L283,214L280,226L282,241L287,247L296,253L297,260L296,263L299,268L299,268L299,268L299,267L301,259L303,247L309,240L315,239L316,232L322,219L328,208L330,206L338,204L339,197L344,179L346,174L345,169L343,157L345,155L352,134L352,128L354,120L362,118L363,115L367,112L373,110L377,109L380,104L383,101L383,99L378,97L362,85L360,80L358,70L358,66L356,60L357,51L356,48L355,41L356,39L351,31L350,28L350,23L314,24L284,24L251,24L250,20L248,23L197,23L176,22L141,21L134,21Z " data-iso="SDN"/><path d="M299,268L299,268L299,268L296,263L297,260L296,253L287,247L282,241L280,226L283,214L274,218L261,218L266,224L266,233L267,237L258,244L253,253L244,261L236,262L230,257L221,251L213,255L213,258L211,261L204,263L199,267L199,270L183,269L179,264L165,263L157,266L155,265L148,256L143,252L141,247L131,249L122,258L121,264L118,267L118,270L116,276L111,278L108,280L108,280L108,280L109,281L109,286L111,288L119,290L121,291L129,299L279,299L284,288L297,288L300,285L299,269L299,268Z " data-iso="SSD"/><path d="M85,235L86,233L86,227L81,224L80,220L80,214L79,211L78,203L77,201L67,198L67,197L75,188L73,177L81,172L79,164L85,157L90,152L90,145L94,142L110,142L110,141L113,77L113,69L105,64L46,28L38,23L1,0L0,0L0,288L8,281L12,277L9,271L28,269L30,268L36,269L44,263L49,258L54,253L56,252L63,243L64,240L69,237L78,234L84,235L85,235Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M283,214L283,216L280,226L282,241L288,247L296,254L297,260L296,263L296,268L299,266L302,257L304,252L303,246L306,242L308,240L313,244L316,241L315,238L317,235L316,232L318,227L319,221L320,221L319,220L313,213L307,205L302,205L288,214L283,214L283,214Z " data-fips="SU42" data-fips-="SU04" data-iso3="SDN" data-name="Blue Nile"/><path d="M283,24L290,29L285,33L286,39L285,39L285,45L289,48L292,53L291,63L292,69L291,73L300,94L311,99L314,103L317,107L319,111L329,117L335,121L336,121L353,119L353,119L361,120L363,117L363,114L367,113L368,111L376,110L383,99L377,96L378,95L374,94L367,87L363,87L358,71L358,66L356,61L356,53L357,53L354,39L355,37L352,34L350,23L283,24Z " data-fips="EG02" data-fips-="SU08" data-iso3="SDN" data-name="Red Sea"/><path d="M87,229L97,225L111,217L113,214L112,211L109,204L120,194L116,194L115,193L118,185L116,185L110,188L108,188L99,184L101,178L107,172L112,165L111,159L109,149L110,142L110,142L105,142L95,142L93,142L90,145L91,148L84,158L85,161L79,163L80,168L82,172L75,175L72,179L75,183L75,189L69,193L69,201L76,201L78,202L77,205L79,211L78,213L80,213L79,221L82,224L86,226L87,229L87,229Z " data-fips="SU47" data-fips-="SU07" data-iso3="SDN" data-name="West Darfur"/><path d="M120,194L109,204L112,211L113,214L111,217L97,225L87,229L87,230L85,236L88,240L93,245L99,257L100,261L97,269L95,270L95,273L97,275L102,279L109,280L110,278L116,276L116,274L118,271L119,267L121,264L123,257L125,255L127,249L128,249L140,247L142,248L143,251L146,256L148,256L155,265L157,266L165,263L180,264L180,264L176,255L176,253L170,236L169,230L168,228L169,223L168,220L165,220L156,219L153,216L149,216L146,212L141,201L138,199L134,196L126,195L120,194Z " data-fips="SU49" data-fips-="SU07" data-iso3="SDN" data-name="South Darfur"/><path d="M299,140L291,141L288,140L279,138L272,134L262,132L258,128L258,127L257,127L253,130L258,140L260,144L264,151L265,152L266,156L266,156L268,156L270,156L272,156L272,156L276,154L285,152L289,151L290,150L292,147L294,146L298,148L305,149L302,143L302,141L301,140L299,140Z " data-fips="SU29" data-fips-="SU03" data-iso3="SDN" data-name="Khartoum"/><path d="M297,178L296,176L303,165L298,157L291,153L289,151L285,152L276,154L272,156L272,156L272,157L270,159L273,162L273,166L268,173L269,178L273,188L275,186L275,185L279,184L281,179L283,178L286,181L287,181L291,177L297,179L297,179L297,178Z " data-fips="SU38" data-fips-="SU04" data-iso3="SDN" data-name="Gezira"/><path d="M305,149L298,148L294,146L292,147L290,150L289,151L291,153L298,157L303,165L296,176L297,178L297,179L298,179L299,182L304,190L313,196L316,199L320,201L330,205L330,205L337,204L338,205L340,192L344,183L346,174L344,164L326,167L323,167L319,162L316,155L315,154L307,149L305,149Z " data-fips="SU39" data-fips-="SU08" data-iso3="SDN" data-name="Gedarif"/><path d="M329,117L319,111L317,107L314,103L311,99L300,94L291,73L292,69L291,63L292,53L289,48L285,45L285,39L286,39L285,33L290,29L283,24L282,24L271,24L264,84L271,96L273,104L271,108L258,127L258,128L262,132L272,134L279,138L288,140L291,141L299,140L301,140L302,139L307,132L327,129L328,128L329,124L329,117Z " data-fips="SU53" data-fips-="SU05" data-iso3="SDN" data-name="River Nile"/><path d="M132,59L133,60L178,61L176,126L243,129L249,129L250,129L253,130L257,127L258,127L271,108L273,104L271,96L264,84L271,24L252,24L251,24L250,20L248,23L134,21L132,59Z " data-fips="SU43" data-fips-="SU05" data-iso3="SDN" data-name="Northern"/><path d="M270,156L268,156L266,156L266,156L260,158L257,161L255,166L252,167L251,175L251,177L255,182L258,188L259,188L261,194L254,199L253,200L254,207L255,213L257,214L261,218L274,218L274,214L274,214L283,214L280,205L280,200L277,195L276,187L275,186L273,188L269,178L268,173L273,166L273,162L270,159L272,157L272,156L270,156Z " data-fips="SU41" data-fips-="SU04" data-iso3="SDN" data-name="White Nile"/><path d="M275,186L276,187L277,195L280,200L280,205L283,214L283,214L288,214L302,205L307,205L313,213L319,220L320,221L321,220L324,215L325,213L330,205L330,205L320,201L316,199L313,196L304,190L299,182L298,179L297,179L297,179L291,177L287,181L286,181L283,178L281,179L279,184L275,185L275,186Z " data-fips="SU58" data-fips-="" data-iso3="SDN" data-name="Sennar"/><path d="M132,59L132,60L114,59L113,69L110,142L109,149L111,159L112,165L107,172L101,178L99,184L108,188L110,188L116,185L118,185L115,193L116,194L120,194L126,195L134,196L138,199L141,201L146,212L149,216L153,216L156,219L165,220L168,220L167,218L166,216L165,215L166,212L166,212L165,209L165,209L165,209L165,209L166,207L168,198L171,195L174,188L175,185L174,183L175,178L170,163L168,161L165,126L176,126L176,126L178,61L133,60L132,59L132,59Z " data-fips="SU55" data-fips-="SU07" data-iso3="SDN" data-name="North Darfur"/><path d="M212,212L212,212L207,212L202,208L196,216L195,218L189,219L184,218L180,225L174,230L169,229L168,228L169,230L170,236L176,253L176,253L176,255L179,261L180,264L182,268L183,269L199,270L200,266L204,263L211,261L214,258L214,256L221,252L230,257L236,262L245,261L253,253L258,244L267,237L267,233L266,224L261,218L257,214L255,213L254,207L250,205L244,206L236,213L234,213L231,209L228,208L222,207L222,205L220,203L212,212L212,212Z " data-fips="SU50" data-fips-="SU09" data-iso3="SDN" data-name="South Kordufan"/><path d="M176,126L165,126L168,161L170,163L175,178L174,183L175,185L174,188L171,195L168,198L166,207L165,209L165,209L165,209L165,209L166,212L166,212L165,215L166,216L167,218L168,220L169,223L168,228L169,229L174,230L180,225L184,218L189,219L195,218L196,216L202,208L207,212L212,212L212,212L212,212L220,203L222,205L222,207L228,208L231,209L234,213L236,213L244,206L250,205L254,207L253,200L254,199L261,194L259,188L258,188L255,182L251,177L251,175L252,167L255,166L257,161L260,158L266,156L265,152L264,151L260,144L258,140L253,130L250,129L249,129L243,129L176,126L176,126Z " data-fips="SU56" data-fips-="SU09" data-iso3="SDN" data-name="North Kordufan"/><path d="M329,117L329,124L328,128L327,129L307,132L302,139L301,140L302,141L302,143L305,149L307,149L315,154L316,155L319,162L323,167L326,167L344,164L343,157L347,149L348,146L350,143L353,132L352,130L354,125L353,119L353,119L336,121L335,121L329,117Z " data-fips="SU52" data-fips-="SU08" data-iso3="SDN" data-name="Kassala"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SOM.svg b/plugins/UserCountryMap/svg/SOM.svg
index 01fb4227bfaf056601020c61742747723584a7b9..0b363e009e5bfe5e88fc8cd6895c4eaeda2d7691 100644
--- a/plugins/UserCountryMap/svg/SOM.svg
+++ b/plugins/UserCountryMap/svg/SOM.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="10.1594318711" lon0="49.9168483929"/><bbox h="183.18" w="144.43" x="881.5" y="969.67"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M152,1L150,4L144,13L141,16L140,31L142,31L155,29L161,31L162,31L165,27L167,24L169,21L167,20L155,21L160,16L165,14L170,12L172,7L171,4L169,0L161,0L158,3L154,0L153,1L152,1Z " data-iso="DJI"/><path d="M152,1L153,1L154,0L158,3L161,0L151,0L152,1Z " data-iso="ERI"/><path d="M7,138L7,138L17,141L18,142L17,152L21,158L23,159L44,164L63,177L73,178L91,182L97,176L98,174L101,172L117,166L124,172L126,173L136,172L139,172L140,171L142,169L157,166L164,159L173,155L182,153L200,155L204,150L221,133L257,98L262,93L255,93L242,93L241,92L183,72L175,65L173,64L168,56L167,54L160,47L157,39L162,32L162,31L161,31L155,29L142,31L140,31L141,16L144,13L150,4L152,1L151,0L16,0L6,20L5,28L2,31L0,29L0,123L2,126L2,130L5,136L7,137L7,138Z M52,12L49,10L48,11L47,9L47,4L48,3L49,2L52,3L53,2L56,1L57,2L58,5L58,7L57,9L56,11L55,12L54,15L52,14L53,13L52,12Z " data-iso="ETH"/><path d="M131,286L131,285L120,270L120,241L120,195L128,188L136,176L139,172L136,172L126,173L124,172L117,166L101,172L98,174L97,176L91,182L73,178L63,177L44,164L23,159L21,158L17,152L18,142L17,141L7,138L7,138L4,141L0,145L0,281L12,288L31,299L117,299L118,293L126,291L128,290L131,286Z " data-iso="KEN"/><path d="M0,0L0,29L2,31L5,28L6,20L16,0L0,0Z " data-iso="SDN"/><path d="M7,138L7,137L5,136L2,130L2,126L0,123L0,145L4,141L7,138Z " data-iso="SDS"/><path d="M281,27L276,26L263,30L247,30L242,34L234,37L232,38L219,35L210,39L202,43L191,43L181,36L176,31L173,24L169,21L167,24L165,27L162,31L162,32L157,39L160,47L167,54L168,56L173,64L175,65L183,72L241,92L242,93L255,93L262,93L265,88L278,68L281,64L281,27L281,27Z " data-iso="SOL"/><path d="M133,284L140,272L170,240L175,236L182,231L188,225L200,217L218,207L223,204L239,188L252,174L262,163L267,154L275,143L283,130L284,125L287,118L289,113L297,100L299,94L304,89L311,76L315,71L319,64L320,48L326,44L323,44L325,39L324,26L327,16L318,13L315,14L311,18L304,22L295,23L290,26L284,27L281,27L281,64L278,68L265,88L262,93L257,98L221,133L204,150L200,155L182,153L173,155L164,159L157,166L142,169L140,171L139,172L136,176L128,188L120,195L120,241L120,270L131,285L131,286L133,284Z " data-iso="SOM"/><path d="M0,299L31,299L12,288L0,281L0,299Z " data-iso="TZA"/><path d="M369,0L367,1L375,6L383,5L391,1L389,0L369,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M307,85L312,74L314,72L319,64L319,57L320,55L320,51L327,45L330,45L329,43L323,44L325,41L325,39L325,30L324,29L327,19L327,18L321,14L318,13L313,15L307,21L293,24L290,26L281,28L281,58L281,61L284,61L284,70L284,75L286,77L291,81L296,81L298,82L299,86L301,84L303,84L306,86L307,85Z " data-fips="SO03" data-fips-="" data-iso3="SOM" data-name="Bari"/><path d="M181,153L172,155L164,159L161,162L159,165L159,166L163,174L164,175L164,179L170,181L173,180L176,176L181,174L185,176L188,185L187,186L190,188L194,187L195,188L197,188L197,179L198,176L195,165L194,154L181,153Z " data-fips="SO01" data-fips-="" data-iso3="SOM" data-name="Bakool"/><path d="M194,187L190,188L187,186L188,185L185,176L181,174L176,176L173,180L170,181L164,179L163,188L163,191L160,192L153,191L151,201L149,213L151,215L159,222L161,223L167,220L173,218L179,215L194,209L194,203L195,198L194,197L195,192L195,188L194,187Z " data-fips="SO04" data-fips-="" data-iso3="SOM" data-name="Bay"/><path d="M164,179L164,175L163,174L159,166L159,166L147,168L144,168L140,170L140,172L128,188L120,195L120,222L120,227L120,227L129,227L134,213L149,213L151,201L153,191L160,192L163,191L163,188L164,179Z " data-fips="SO06" data-fips-="" data-iso3="SOM" data-name="Gedo"/><path d="M159,222L151,215L149,213L134,213L129,227L145,226L149,226L153,238L155,246L165,246L167,245L170,240L171,239L171,239L168,234L166,232L161,223L159,222Z " data-fips="SO08" data-fips-="" data-iso3="SOM" data-name="Jubbada Dhexe"/><path d="M197,188L195,188L195,192L194,197L195,198L194,203L194,209L179,215L173,218L167,220L161,223L166,232L168,234L171,239L171,239L174,237L188,225L192,222L201,216L206,214L207,213L207,213L209,210L208,210L208,199L204,192L203,188L197,188Z " data-fips="SO02" data-fips-="SO14|" data-iso3="SOM" data-name="Shabeellaha Hoose"/><path d="M214,210L214,210L211,210L209,210L207,213L207,213L214,210Z " data-fips="SO02" data-fips-="" data-iso3="SOM" data-name="Banaadir"/><path d="M231,123L221,133L212,142L216,151L223,152L227,151L226,154L224,158L225,165L230,169L230,175L243,184L243,184L246,180L249,178L252,175L253,172L259,167L252,164L254,149L251,142L249,138L254,127L231,122L231,123Z " data-fips="SO05" data-fips-="" data-iso3="SOM" data-name="Galguduud"/><path d="M202,153L202,153L201,155L200,155L194,154L195,165L198,176L197,179L197,188L203,188L205,189L207,189L220,188L222,183L223,182L230,175L230,169L225,165L224,158L226,154L227,151L223,152L216,151L212,142L202,153Z " data-fips="SO07" data-fips-="" data-iso3="SOM" data-name="Hiiraan"/><path d="M230,175L223,182L222,183L220,188L207,189L205,189L203,188L204,192L208,199L208,210L209,210L211,210L214,210L214,210L216,208L218,207L226,200L227,199L234,193L242,185L243,184L243,184L230,175Z " data-fips="SO13" data-fips-="" data-iso3="SOM" data-name="Shabeellaha Dhexe"/><path d="M231,122L254,127L249,138L251,142L254,149L252,164L259,167L261,164L263,161L266,155L271,149L279,137L284,127L284,125L290,113L294,107L295,105L292,102L286,99L283,99L272,105L253,102L231,122Z " data-fips="SO10" data-fips-="" data-iso3="SOM" data-name="Mudug"/><path d="M281,64L270,80L267,86L262,93L253,102L272,105L283,99L286,99L292,102L295,105L297,101L298,95L301,92L305,87L306,86L303,84L301,84L299,86L298,82L296,81L291,81L286,77L284,75L284,70L284,61L281,61L281,64Z " data-fips="SO18" data-fips-="SO11|" data-iso3="SOM" data-name="Nugaal"/><path d="M129,227L120,227L120,227L120,232L120,270L131,285L133,284L137,277L140,274L140,272L144,268L149,262L156,255L163,248L165,246L155,246L153,238L149,226L145,226L129,227Z " data-fips="SO09" data-fips-="" data-iso3="SOM" data-name="Jubbada Hoose"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="10.1594318711" lon0="49.9168483929"/><bbox h="183.18" w="144.43" x="881.5" y="969.67"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M152,1L150,4L144,13L141,16L140,31L142,31L155,29L161,31L162,31L165,27L167,24L169,21L167,20L155,21L160,16L165,14L170,12L172,7L171,4L169,0L161,0L158,3L154,0L153,1L152,1Z " data-iso="DJI"/><path d="M152,1L153,1L154,0L158,3L161,0L151,0L152,1Z " data-iso="ERI"/><path d="M7,138L7,138L17,141L18,142L17,152L21,158L23,159L44,164L63,177L73,178L91,182L97,176L98,174L101,172L117,166L124,172L126,173L136,172L139,172L140,171L142,169L157,166L164,159L173,155L182,153L200,155L204,150L221,133L257,98L262,93L255,93L242,93L241,92L183,72L175,65L173,64L168,56L167,54L160,47L157,39L162,32L162,31L161,31L155,29L142,31L140,31L141,16L144,13L150,4L152,1L151,0L16,0L6,20L5,28L2,31L0,29L0,123L2,126L2,130L5,136L7,137L7,138Z M52,12L49,10L48,11L47,9L47,4L48,3L49,2L52,3L53,2L56,1L57,2L58,5L58,7L57,9L56,11L55,12L54,15L52,14L53,13L52,12Z " data-iso="ETH"/><path d="M131,286L131,285L120,270L120,241L120,195L128,188L136,176L139,172L136,172L126,173L124,172L117,166L101,172L98,174L97,176L91,182L73,178L63,177L44,164L23,159L21,158L17,152L18,142L17,141L7,138L7,138L4,141L0,145L0,281L12,288L31,299L117,299L118,293L126,291L128,290L131,286Z " data-iso="KEN"/><path d="M0,0L0,29L2,31L5,28L6,20L16,0L0,0Z " data-iso="SDN"/><path d="M7,138L7,137L5,136L2,130L2,126L0,123L0,145L4,141L7,138Z " data-iso="SSD"/><path d="M281,27L276,26L263,30L247,30L242,34L234,37L232,38L219,35L210,39L202,43L191,43L181,36L176,31L173,24L169,21L167,24L165,27L162,31L162,32L157,39L160,47L167,54L168,56L173,64L175,65L183,72L241,92L242,93L255,93L262,93L265,88L278,68L281,64L281,27L281,27Z " data-iso="SOL"/><path d="M133,284L140,272L170,240L175,236L182,231L188,225L200,217L218,207L223,204L239,188L252,174L262,163L267,154L275,143L283,130L284,125L287,118L289,113L297,100L299,94L304,89L311,76L315,71L319,64L320,48L326,44L323,44L325,39L324,26L327,16L318,13L315,14L311,18L304,22L295,23L290,26L284,27L281,27L281,64L278,68L265,88L262,93L257,98L221,133L204,150L200,155L182,153L173,155L164,159L157,166L142,169L140,171L139,172L136,176L128,188L120,195L120,241L120,270L131,285L131,286L133,284Z " data-iso="SOM"/><path d="M0,299L31,299L12,288L0,281L0,299Z " data-iso="TZA"/><path d="M369,0L367,1L375,6L383,5L391,1L389,0L369,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M307,85L312,74L314,72L319,64L319,57L320,55L320,51L327,45L330,45L329,43L323,44L325,41L325,39L325,30L324,29L327,19L327,18L321,14L318,13L313,15L307,21L293,24L290,26L281,28L281,58L281,61L284,61L284,70L284,75L286,77L291,81L296,81L298,82L299,86L301,84L303,84L306,86L307,85Z " data-fips="SO03" data-fips-="" data-iso3="SOM" data-name="Bari"/><path d="M181,153L172,155L164,159L161,162L159,165L159,166L163,174L164,175L164,179L170,181L173,180L176,176L181,174L185,176L188,185L187,186L190,188L194,187L195,188L197,188L197,179L198,176L195,165L194,154L181,153Z " data-fips="SO01" data-fips-="" data-iso3="SOM" data-name="Bakool"/><path d="M194,187L190,188L187,186L188,185L185,176L181,174L176,176L173,180L170,181L164,179L163,188L163,191L160,192L153,191L151,201L149,213L151,215L159,222L161,223L167,220L173,218L179,215L194,209L194,203L195,198L194,197L195,192L195,188L194,187Z " data-fips="SO04" data-fips-="" data-iso3="SOM" data-name="Bay"/><path d="M164,179L164,175L163,174L159,166L159,166L147,168L144,168L140,170L140,172L128,188L120,195L120,222L120,227L120,227L129,227L134,213L149,213L151,201L153,191L160,192L163,191L163,188L164,179Z " data-fips="SO06" data-fips-="" data-iso3="SOM" data-name="Gedo"/><path d="M159,222L151,215L149,213L134,213L129,227L145,226L149,226L153,238L155,246L165,246L167,245L170,240L171,239L171,239L168,234L166,232L161,223L159,222Z " data-fips="SO08" data-fips-="" data-iso3="SOM" data-name="Jubbada Dhexe"/><path d="M197,188L195,188L195,192L194,197L195,198L194,203L194,209L179,215L173,218L167,220L161,223L166,232L168,234L171,239L171,239L174,237L188,225L192,222L201,216L206,214L207,213L207,213L209,210L208,210L208,199L204,192L203,188L197,188Z " data-fips="SO02" data-fips-="SO14|" data-iso3="SOM" data-name="Shabeellaha Hoose"/><path d="M214,210L214,210L211,210L209,210L207,213L207,213L214,210Z " data-fips="SO02" data-fips-="" data-iso3="SOM" data-name="Banaadir"/><path d="M231,123L221,133L212,142L216,151L223,152L227,151L226,154L224,158L225,165L230,169L230,175L243,184L243,184L246,180L249,178L252,175L253,172L259,167L252,164L254,149L251,142L249,138L254,127L231,122L231,123Z " data-fips="SO05" data-fips-="" data-iso3="SOM" data-name="Galguduud"/><path d="M202,153L202,153L201,155L200,155L194,154L195,165L198,176L197,179L197,188L203,188L205,189L207,189L220,188L222,183L223,182L230,175L230,169L225,165L224,158L226,154L227,151L223,152L216,151L212,142L202,153Z " data-fips="SO07" data-fips-="" data-iso3="SOM" data-name="Hiiraan"/><path d="M230,175L223,182L222,183L220,188L207,189L205,189L203,188L204,192L208,199L208,210L209,210L211,210L214,210L214,210L216,208L218,207L226,200L227,199L234,193L242,185L243,184L243,184L230,175Z " data-fips="SO13" data-fips-="" data-iso3="SOM" data-name="Shabeellaha Dhexe"/><path d="M231,122L254,127L249,138L251,142L254,149L252,164L259,167L261,164L263,161L266,155L271,149L279,137L284,127L284,125L290,113L294,107L295,105L292,102L286,99L283,99L272,105L253,102L231,122Z " data-fips="SO10" data-fips-="" data-iso3="SOM" data-name="Mudug"/><path d="M281,64L270,80L267,86L262,93L253,102L272,105L283,99L286,99L292,102L295,105L297,101L298,95L301,92L305,87L306,86L303,84L301,84L299,86L298,82L296,81L291,81L286,77L284,75L284,70L284,61L281,61L281,64Z " data-fips="SO18" data-fips-="SO11|" data-iso3="SOM" data-name="Nugaal"/><path d="M129,227L120,227L120,227L120,232L120,270L131,285L133,284L137,277L140,274L140,272L144,268L149,262L156,255L163,248L165,246L155,246L153,238L149,226L145,226L129,227Z " data-fips="SO09" data-fips-="" data-iso3="SOM" data-name="Jubbada Hoose"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SDS.svg b/plugins/UserCountryMap/svg/SSD.svg
similarity index 92%
rename from plugins/UserCountryMap/svg/SDS.svg
rename to plugins/UserCountryMap/svg/SSD.svg
index 96aa17db747fa464ad1aa3c35e877d5f956b441b..d1b200c150baf6393a1bdec0f19e17ef583ae013 100644
--- a/plugins/UserCountryMap/svg/SDS.svg
+++ b/plugins/UserCountryMap/svg/SSD.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="8.89771301939" lon0="26.9756629921"/><bbox h="124.47" w="153.08" x="956.95" y="950.23"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M157,232L155,230L153,227L152,217L148,212L137,206L133,205L131,203L128,197L125,192L126,187L118,180L117,177L113,174L98,166L92,159L94,156L92,152L87,147L82,142L79,140L66,137L63,135L63,132L64,128L63,127L62,126L59,125L48,124L44,122L44,118L42,115L42,113L46,108L46,106L47,92L44,86L36,73L27,63L25,59L24,59L14,57L3,61L0,63L0,258L10,260L12,258L16,251L23,243L27,242L36,245L39,245L47,241L52,240L66,235L70,235L79,237L86,235L88,236L98,227L102,226L121,230L134,233L141,233L146,230L149,229L157,232Z " data-iso="CAF"/><path d="M259,279L258,278L257,275L251,275L249,269L240,265L230,255L227,250L224,247L221,246L218,246L216,250L211,253L203,250L196,250L187,255L181,254L170,247L165,240L160,236L158,234L157,232L149,229L146,230L141,233L134,233L121,230L102,226L98,227L88,236L86,235L79,237L70,235L66,235L52,240L47,241L39,245L36,245L27,242L23,243L16,251L12,258L10,260L0,258L0,299L259,299L257,293L257,289L261,282L261,280L259,279Z " data-iso="COD"/><path d="M352,101L352,102L353,127L349,131L344,132L333,131L329,132L322,146L324,150L341,154L348,159L353,167L359,174L365,177L372,184L380,202L381,207L386,215L389,217L389,218L389,219L403,222L405,224L404,238L411,247L414,248L436,249L450,256L450,25L449,28L448,30L446,34L444,33L445,32L443,29L442,28L440,29L438,28L437,28L435,26L435,24L436,18L436,17L438,15L439,15L440,16L442,16L444,15L448,14L450,15L450,0L409,0L408,2L396,6L394,8L384,26L381,30L380,32L377,46L377,50L376,56L373,62L371,62L366,58L364,60L357,69L359,77L358,81L355,87L352,99L352,101Z " data-iso="ETH"/><path d="M389,218L384,223L363,244L357,250L352,256L356,266L366,274L364,280L366,288L368,289L370,295L375,299L450,299L450,256L436,249L414,248L411,247L404,238L405,224L403,222L389,219L389,218Z " data-iso="KEN"/><path d="M25,59L27,63L36,73L44,86L47,92L46,106L46,108L42,113L42,115L44,118L44,122L48,124L59,125L62,126L62,126L62,125L66,122L73,120L74,115L77,110L77,106L80,101L81,93L87,85L88,80L89,78L95,77L110,74L114,82L121,88L132,101L135,102L138,102L147,98L169,99L176,107L199,107L199,103L207,96L218,93L221,89L221,85L233,78L247,87L255,94L267,93L269,92L281,79L289,66L302,54L303,53L301,49L300,35L292,26L312,26L325,20L323,28L322,38L325,61L324,63L330,66L333,69L346,79L348,85L348,89L347,93L347,101L352,101L352,101L352,101L352,99L355,87L358,81L359,77L357,69L364,60L366,58L371,62L373,62L376,56L377,50L377,46L380,32L381,30L384,26L394,8L396,6L408,2L409,0L0,0L0,7L7,6L11,7L13,11L12,13L14,23L17,27L16,37L19,41L23,44L27,46L26,56L25,59Z " data-iso="SDN"/><path d="M62,126L62,126L63,127L64,128L63,132L63,135L66,137L79,140L82,142L87,147L92,152L94,156L92,159L98,166L113,174L117,177L118,180L126,187L125,192L128,197L131,203L133,205L137,206L148,212L152,217L153,227L155,230L157,232L158,234L160,236L165,240L170,247L181,254L187,255L196,250L203,250L211,253L216,250L218,246L221,246L224,247L227,250L230,255L240,265L249,269L251,275L257,275L258,278L259,279L260,278L268,270L270,270L280,274L287,270L292,275L298,278L299,275L303,272L318,270L323,267L327,270L337,271L345,264L352,256L357,250L363,244L384,223L389,218L389,217L386,215L381,207L380,202L372,184L365,177L359,174L353,167L348,159L341,154L324,150L322,146L329,132L333,131L344,132L349,131L353,127L352,102L352,101L352,101L352,101L347,101L347,93L348,89L348,85L346,79L333,69L330,66L324,63L325,61L322,38L323,28L325,20L312,26L292,26L300,35L301,49L303,53L302,54L289,66L281,79L269,92L267,93L255,94L247,87L233,78L221,85L221,89L218,93L207,96L199,103L199,107L176,107L169,99L147,98L138,102L135,102L132,101L121,88L114,82L110,74L95,77L89,78L88,80L87,85L81,93L80,101L77,106L77,110L74,115L73,120L66,122L62,125L62,126Z " data-iso="SDS"/><path d="M25,59L26,56L27,46L23,44L19,41L16,37L17,27L14,23L12,13L13,11L11,7L7,6L0,7L0,63L3,61L14,57L24,59L25,59Z " data-iso="TCD"/><path d="M352,256L345,264L337,271L327,270L323,267L318,270L303,272L299,275L298,278L292,275L287,270L280,274L270,270L268,270L260,278L259,279L261,280L261,282L257,289L257,293L259,299L375,299L370,295L368,289L366,288L364,280L366,274L356,266L352,256Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M119,87L119,90L118,100L118,119L120,129L120,138L121,141L125,145L134,151L139,151L144,148L162,140L166,139L168,130L171,119L175,117L178,116L186,116L199,115L199,115L200,111L203,109L203,108L199,107L176,107L175,105L171,99L168,99L161,99L148,99L136,102L132,101L121,88L119,87Z " data-fips="SU54" data-fips-="SU06" data-iso3="SDS" data-name="North Bahr-al-Ghazal"/><path d="M243,173L240,172L230,152L229,152L225,151L221,157L211,168L209,172L205,184L202,186L196,185L194,184L193,188L192,192L193,197L196,203L199,205L203,210L207,212L222,214L225,213L227,208L231,202L232,199L231,192L239,191L241,193L245,200L247,201L253,201L259,199L265,204L268,205L278,207L282,208L283,207L283,206L279,201L275,192L275,191L270,183L258,173L258,173L243,173Z " data-fips="SU37" data-fips-="SU06" data-iso3="SDS" data-name="Lakes"/><path d="M127,187L124,191L124,194L129,197L128,203L134,205L137,205L140,207L141,209L145,210L146,212L149,212L153,218L152,222L152,225L154,228L158,233L162,238L164,238L166,241L168,242L168,245L175,250L176,252L178,252L188,255L194,251L195,249L198,249L199,250L204,250L211,253L213,253L217,247L218,245L224,246L228,248L228,248L236,241L239,241L242,243L244,244L251,238L259,233L260,224L262,219L261,214L257,211L255,208L250,205L247,201L245,200L241,193L239,191L231,192L232,199L231,202L227,208L225,213L222,214L207,212L203,210L199,205L196,203L193,197L192,192L193,188L194,184L179,185L178,185L173,181L127,187L127,187Z " data-fips="SU45" data-fips-="SU02" data-iso3="SDS" data-name="West Equatoria"/><path d="M247,201L250,205L255,208L257,211L261,214L262,219L260,224L259,233L251,238L244,244L242,243L239,241L236,241L228,248L228,249L227,251L232,255L232,257L238,261L242,266L250,269L251,276L256,274L260,278L262,275L268,270L272,271L279,274L283,273L287,269L287,270L291,261L294,259L297,255L298,251L300,245L303,240L300,233L299,229L298,211L299,208L283,207L282,208L278,207L268,205L265,204L259,199L253,201L247,201Z " data-fips="SU44" data-fips-="UG72" data-iso3="SDS" data-name="Central Equatoria"/><path d="M261,94L260,101L261,101L266,103L271,104L278,105L288,118L292,119L300,115L304,119L310,128L318,135L317,142L322,146L322,146L326,141L327,137L326,136L326,133L329,131L332,132L338,131L343,133L354,126L352,108L346,100L347,94L349,90L349,85L347,79L334,69L331,66L324,64L325,60L322,38L323,36L324,31L323,28L325,22L325,20L312,26L293,26L300,35L301,49L303,53L303,54L289,66L287,72L281,80L269,92L267,93L261,94Z " data-fips="SU35" data-fips-="SU01" data-iso3="SDS" data-name="Upper Nile"/><path d="M258,173L258,173L270,183L275,191L275,192L279,201L283,206L283,207L299,208L357,210L380,203L380,203L380,201L374,190L372,183L367,181L366,177L364,176L360,175L357,172L357,170L352,166L352,164L347,158L344,156L340,154L329,152L324,151L322,146L322,146L317,142L318,135L310,128L304,119L300,115L292,119L288,118L278,105L271,104L266,103L261,101L260,101L260,101L245,102L243,107L244,109L241,114L239,118L240,123L242,126L241,129L243,131L243,136L242,139L243,142L246,146L249,151L248,155L254,168L257,173L258,173Z " data-fips="SU51" data-fips-="SU01" data-iso3="SDS" data-name="Jungoli"/><path d="M199,107L203,108L203,109L200,111L199,115L199,115L205,115L207,115L214,127L223,134L225,151L229,152L230,152L240,172L243,173L258,173L257,173L254,168L248,155L249,151L246,146L243,142L242,139L243,136L243,131L241,129L242,126L240,123L239,118L241,114L244,109L243,107L245,102L260,101L260,101L261,94L257,94L256,95L247,87L233,78L222,85L222,89L218,94L211,95L208,97L201,101L199,103L199,106L199,107Z " data-fips="SU40" data-fips-="SU06" data-iso3="SDS" data-name="Unity"/><path d="M223,134L214,127L207,115L205,115L199,115L186,116L178,116L175,117L171,119L168,130L166,139L167,140L174,150L179,151L191,158L192,162L193,168L192,173L192,177L194,184L196,185L202,186L205,184L209,172L211,168L221,157L225,151L223,134Z " data-fips="SU59" data-fips-="SU06" data-iso3="SDS" data-name="Warap"/><path d="M127,187L173,181L178,185L179,185L194,184L192,177L192,173L193,168L192,162L191,158L179,151L174,150L167,140L166,139L162,140L144,148L139,151L134,151L125,145L121,141L120,138L120,129L118,119L118,100L119,90L119,87L119,87L113,81L113,77L112,74L90,78L89,79L86,87L84,90L80,102L77,105L77,111L74,116L74,120L69,121L63,125L61,134L61,136L67,139L70,138L73,140L75,140L82,141L87,148L93,150L94,155L91,159L92,161L96,163L97,166L102,168L103,169L115,176L118,181L127,186L127,187Z " data-fips="SU46" data-fips-="SU46" data-iso3="SDS" data-name="West Bahr-al-Ghazal"/><path d="M380,203L380,203L357,210L299,208L298,211L299,229L300,233L303,240L300,245L298,251L297,255L294,259L291,261L287,270L288,270L296,278L299,277L304,272L306,271L316,270L323,267L329,271L336,271L339,270L363,244L389,218L385,215L380,207L380,203L380,203Z " data-fips="SU57" data-fips-="SU02" data-iso3="SDS" data-name="East Equatoria"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="8.89771301939" lon0="26.9756629921"/><bbox h="124.47" w="153.08" x="956.95" y="950.23"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M157,232L155,230L153,227L152,217L148,212L137,206L133,205L131,203L128,197L125,192L126,187L118,180L117,177L113,174L98,166L92,159L94,156L92,152L87,147L82,142L79,140L66,137L63,135L63,132L64,128L63,127L62,126L59,125L48,124L44,122L44,118L42,115L42,113L46,108L46,106L47,92L44,86L36,73L27,63L25,59L24,59L14,57L3,61L0,63L0,258L10,260L12,258L16,251L23,243L27,242L36,245L39,245L47,241L52,240L66,235L70,235L79,237L86,235L88,236L98,227L102,226L121,230L134,233L141,233L146,230L149,229L157,232Z " data-iso="CAF"/><path d="M259,279L258,278L257,275L251,275L249,269L240,265L230,255L227,250L224,247L221,246L218,246L216,250L211,253L203,250L196,250L187,255L181,254L170,247L165,240L160,236L158,234L157,232L149,229L146,230L141,233L134,233L121,230L102,226L98,227L88,236L86,235L79,237L70,235L66,235L52,240L47,241L39,245L36,245L27,242L23,243L16,251L12,258L10,260L0,258L0,299L259,299L257,293L257,289L261,282L261,280L259,279Z " data-iso="COD"/><path d="M352,101L352,102L353,127L349,131L344,132L333,131L329,132L322,146L324,150L341,154L348,159L353,167L359,174L365,177L372,184L380,202L381,207L386,215L389,217L389,218L389,219L403,222L405,224L404,238L411,247L414,248L436,249L450,256L450,25L449,28L448,30L446,34L444,33L445,32L443,29L442,28L440,29L438,28L437,28L435,26L435,24L436,18L436,17L438,15L439,15L440,16L442,16L444,15L448,14L450,15L450,0L409,0L408,2L396,6L394,8L384,26L381,30L380,32L377,46L377,50L376,56L373,62L371,62L366,58L364,60L357,69L359,77L358,81L355,87L352,99L352,101Z " data-iso="ETH"/><path d="M389,218L384,223L363,244L357,250L352,256L356,266L366,274L364,280L366,288L368,289L370,295L375,299L450,299L450,256L436,249L414,248L411,247L404,238L405,224L403,222L389,219L389,218Z " data-iso="KEN"/><path d="M25,59L27,63L36,73L44,86L47,92L46,106L46,108L42,113L42,115L44,118L44,122L48,124L59,125L62,126L62,126L62,125L66,122L73,120L74,115L77,110L77,106L80,101L81,93L87,85L88,80L89,78L95,77L110,74L114,82L121,88L132,101L135,102L138,102L147,98L169,99L176,107L199,107L199,103L207,96L218,93L221,89L221,85L233,78L247,87L255,94L267,93L269,92L281,79L289,66L302,54L303,53L301,49L300,35L292,26L312,26L325,20L323,28L322,38L325,61L324,63L330,66L333,69L346,79L348,85L348,89L347,93L347,101L352,101L352,101L352,101L352,99L355,87L358,81L359,77L357,69L364,60L366,58L371,62L373,62L376,56L377,50L377,46L380,32L381,30L384,26L394,8L396,6L408,2L409,0L0,0L0,7L7,6L11,7L13,11L12,13L14,23L17,27L16,37L19,41L23,44L27,46L26,56L25,59Z " data-iso="SDN"/><path d="M62,126L62,126L63,127L64,128L63,132L63,135L66,137L79,140L82,142L87,147L92,152L94,156L92,159L98,166L113,174L117,177L118,180L126,187L125,192L128,197L131,203L133,205L137,206L148,212L152,217L153,227L155,230L157,232L158,234L160,236L165,240L170,247L181,254L187,255L196,250L203,250L211,253L216,250L218,246L221,246L224,247L227,250L230,255L240,265L249,269L251,275L257,275L258,278L259,279L260,278L268,270L270,270L280,274L287,270L292,275L298,278L299,275L303,272L318,270L323,267L327,270L337,271L345,264L352,256L357,250L363,244L384,223L389,218L389,217L386,215L381,207L380,202L372,184L365,177L359,174L353,167L348,159L341,154L324,150L322,146L329,132L333,131L344,132L349,131L353,127L352,102L352,101L352,101L352,101L347,101L347,93L348,89L348,85L346,79L333,69L330,66L324,63L325,61L322,38L323,28L325,20L312,26L292,26L300,35L301,49L303,53L302,54L289,66L281,79L269,92L267,93L255,94L247,87L233,78L221,85L221,89L218,93L207,96L199,103L199,107L176,107L169,99L147,98L138,102L135,102L132,101L121,88L114,82L110,74L95,77L89,78L88,80L87,85L81,93L80,101L77,106L77,110L74,115L73,120L66,122L62,125L62,126Z " data-iso="SSD"/><path d="M25,59L26,56L27,46L23,44L19,41L16,37L17,27L14,23L12,13L13,11L11,7L7,6L0,7L0,63L3,61L14,57L24,59L25,59Z " data-iso="TCD"/><path d="M352,256L345,264L337,271L327,270L323,267L318,270L303,272L299,275L298,278L292,275L287,270L280,274L270,270L268,270L260,278L259,279L261,280L261,282L257,289L257,293L259,299L375,299L370,295L368,289L366,288L364,280L366,274L356,266L352,256Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M119,87L119,90L118,100L118,119L120,129L120,138L121,141L125,145L134,151L139,151L144,148L162,140L166,139L168,130L171,119L175,117L178,116L186,116L199,115L199,115L200,111L203,109L203,108L199,107L176,107L175,105L171,99L168,99L161,99L148,99L136,102L132,101L121,88L119,87Z " data-fips="SU54" data-fips-="SU06" data-iso3="SSD" data-name="North Bahr-al-Ghazal"/><path d="M243,173L240,172L230,152L229,152L225,151L221,157L211,168L209,172L205,184L202,186L196,185L194,184L193,188L192,192L193,197L196,203L199,205L203,210L207,212L222,214L225,213L227,208L231,202L232,199L231,192L239,191L241,193L245,200L247,201L253,201L259,199L265,204L268,205L278,207L282,208L283,207L283,206L279,201L275,192L275,191L270,183L258,173L258,173L243,173Z " data-fips="SU37" data-fips-="SU06" data-iso3="SSD" data-name="Lakes"/><path d="M127,187L124,191L124,194L129,197L128,203L134,205L137,205L140,207L141,209L145,210L146,212L149,212L153,218L152,222L152,225L154,228L158,233L162,238L164,238L166,241L168,242L168,245L175,250L176,252L178,252L188,255L194,251L195,249L198,249L199,250L204,250L211,253L213,253L217,247L218,245L224,246L228,248L228,248L236,241L239,241L242,243L244,244L251,238L259,233L260,224L262,219L261,214L257,211L255,208L250,205L247,201L245,200L241,193L239,191L231,192L232,199L231,202L227,208L225,213L222,214L207,212L203,210L199,205L196,203L193,197L192,192L193,188L194,184L179,185L178,185L173,181L127,187L127,187Z " data-fips="SU45" data-fips-="SU02" data-iso3="SSD" data-name="West Equatoria"/><path d="M247,201L250,205L255,208L257,211L261,214L262,219L260,224L259,233L251,238L244,244L242,243L239,241L236,241L228,248L228,249L227,251L232,255L232,257L238,261L242,266L250,269L251,276L256,274L260,278L262,275L268,270L272,271L279,274L283,273L287,269L287,270L291,261L294,259L297,255L298,251L300,245L303,240L300,233L299,229L298,211L299,208L283,207L282,208L278,207L268,205L265,204L259,199L253,201L247,201Z " data-fips="SU44" data-fips-="UG72" data-iso3="SSD" data-name="Central Equatoria"/><path d="M261,94L260,101L261,101L266,103L271,104L278,105L288,118L292,119L300,115L304,119L310,128L318,135L317,142L322,146L322,146L326,141L327,137L326,136L326,133L329,131L332,132L338,131L343,133L354,126L352,108L346,100L347,94L349,90L349,85L347,79L334,69L331,66L324,64L325,60L322,38L323,36L324,31L323,28L325,22L325,20L312,26L293,26L300,35L301,49L303,53L303,54L289,66L287,72L281,80L269,92L267,93L261,94Z " data-fips="SU35" data-fips-="SU01" data-iso3="SSD" data-name="Upper Nile"/><path d="M258,173L258,173L270,183L275,191L275,192L279,201L283,206L283,207L299,208L357,210L380,203L380,203L380,201L374,190L372,183L367,181L366,177L364,176L360,175L357,172L357,170L352,166L352,164L347,158L344,156L340,154L329,152L324,151L322,146L322,146L317,142L318,135L310,128L304,119L300,115L292,119L288,118L278,105L271,104L266,103L261,101L260,101L260,101L245,102L243,107L244,109L241,114L239,118L240,123L242,126L241,129L243,131L243,136L242,139L243,142L246,146L249,151L248,155L254,168L257,173L258,173Z " data-fips="SU51" data-fips-="SU01" data-iso3="SSD" data-name="Jungoli"/><path d="M199,107L203,108L203,109L200,111L199,115L199,115L205,115L207,115L214,127L223,134L225,151L229,152L230,152L240,172L243,173L258,173L257,173L254,168L248,155L249,151L246,146L243,142L242,139L243,136L243,131L241,129L242,126L240,123L239,118L241,114L244,109L243,107L245,102L260,101L260,101L261,94L257,94L256,95L247,87L233,78L222,85L222,89L218,94L211,95L208,97L201,101L199,103L199,106L199,107Z " data-fips="SU40" data-fips-="SU06" data-iso3="SSD" data-name="Unity"/><path d="M223,134L214,127L207,115L205,115L199,115L186,116L178,116L175,117L171,119L168,130L166,139L167,140L174,150L179,151L191,158L192,162L193,168L192,173L192,177L194,184L196,185L202,186L205,184L209,172L211,168L221,157L225,151L223,134Z " data-fips="SU59" data-fips-="SU06" data-iso3="SSD" data-name="Warap"/><path d="M127,187L173,181L178,185L179,185L194,184L192,177L192,173L193,168L192,162L191,158L179,151L174,150L167,140L166,139L162,140L144,148L139,151L134,151L125,145L121,141L120,138L120,129L118,119L118,100L119,90L119,87L119,87L113,81L113,77L112,74L90,78L89,79L86,87L84,90L80,102L77,105L77,111L74,116L74,120L69,121L63,125L61,134L61,136L67,139L70,138L73,140L75,140L82,141L87,148L93,150L94,155L91,159L92,161L96,163L97,166L102,168L103,169L115,176L118,181L127,186L127,187Z " data-fips="SU46" data-fips-="SU46" data-iso3="SSD" data-name="West Bahr-al-Ghazal"/><path d="M380,203L380,203L357,210L299,208L298,211L299,229L300,233L303,240L300,245L298,251L297,255L294,259L291,261L287,270L288,270L296,278L299,277L304,272L306,271L316,270L323,267L329,271L336,271L339,270L363,244L389,218L385,215L380,207L380,203L380,203Z " data-fips="SU57" data-fips-="SU02" data-iso3="SSD" data-name="East Equatoria"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/SYR.svg b/plugins/UserCountryMap/svg/SYR.svg
index 6d8832301c3731784a8434515ba23544b93b2d3b..c3f99cf3dde35e7b3e04c1e5702441cb18c42904 100644
--- a/plugins/UserCountryMap/svg/SYR.svg
+++ b/plugins/UserCountryMap/svg/SYR.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="35.5733328314" lon0="35.9815614239"/><bbox h="71.63" w="73.37" x="993.48" y="972.5"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M13,136L12,133L13,128L35,113L39,110L33,111L24,116L19,119L0,125L0,142L8,140L10,139L16,140L13,136Z " data-iso="CYN"/><path d="M16,140L10,139L8,140L0,142L0,148L3,145L13,145L18,144L17,141L16,140Z " data-iso="CYP"/><path d="M450,0L450,0L450,3L450,3L450,0Z " data-iso="IRN"/><path d="M361,27L361,28L361,30L346,47L339,55L324,60L322,63L319,67L318,76L318,83L323,96L324,105L320,116L319,124L319,137L320,150L312,168L310,171L299,174L231,219L219,227L223,238L233,271L229,273L232,281L241,278L243,284L237,290L247,292L291,298L294,299L450,299L450,19L440,28L439,28L436,24L436,17L434,13L428,12L421,17L408,17L399,14L390,12L384,14L377,12L376,13L372,19L365,26L361,27Z " data-iso="IRQ"/><path d="M80,278L81,267L83,264L88,261L91,261L91,259L96,250L95,247L94,243L96,240L93,233L93,228L94,225L93,226L84,233L83,235L80,234L78,241L74,243L66,243L61,243L60,249L57,256L53,267L48,288L44,299L55,299L54,290L59,275L65,271L73,273L74,276L77,278L80,278Z " data-iso="ISR"/><path d="M237,290L243,284L241,278L232,281L229,273L233,271L223,238L219,227L208,234L189,247L136,282L121,280L116,279L109,273L102,271L98,265L95,262L91,261L88,261L83,264L81,267L80,278L81,287L80,294L79,299L224,299L229,297L231,297L237,290Z " data-iso="JOR"/><path d="M96,223L98,220L101,218L97,213L101,207L104,205L115,203L112,201L115,195L119,193L123,189L125,184L121,174L114,170L118,164L116,162L112,161L111,163L99,163L99,168L97,170L92,173L85,183L83,194L79,202L71,221L68,227L63,239L61,243L66,243L74,243L78,241L80,234L83,235L84,233L93,226L94,225L96,223Z " data-iso="LBN"/><path d="M237,290L231,297L229,297L224,299L294,299L291,298L247,292L237,290Z " data-iso="SAU"/><path d="M359,21L354,18L348,23L336,28L326,30L309,31L303,30L293,32L283,37L265,47L252,52L238,55L228,56L220,55L214,55L211,54L201,47L190,45L178,51L163,57L159,59L144,59L141,56L139,54L132,52L127,51L124,57L122,69L126,79L126,81L117,82L115,84L114,93L108,96L106,101L105,102L98,97L95,97L93,101L90,115L96,123L97,133L95,141L96,152L99,163L111,163L112,161L116,162L118,164L114,170L121,174L125,184L123,189L119,193L115,195L112,201L115,203L104,205L101,207L97,213L101,218L98,220L96,223L94,225L93,228L93,233L96,240L94,243L95,247L96,250L91,259L91,261L95,262L98,265L102,271L109,273L116,279L121,280L136,282L189,247L208,234L219,227L231,219L299,174L310,171L312,168L320,150L319,137L319,124L320,116L324,105L323,96L318,83L318,76L319,67L322,63L324,60L339,55L346,47L361,30L361,28L361,27L359,21Z " data-iso="SYR"/><path d="M0,0L0,83L4,82L15,77L18,74L30,61L42,52L46,50L51,51L56,55L66,60L75,63L81,62L84,59L86,55L92,53L96,49L102,46L107,51L108,59L101,66L95,72L92,77L98,93L95,97L98,97L105,102L106,101L108,96L114,93L115,84L117,82L126,81L126,79L122,69L124,57L127,51L132,52L139,54L141,56L144,59L159,59L163,57L178,51L190,45L201,47L211,54L214,55L220,55L228,56L238,55L252,52L265,47L283,37L293,32L303,30L309,31L326,30L336,28L348,23L354,18L359,21L361,27L365,26L372,19L376,13L377,12L384,14L390,12L399,14L408,17L421,17L428,12L434,13L436,17L436,24L439,28L440,28L450,19L450,3L450,3L450,0L0,0Z " data-iso="TUR"/><path d="M80,278L77,278L74,276L73,273L65,271L59,275L54,290L55,299L79,299L80,294L81,287L80,278Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M97,131L101,133L107,133L109,132L110,133L110,131L108,122L109,117L108,110L110,106L111,105L112,105L112,103L106,102L106,102L99,97L91,101L93,105L89,115L94,120L96,122L96,130L97,131Z " data-fips="SY02" data-fips-="" data-iso3="SYR" data-name="Lattakia (Al Ladhiqiyah)"/><path d="M109,132L107,133L101,133L97,131L98,133L98,134L95,139L94,148L98,160L100,163L104,163L105,163L105,162L108,156L112,150L113,149L113,149L111,147L106,146L110,143L111,140L111,134L110,133L109,132Z " data-fips="SY14" data-fips-="" data-iso3="SYR" data-name="Tartus"/><path d="M209,53L209,56L206,58L210,59L209,68L207,73L201,77L191,78L189,79L186,84L186,87L188,91L191,93L186,104L185,109L185,112L194,121L195,122L196,123L197,124L200,123L213,124L236,129L253,102L253,102L252,97L255,78L257,66L257,65L250,61L246,61L243,58L242,55L234,57L231,57L225,55L215,56L212,55L210,54L209,53Z " data-fips="SY04" data-fips-="" data-iso3="SYR" data-name="Ar Raqqah"/><path d="M204,48L202,47L194,45L190,45L187,46L181,50L175,53L168,55L166,56L160,60L143,60L137,53L135,53L127,50L125,54L123,65L122,67L123,72L127,77L127,77L131,76L132,76L131,85L131,88L136,91L139,98L142,102L146,105L145,109L149,115L151,116L154,117L157,118L166,117L176,121L194,121L185,112L185,109L186,104L191,93L188,91L186,87L186,84L189,79L191,78L201,77L207,73L209,68L210,59L206,58L209,56L209,53L204,48Z " data-fips="SY09" data-fips-="" data-iso3="SYR" data-name="Aleppo (Halab)"/><path d="M150,116L148,119L146,121L146,124L148,123L148,126L145,128L143,128L141,122L139,125L138,126L135,123L129,124L117,121L117,111L117,108L111,106L111,105L110,106L108,110L109,117L108,122L110,131L110,133L111,134L111,140L110,143L106,146L111,147L113,149L113,149L113,150L118,152L120,147L122,149L127,149L131,147L138,146L141,151L148,148L153,149L154,146L161,145L163,146L163,141L173,138L176,139L179,144L184,149L186,144L188,141L194,139L197,130L197,124L197,124L196,123L195,122L194,121L176,121L166,117L157,118L154,117L151,116L150,116Z " data-fips="SY10" data-fips-="" data-iso3="SYR" data-name="Hamah"/><path d="M236,129L213,124L200,123L197,124L197,124L197,130L194,139L188,141L186,144L184,149L179,144L176,139L173,138L163,141L163,146L161,145L154,146L153,149L148,148L141,151L138,146L131,147L127,149L122,149L120,147L118,152L113,150L113,149L112,150L108,156L105,162L105,163L106,164L114,161L119,163L118,165L114,169L114,170L118,170L122,175L122,177L125,180L124,182L125,185L126,185L130,185L138,185L146,195L150,198L154,199L156,203L166,213L171,220L174,222L182,226L200,239L209,233L219,227L278,188L245,145L245,141L242,134L241,133L236,129Z " data-fips="SY11" data-fips-="" data-iso3="SYR" data-name="Homs (Hims)"/><path d="M127,78L128,80L115,82L115,92L114,93L107,97L106,102L106,102L112,103L112,105L111,105L111,106L117,108L117,111L117,121L129,124L135,123L138,126L139,125L141,122L143,128L145,128L148,126L148,123L146,124L146,121L148,119L150,116L151,116L149,115L145,109L146,105L142,102L139,98L136,91L131,88L131,85L132,76L131,76L127,77L127,78Z " data-fips="SY12" data-fips-="" data-iso3="SYR" data-name="Idlib"/><path d="M242,55L243,58L246,61L250,61L257,65L257,66L258,68L262,73L267,78L300,107L309,110L317,109L322,110L323,108L324,104L324,97L323,94L318,85L318,70L322,61L324,59L339,55L341,54L362,29L360,24L360,20L353,17L350,21L346,25L325,31L314,32L311,31L301,30L293,31L286,36L281,38L272,44L264,48L255,52L242,55Z " data-fips="SY01" data-fips-="" data-iso3="SYR" data-name="Hasaka (Al Haksa)"/><path d="M322,110L317,109L309,110L300,107L267,78L262,73L258,68L257,66L255,78L252,97L253,102L253,102L236,129L241,133L242,134L245,141L245,145L278,188L299,174L310,171L312,168L313,165L320,150L319,126L320,120L320,113L322,110Z " data-fips="SY07" data-fips-="" data-iso3="SYR" data-name="Dayr Az Zawr"/><path d="M124,237L124,238L120,239L121,244L123,245L123,247L117,249L114,253L116,261L118,268L117,269L122,270L122,280L128,281L136,282L143,278L149,273L165,263L155,254L154,250L149,248L141,241L135,236L124,237Z " data-fips="SY05" data-fips-="" data-iso3="SYR" data-name="As Suwayda'"/><path d="M126,186L120,193L117,193L111,200L116,203L116,204L107,204L106,204L98,210L96,214L101,219L97,220L93,230L93,231L96,234L97,234L98,236L98,237L99,237L107,237L112,235L116,237L117,236L123,234L124,237L124,237L135,236L141,241L149,248L154,250L155,254L165,263L189,247L189,247L200,239L182,226L174,222L171,220L166,213L156,203L154,199L150,198L146,195L138,185L130,185L126,185L126,186Z " data-fips="SY08" data-fips-="SY13" data-iso3="SYR" data-name="Damascus"/><path d="M98,236L97,234L96,234L93,231L93,231L93,233L96,239L96,240L94,243L95,248L97,249L94,254L93,256L93,256L97,249L98,247L98,239L98,237L98,236Z " data-fips="SY03" data-fips-="" data-iso3="SYR" data-name="Quneitra"/><path d="M98,237L98,239L98,247L97,249L93,256L93,256L91,259L91,261L96,262L104,272L108,272L116,279L121,280L122,280L122,270L117,269L118,268L116,261L114,253L117,249L123,247L123,245L121,244L120,239L124,238L124,237L124,237L123,234L117,236L116,237L112,235L107,237L99,237L98,237Z " data-fips="SY06" data-fips-="" data-iso3="SYR" data-name="Dar`a"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="35.5733328314" lon0="35.9815614239"/><bbox h="71.63" w="73.37" x="993.48" y="972.5"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M13,136L12,133L13,128L35,113L39,110L33,111L24,116L19,119L0,125L0,142L8,140L10,139L16,140L13,136Z " data-iso="CYN"/><path d="M16,140L10,139L8,140L0,142L0,148L3,145L13,145L18,144L17,141L16,140Z " data-iso="CYP"/><path d="M450,0L450,0L450,3L450,3L450,0Z " data-iso="IRN"/><path d="M361,27L361,28L361,30L346,47L339,55L324,60L322,63L319,67L318,76L318,83L323,96L324,105L320,116L319,124L319,137L320,150L312,168L310,171L299,174L231,219L219,227L223,238L233,271L229,273L232,281L241,278L243,284L237,290L247,292L291,298L294,299L450,299L450,19L440,28L439,28L436,24L436,17L434,13L428,12L421,17L408,17L399,14L390,12L384,14L377,12L376,13L372,19L365,26L361,27Z " data-iso="IRQ"/><path d="M80,278L81,267L83,264L88,261L91,261L91,259L96,250L95,247L94,243L96,240L93,233L93,228L94,225L93,226L84,233L83,235L80,234L78,241L74,243L66,243L61,243L60,249L57,256L53,267L48,288L44,299L55,299L54,290L59,275L65,271L73,273L74,276L77,278L80,278Z " data-iso="ISR"/><path d="M237,290L243,284L241,278L232,281L229,273L233,271L223,238L219,227L208,234L189,247L136,282L121,280L116,279L109,273L102,271L98,265L95,262L91,261L88,261L83,264L81,267L80,278L81,287L80,294L79,299L224,299L229,297L231,297L237,290Z " data-iso="JOR"/><path d="M96,223L98,220L101,218L97,213L101,207L104,205L115,203L112,201L115,195L119,193L123,189L125,184L121,174L114,170L118,164L116,162L112,161L111,163L99,163L99,168L97,170L92,173L85,183L83,194L79,202L71,221L68,227L63,239L61,243L66,243L74,243L78,241L80,234L83,235L84,233L93,226L94,225L96,223Z " data-iso="LBN"/><path d="M237,290L231,297L229,297L224,299L294,299L291,298L247,292L237,290Z " data-iso="SAU"/><path d="M359,21L354,18L348,23L336,28L326,30L309,31L303,30L293,32L283,37L265,47L252,52L238,55L228,56L220,55L214,55L211,54L201,47L190,45L178,51L163,57L159,59L144,59L141,56L139,54L132,52L127,51L124,57L122,69L126,79L126,81L117,82L115,84L114,93L108,96L106,101L105,102L98,97L95,97L93,101L90,115L96,123L97,133L95,141L96,152L99,163L111,163L112,161L116,162L118,164L114,170L121,174L125,184L123,189L119,193L115,195L112,201L115,203L104,205L101,207L97,213L101,218L98,220L96,223L94,225L93,228L93,233L96,240L94,243L95,247L96,250L91,259L91,261L95,262L98,265L102,271L109,273L116,279L121,280L136,282L189,247L208,234L219,227L231,219L299,174L310,171L312,168L320,150L319,137L319,124L320,116L324,105L323,96L318,83L318,76L319,67L322,63L324,60L339,55L346,47L361,30L361,28L361,27L359,21Z " data-iso="SYR"/><path d="M0,0L0,83L4,82L15,77L18,74L30,61L42,52L46,50L51,51L56,55L66,60L75,63L81,62L84,59L86,55L92,53L96,49L102,46L107,51L108,59L101,66L95,72L92,77L98,93L95,97L98,97L105,102L106,101L108,96L114,93L115,84L117,82L126,81L126,79L122,69L124,57L127,51L132,52L139,54L141,56L144,59L159,59L163,57L178,51L190,45L201,47L211,54L214,55L220,55L228,56L238,55L252,52L265,47L283,37L293,32L303,30L309,31L326,30L336,28L348,23L354,18L359,21L361,27L365,26L372,19L376,13L377,12L384,14L390,12L399,14L408,17L421,17L428,12L434,13L436,17L436,24L439,28L440,28L450,19L450,3L450,3L450,0L0,0Z " data-iso="TUR"/><path d="M80,278L77,278L74,276L73,273L65,271L59,275L54,290L55,299L79,299L80,294L81,287L80,278Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M97,131L101,133L107,133L109,132L110,133L110,131L108,122L109,117L108,110L110,106L111,105L112,105L112,103L106,102L106,102L99,97L91,101L93,105L89,115L94,120L96,122L96,130L97,131Z " data-fips="SY02" data-fips-="" data-iso3="SYR" data-name="Lattakia (Al Ladhiqiyah)"/><path d="M109,132L107,133L101,133L97,131L98,133L98,134L95,139L94,148L98,160L100,163L104,163L105,163L105,162L108,156L112,150L113,149L113,149L111,147L106,146L110,143L111,140L111,134L110,133L109,132Z " data-fips="SY14" data-fips-="" data-iso3="SYR" data-name="Tartus"/><path d="M209,53L209,56L206,58L210,59L209,68L207,73L201,77L191,78L189,79L186,84L186,87L188,91L191,93L186,104L185,109L185,112L194,121L195,122L196,123L197,124L200,123L213,124L236,129L253,102L253,102L252,97L255,78L257,66L257,65L250,61L246,61L243,58L242,55L234,57L231,57L225,55L215,56L212,55L210,54L209,53Z " data-fips="SY04" data-fips-="" data-iso3="SYR" data-name="Ar Raqqah"/><path d="M204,48L202,47L194,45L190,45L187,46L181,50L175,53L168,55L166,56L160,60L143,60L137,53L135,53L127,50L125,54L123,65L122,67L123,72L127,77L127,77L131,76L132,76L131,85L131,88L136,91L139,98L142,102L146,105L145,109L149,115L151,116L154,117L157,118L166,117L176,121L194,121L185,112L185,109L186,104L191,93L188,91L186,87L186,84L189,79L191,78L201,77L207,73L209,68L210,59L206,58L209,56L209,53L204,48Z " data-fips="SY09" data-fips-="" data-iso3="SYR" data-name="Aleppo (Halab)"/><path d="M150,116L148,119L146,121L146,124L148,123L148,126L145,128L143,128L141,122L139,125L138,126L135,123L129,124L117,121L117,111L117,108L111,106L111,105L110,106L108,110L109,117L108,122L110,131L110,133L111,134L111,140L110,143L106,146L111,147L113,149L113,149L113,150L118,152L120,147L122,149L127,149L131,147L138,146L141,151L148,148L153,149L154,146L161,145L163,146L163,141L173,138L176,139L179,144L184,149L186,144L188,141L194,139L197,130L197,124L197,124L196,123L195,122L194,121L176,121L166,117L157,118L154,117L151,116L150,116Z " data-fips="SY10" data-fips-="" data-iso3="SYR" data-name="Hamah"/><path d="M236,129L213,124L200,123L197,124L197,124L197,130L194,139L188,141L186,144L184,149L179,144L176,139L173,138L163,141L163,146L161,145L154,146L153,149L148,148L141,151L138,146L131,147L127,149L122,149L120,147L118,152L113,150L113,149L112,150L108,156L105,162L105,163L106,164L114,161L119,163L118,165L114,169L114,170L118,170L122,175L122,177L125,180L124,182L125,185L126,185L130,185L138,185L146,195L150,198L154,199L156,203L166,213L171,220L174,222L182,226L200,239L209,233L219,227L278,188L245,145L245,141L242,134L241,133L236,129Z " data-fips="SY11" data-fips-="" data-iso3="SYR" data-name="Homs (Hims)"/><path d="M127,78L128,80L115,82L115,92L114,93L107,97L106,102L106,102L112,103L112,105L111,105L111,106L117,108L117,111L117,121L129,124L135,123L138,126L139,125L141,122L143,128L145,128L148,126L148,123L146,124L146,121L148,119L150,116L151,116L149,115L145,109L146,105L142,102L139,98L136,91L131,88L131,85L132,76L131,76L127,77L127,78Z " data-fips="SY12" data-fips-="" data-iso3="SYR" data-name="Idlib"/><path d="M242,55L243,58L246,61L250,61L257,65L257,66L258,68L262,73L267,78L300,107L309,110L317,109L322,110L323,108L324,104L324,97L323,94L318,85L318,70L322,61L324,59L339,55L341,54L362,29L360,24L360,20L353,17L350,21L346,25L325,31L314,32L311,31L301,30L293,31L286,36L281,38L272,44L264,48L255,52L242,55Z " data-fips="SY01" data-fips-="" data-iso3="SYR" data-name="Hasaka (Al Haksa)"/><path d="M322,110L317,109L309,110L300,107L267,78L262,73L258,68L257,66L255,78L252,97L253,102L253,102L236,129L241,133L242,134L245,141L245,145L278,188L299,174L310,171L312,168L313,165L320,150L319,126L320,120L320,113L322,110Z " data-fips="SY07" data-fips-="" data-iso3="SYR" data-name="Dayr Az Zawr"/><path d="M124,237L124,238L120,239L121,244L123,245L123,247L117,249L114,253L116,261L118,268L117,269L122,270L122,280L128,281L136,282L143,278L149,273L165,263L155,254L154,250L149,248L141,241L135,236L124,237Z " data-fips="SY05" data-fips-="" data-iso3="SYR" data-name="As Suwayda'"/><path d="M126,186L120,193L117,193L111,200L116,203L116,204L107,204L106,204L98,210L96,214L101,219L97,220L93,230L93,231L96,234L97,234L98,236L98,237L99,237L107,237L112,235L116,237L117,236L123,234L124,237L124,237L135,236L141,241L149,248L154,250L155,254L165,263L189,247L189,247L200,239L182,226L174,222L171,220L166,213L156,203L154,199L150,198L146,195L138,185L130,185L126,185L126,186Z " data-fips="SY08" data-fips-="SY13" data-iso3="SYR" data-name="Damascus"/><path d="M98,236L97,234L96,234L93,231L93,231L93,233L96,239L96,240L94,243L95,248L97,249L94,254L93,256L93,256L97,249L98,247L98,239L98,237L98,236Z " data-fips="SY03" data-fips-="" data-iso3="SYR" data-name="Quneitra"/><path d="M98,237L98,239L98,247L97,249L93,256L93,256L91,259L91,261L96,262L104,272L108,272L116,279L121,280L122,280L122,270L117,269L118,268L116,261L114,253L117,249L123,247L123,245L121,244L120,239L124,238L124,237L124,237L123,234L117,236L116,237L112,235L107,237L99,237L98,237Z " data-fips="SY06" data-fips-="" data-iso3="SYR" data-name="Dar`a"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/TCD.svg b/plugins/UserCountryMap/svg/TCD.svg
index 5ad9b8b4edbdddf179ac944946e33d969bb54f25..888ca011bd06953a3a4326f73cc937ab374cbbe2 100644
--- a/plugins/UserCountryMap/svg/TCD.svg
+++ b/plugins/UserCountryMap/svg/TCD.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 451" height="451px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 451" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="19.4144225126" lon0="19.836724536"/><bbox h="212.14" w="140.75" x="916.07" y="942.22"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M365,401L363,401L351,399L350,395L348,390L352,384L352,372L349,366L342,355L333,347L331,343L330,343L322,342L303,351L302,354L302,356L297,363L294,368L291,368L284,375L278,383L267,391L260,390L257,392L248,393L242,394L231,396L229,398L235,403L230,409L222,416L221,418L200,420L197,420L177,429L175,431L169,426L168,424L164,427L155,430L153,432L143,431L140,431L138,435L134,438L129,449L419,449L415,445L411,442L398,435L393,430L394,427L393,423L388,419L384,415L381,413L369,411L366,407L367,402L365,401Z " data-iso="CAF"/><path d="M140,431L142,429L142,424L141,424L135,410L131,404L125,398L121,396L111,387L103,376L102,374L107,368L109,366L125,368L131,367L143,368L146,367L136,357L134,354L131,344L130,337L133,326L132,324L127,307L126,301L124,297L119,293L118,288L111,286L107,285L109,298L110,304L118,306L119,325L117,328L109,333L103,334L101,336L96,343L92,350L88,361L84,364L83,374L75,380L74,383L71,395L66,400L61,401L56,410L54,418L51,423L50,427L45,433L46,439L39,444L38,449L129,449L134,438L138,435L140,431Z M0,449L24,449L17,441L13,439L10,443L3,443L1,440L0,441L0,449Z " data-iso="CMR"/><path d="M65,11L63,6L61,1L61,0L0,0L0,48L27,33L40,25L52,18L65,11Z " data-iso="DZA"/><path d="M378,53L387,53L415,52L424,51L450,50L450,0L376,0L377,24L377,29L378,47L378,53Z " data-iso="EGY"/><path d="M65,11L78,14L101,21L104,23L119,36L137,27L137,27L146,23L161,16L215,46L261,71L344,113L356,119L356,116L355,106L380,105L379,66L378,53L378,47L377,29L377,24L376,0L61,0L61,1L63,6L65,11Z " data-iso="LBY"/><path d="M95,269L93,257L92,251L97,245L102,236L116,216L145,186L149,149L153,108L158,95L150,87L149,83L151,81L143,69L141,67L141,55L139,42L137,27L137,27L119,36L104,23L101,21L78,14L65,11L52,18L40,25L27,33L0,48L0,281L5,278L16,275L28,275L47,277L54,281L57,283L66,284L67,281L71,278L81,273L85,272L91,269L95,269Z " data-iso="NER"/><path d="M107,285L103,281L99,274L95,269L91,269L85,272L81,273L71,278L67,281L66,284L57,283L54,281L47,277L28,275L16,275L5,278L0,281L0,441L1,440L3,443L10,443L13,439L17,441L24,449L38,449L39,444L46,439L45,433L50,427L51,423L54,418L56,410L61,401L66,400L71,395L74,383L75,380L83,374L84,364L88,361L92,350L96,343L101,336L103,334L109,333L117,328L119,325L118,306L110,304L109,298L107,285Z " data-iso="NGA"/><path d="M378,53L379,66L380,105L355,106L356,116L356,119L356,131L358,216L358,218L339,219L336,219L332,223L332,233L328,237L326,240L318,249L322,259L313,266L312,267L313,273L314,275L315,281L309,287L305,293L304,295L307,298L315,297L318,298L320,301L319,303L321,312L323,324L326,328L333,332L332,341L331,343L333,347L342,355L349,366L352,372L352,384L348,390L350,395L351,399L363,401L365,401L365,401L366,401L369,397L375,395L376,391L378,386L379,384L382,379L382,370L388,358L394,358L407,355L410,361L417,366L427,377L430,378L441,375L450,375L450,50L424,51L415,52L387,53L378,53Z " data-iso="SDN"/><path d="M365,401L365,401L367,402L366,407L369,411L381,413L384,415L388,419L393,423L394,427L393,430L398,435L411,442L415,445L419,449L450,449L450,375L441,375L430,378L427,377L417,366L410,361L407,355L394,358L388,358L382,370L382,379L379,384L378,386L376,391L375,395L369,397L366,401L365,401Z " data-iso="SDS"/><path d="M344,113L261,71L215,46L161,16L146,23L137,27L139,42L141,55L141,67L143,69L151,81L149,83L150,87L158,95L153,108L149,149L145,186L116,216L102,236L97,245L92,251L93,257L95,269L99,274L103,281L107,285L111,286L118,288L119,293L124,297L126,301L127,307L132,324L133,326L130,337L131,344L134,354L136,357L146,367L143,368L131,367L125,368L109,366L107,368L102,374L103,376L111,387L121,396L125,398L131,404L135,410L141,424L142,424L142,429L140,431L143,431L153,432L155,430L164,427L168,424L169,426L175,431L177,429L197,420L200,420L221,418L222,416L230,409L235,403L229,398L231,396L242,394L248,393L257,392L260,390L267,391L278,383L284,375L291,368L294,368L297,363L302,356L302,354L303,351L322,342L330,343L331,343L332,341L333,332L326,328L323,324L321,312L319,303L320,301L318,298L315,297L307,298L304,295L305,293L309,287L315,281L314,275L313,273L312,267L313,266L322,259L318,249L326,240L328,237L332,233L332,223L336,219L339,219L358,218L358,216L356,131L356,119L344,113Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M145,187L145,187L204,217L205,219L207,221L210,223L214,226L219,227L227,226L230,225L235,220L236,218L239,207L241,207L243,212L249,215L254,217L258,217L260,217L265,220L270,219L279,217L285,212L290,214L292,213L302,211L306,213L310,211L315,213L318,212L321,215L332,215L336,218L337,218L351,217L358,218L238,58L161,16L161,16L137,27L141,53L141,66L143,69L151,81L149,84L152,88L159,96L159,98L154,106L153,108L145,186L145,187Z " data-fips="CD03" data-fips-="" data-iso3="TCD" data-name="Bet"/><path d="M117,288L118,291L122,295L125,298L128,306L127,310L131,312L131,317L132,320L130,336L130,338L137,336L139,337L143,343L148,346L155,346L159,348L158,355L158,359L160,362L160,362L166,362L169,361L171,365L177,367L179,369L184,370L186,372L190,372L191,373L194,356L197,323L194,318L194,316L196,312L195,311L195,311L191,310L189,306L181,290L184,287L185,286L183,285L168,287L163,287L155,286L153,284L153,284L149,284L141,280L140,278L136,278L139,282L134,283L131,282L132,285L130,288L117,288L117,288Z " data-fips="CD04" data-fips-="" data-iso3="TCD" data-name="Hadjer-Lamis"/><path d="M205,219L204,217L145,187L145,187L144,187L144,187L116,216L102,235L100,240L100,241L97,244L97,247L96,247L100,248L105,249L109,253L115,258L117,259L122,264L126,271L127,270L136,269L149,269L153,275L153,283L153,284L155,286L163,287L168,287L183,285L185,286L186,283L187,271L188,270L196,268L207,221L205,219Z " data-fips="CD06" data-fips-="" data-iso3="TCD" data-name="Kanem"/><path d="M96,248L92,249L95,269L107,285L116,286L117,288L130,288L132,285L131,282L134,283L139,282L136,278L140,278L141,280L149,284L153,284L153,284L153,283L153,275L149,269L136,269L127,270L126,271L122,264L117,259L115,258L109,253L105,249L100,248L96,247L96,248Z " data-fips="CD07" data-fips-="" data-iso3="TCD" data-name="Lac"/><path d="M254,217L249,215L243,212L241,207L239,207L236,218L235,220L230,225L227,226L219,227L214,226L210,223L207,221L196,268L188,270L187,271L186,283L185,286L184,287L181,290L189,306L191,310L195,311L195,311L195,310L203,303L206,303L219,296L234,296L237,296L241,296L243,299L239,303L241,309L242,312L243,312L249,313L253,314L253,312L256,305L259,299L262,295L258,290L265,287L266,284L264,272L264,267L258,263L258,260L258,217L254,217Z " data-fips="CD01" data-fips-="" data-iso3="TCD" data-name="Batha"/><path d="M258,217L258,260L262,255L264,253L272,251L279,254L282,258L289,261L294,260L301,261L310,263L313,265L313,265L319,262L322,257L320,254L318,248L325,245L327,238L333,231L333,227L331,223L336,218L336,218L332,215L321,215L318,212L315,213L310,211L306,213L302,211L292,213L290,214L285,212L279,217L270,219L265,220L260,217L258,217Z " data-fips="CD02" data-fips-="" data-iso3="TCD" data-name="Wadi Fira"/><path d="M241,309L239,303L243,299L241,296L237,296L234,296L219,296L206,303L203,303L195,310L195,311L196,312L194,316L194,318L197,323L194,356L202,355L204,358L214,361L216,363L222,368L222,370L226,371L227,368L236,364L241,356L246,355L249,352L249,352L250,350L250,344L249,342L243,340L234,336L230,334L228,332L229,324L229,323L234,326L240,320L238,316L242,312L241,309Z " data-fips="CD05" data-fips-="" data-iso3="TCD" data-name="Gura"/><path d="M258,260L258,263L264,267L264,272L266,284L265,287L258,290L262,295L259,299L256,305L253,312L253,314L254,314L257,316L256,315L264,314L271,318L284,325L284,327L305,323L311,326L319,343L319,343L321,341L331,343L333,339L334,335L333,331L326,329L323,325L325,314L321,315L321,312L319,305L319,304L320,299L314,296L308,299L307,299L307,288L308,287L315,282L315,278L311,269L311,268L313,265L310,263L301,261L294,260L289,261L282,258L279,254L272,251L264,253L262,255L258,260Z " data-fips="CD12" data-fips-="" data-iso3="TCD" data-name="Ouadda"/><path d="M166,390L158,391L155,390L150,392L141,392L140,392L140,392L138,399L137,401L135,407L135,407L136,408L143,412L147,410L149,411L162,402L170,396L166,390L166,390L166,390Z " data-fips="CD08" data-fips-="" data-iso3="TCD" data-name="Logone Occidental"/><path d="M166,390L166,390L170,396L162,402L149,411L147,410L143,412L136,408L135,407L134,407L134,408L137,415L139,423L143,424L141,431L145,431L148,433L156,430L163,428L164,425L168,423L170,427L174,431L175,431L186,425L186,424L182,416L187,412L181,404L183,400L183,393L183,392L180,392L174,391L169,390L166,390L166,390Z " data-fips="CD09" data-fips-="" data-iso3="TCD" data-name="Logone Oriental"/><path d="M130,340L131,345L133,350L133,352L135,354L137,358L141,363L145,366L140,368L133,367L126,367L122,368L114,366L107,367L106,370L103,372L104,377L111,386L112,388L123,397L124,397L130,402L133,406L134,408L134,407L135,407L135,407L137,401L138,399L140,392L140,392L140,391L142,384L146,380L147,377L150,374L154,375L159,371L161,362L160,362L160,362L158,359L158,355L159,348L155,346L148,346L143,343L139,337L137,336L130,338L130,340Z " data-fips="CD10" data-fips-="" data-iso3="TCD" data-name="Mayo-Kebbi Est"/><path d="M190,372L186,372L184,370L179,369L177,367L171,365L169,361L166,362L160,362L161,362L159,371L154,375L150,374L147,377L146,380L142,384L140,391L140,392L141,392L150,392L155,390L158,391L166,390L166,390L166,390L169,390L174,391L180,392L183,392L185,390L182,386L186,383L186,379L191,377L194,378L194,375L191,373L190,372Z " data-fips="CD14" data-fips-="" data-iso3="TCD" data-name="Tandjil"/><path d="M249,352L246,355L241,356L236,364L227,368L226,371L222,370L222,368L216,363L214,361L204,358L202,355L194,356L191,373L194,375L194,378L191,377L186,379L186,383L182,386L185,390L183,392L183,393L183,400L181,404L187,412L182,416L186,424L186,424L191,422L192,423L196,421L201,421L208,419L219,419L225,414L226,413L232,406L235,402L229,398L230,396L233,394L239,393L243,393L255,393L256,392L256,392L249,370L248,365L248,359L249,352L249,352Z " data-fips="CD11" data-fips-="" data-iso3="TCD" data-name="Mandoul"/><path d="M253,314L249,313L243,312L242,312L238,316L240,320L234,326L229,323L229,324L228,332L230,334L234,336L243,340L249,342L250,344L250,350L249,352L248,359L248,365L249,370L256,392L256,392L263,390L265,391L269,390L270,389L279,383L280,381L285,374L285,374L291,368L293,368L297,363L301,362L303,356L302,354L302,351L309,348L310,347L314,346L316,344L319,343L319,343L311,326L305,323L284,327L284,325L271,318L264,314L256,315L257,316L254,314L253,314Z " data-fips="CD13" data-fips-="" data-iso3="TCD" data-name="Salamat"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="19.4144225126" lon0="19.836724536"/><bbox h="212.14" w="140.75" x="916.07" y="942.22"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M365,401L363,401L351,399L350,395L348,390L352,384L352,372L349,366L342,355L333,347L331,343L330,343L322,342L303,351L302,354L302,356L297,363L294,368L291,368L284,375L278,383L267,391L260,390L257,392L248,393L242,394L231,396L229,398L235,403L230,409L222,416L221,418L200,420L197,420L177,429L175,431L169,426L168,424L164,427L155,430L153,432L143,431L140,431L138,435L134,438L129,449L419,449L415,445L411,442L398,435L393,430L394,427L393,423L388,419L384,415L381,413L369,411L366,407L367,402L365,401Z " data-iso="CAF"/><path d="M140,431L142,429L142,424L141,424L135,410L131,404L125,398L121,396L111,387L103,376L102,374L107,368L109,366L125,368L131,367L143,368L146,367L136,357L134,354L131,344L130,337L133,326L132,324L127,307L126,301L124,297L119,293L118,288L111,286L107,285L109,298L110,304L118,306L119,325L117,328L109,333L103,334L101,336L96,343L92,350L88,361L84,364L83,374L75,380L74,383L71,395L66,400L61,401L56,410L54,418L51,423L50,427L45,433L46,439L39,444L38,449L129,449L134,438L138,435L140,431Z M0,449L24,449L17,441L13,439L10,443L3,443L1,440L0,441L0,449Z " data-iso="CMR"/><path d="M65,11L63,6L61,1L61,0L0,0L0,48L27,33L40,25L52,18L65,11Z " data-iso="DZA"/><path d="M378,53L387,53L415,52L424,51L450,50L450,0L376,0L377,24L377,29L378,47L378,53Z " data-iso="EGY"/><path d="M65,11L78,14L101,21L104,23L119,36L137,27L137,27L146,23L161,16L215,46L261,71L344,113L356,119L356,116L355,106L380,105L379,66L378,53L378,47L377,29L377,24L376,0L61,0L61,1L63,6L65,11Z " data-iso="LBY"/><path d="M95,269L93,257L92,251L97,245L102,236L116,216L145,186L149,149L153,108L158,95L150,87L149,83L151,81L143,69L141,67L141,55L139,42L137,27L137,27L119,36L104,23L101,21L78,14L65,11L52,18L40,25L27,33L0,48L0,281L5,278L16,275L28,275L47,277L54,281L57,283L66,284L67,281L71,278L81,273L85,272L91,269L95,269Z " data-iso="NER"/><path d="M107,285L103,281L99,274L95,269L91,269L85,272L81,273L71,278L67,281L66,284L57,283L54,281L47,277L28,275L16,275L5,278L0,281L0,441L1,440L3,443L10,443L13,439L17,441L24,449L38,449L39,444L46,439L45,433L50,427L51,423L54,418L56,410L61,401L66,400L71,395L74,383L75,380L83,374L84,364L88,361L92,350L96,343L101,336L103,334L109,333L117,328L119,325L118,306L110,304L109,298L107,285Z " data-iso="NGA"/><path d="M378,53L379,66L380,105L355,106L356,116L356,119L356,131L358,216L358,218L339,219L336,219L332,223L332,233L328,237L326,240L318,249L322,259L313,266L312,267L313,273L314,275L315,281L309,287L305,293L304,295L307,298L315,297L318,298L320,301L319,303L321,312L323,324L326,328L333,332L332,341L331,343L333,347L342,355L349,366L352,372L352,384L348,390L350,395L351,399L363,401L365,401L365,401L366,401L369,397L375,395L376,391L378,386L379,384L382,379L382,370L388,358L394,358L407,355L410,361L417,366L427,377L430,378L441,375L450,375L450,50L424,51L415,52L387,53L378,53Z " data-iso="SDN"/><path d="M365,401L365,401L367,402L366,407L369,411L381,413L384,415L388,419L393,423L394,427L393,430L398,435L411,442L415,445L419,449L450,449L450,375L441,375L430,378L427,377L417,366L410,361L407,355L394,358L388,358L382,370L382,379L379,384L378,386L376,391L375,395L369,397L366,401L365,401Z " data-iso="SSD"/><path d="M344,113L261,71L215,46L161,16L146,23L137,27L139,42L141,55L141,67L143,69L151,81L149,83L150,87L158,95L153,108L149,149L145,186L116,216L102,236L97,245L92,251L93,257L95,269L99,274L103,281L107,285L111,286L118,288L119,293L124,297L126,301L127,307L132,324L133,326L130,337L131,344L134,354L136,357L146,367L143,368L131,367L125,368L109,366L107,368L102,374L103,376L111,387L121,396L125,398L131,404L135,410L141,424L142,424L142,429L140,431L143,431L153,432L155,430L164,427L168,424L169,426L175,431L177,429L197,420L200,420L221,418L222,416L230,409L235,403L229,398L231,396L242,394L248,393L257,392L260,390L267,391L278,383L284,375L291,368L294,368L297,363L302,356L302,354L303,351L322,342L330,343L331,343L332,341L333,332L326,328L323,324L321,312L319,303L320,301L318,298L315,297L307,298L304,295L305,293L309,287L315,281L314,275L313,273L312,267L313,266L322,259L318,249L326,240L328,237L332,233L332,223L336,219L339,219L358,218L358,216L356,131L356,119L344,113Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M145,187L145,187L204,217L205,219L207,221L210,223L214,226L219,227L227,226L230,225L235,220L236,218L239,207L241,207L243,212L249,215L254,217L258,217L260,217L265,220L270,219L279,217L285,212L290,214L292,213L302,211L306,213L310,211L315,213L318,212L321,215L332,215L336,218L337,218L351,217L358,218L238,58L161,16L161,16L137,27L141,53L141,66L143,69L151,81L149,84L152,88L159,96L159,98L154,106L153,108L145,186L145,187Z " data-fips="CD03" data-fips-="" data-iso3="TCD" data-name="Bet"/><path d="M117,288L118,291L122,295L125,298L128,306L127,310L131,312L131,317L132,320L130,336L130,338L137,336L139,337L143,343L148,346L155,346L159,348L158,355L158,359L160,362L160,362L166,362L169,361L171,365L177,367L179,369L184,370L186,372L190,372L191,373L194,356L197,323L194,318L194,316L196,312L195,311L195,311L191,310L189,306L181,290L184,287L185,286L183,285L168,287L163,287L155,286L153,284L153,284L149,284L141,280L140,278L136,278L139,282L134,283L131,282L132,285L130,288L117,288L117,288Z " data-fips="CD04" data-fips-="" data-iso3="TCD" data-name="Hadjer-Lamis"/><path d="M205,219L204,217L145,187L145,187L144,187L144,187L116,216L102,235L100,240L100,241L97,244L97,247L96,247L100,248L105,249L109,253L115,258L117,259L122,264L126,271L127,270L136,269L149,269L153,275L153,283L153,284L155,286L163,287L168,287L183,285L185,286L186,283L187,271L188,270L196,268L207,221L205,219Z " data-fips="CD06" data-fips-="" data-iso3="TCD" data-name="Kanem"/><path d="M96,248L92,249L95,269L107,285L116,286L117,288L130,288L132,285L131,282L134,283L139,282L136,278L140,278L141,280L149,284L153,284L153,284L153,283L153,275L149,269L136,269L127,270L126,271L122,264L117,259L115,258L109,253L105,249L100,248L96,247L96,248Z " data-fips="CD07" data-fips-="" data-iso3="TCD" data-name="Lac"/><path d="M254,217L249,215L243,212L241,207L239,207L236,218L235,220L230,225L227,226L219,227L214,226L210,223L207,221L196,268L188,270L187,271L186,283L185,286L184,287L181,290L189,306L191,310L195,311L195,311L195,310L203,303L206,303L219,296L234,296L237,296L241,296L243,299L239,303L241,309L242,312L243,312L249,313L253,314L253,312L256,305L259,299L262,295L258,290L265,287L266,284L264,272L264,267L258,263L258,260L258,217L254,217Z " data-fips="CD01" data-fips-="" data-iso3="TCD" data-name="Batha"/><path d="M258,217L258,260L262,255L264,253L272,251L279,254L282,258L289,261L294,260L301,261L310,263L313,265L313,265L319,262L322,257L320,254L318,248L325,245L327,238L333,231L333,227L331,223L336,218L336,218L332,215L321,215L318,212L315,213L310,211L306,213L302,211L292,213L290,214L285,212L279,217L270,219L265,220L260,217L258,217Z " data-fips="CD02" data-fips-="" data-iso3="TCD" data-name="Wadi Fira"/><path d="M241,309L239,303L243,299L241,296L237,296L234,296L219,296L206,303L203,303L195,310L195,311L196,312L194,316L194,318L197,323L194,356L202,355L204,358L214,361L216,363L222,368L222,370L226,371L227,368L236,364L241,356L246,355L249,352L249,352L250,350L250,344L249,342L243,340L234,336L230,334L228,332L229,324L229,323L234,326L240,320L238,316L242,312L241,309Z " data-fips="CD05" data-fips-="" data-iso3="TCD" data-name="Gura"/><path d="M258,260L258,263L264,267L264,272L266,284L265,287L258,290L262,295L259,299L256,305L253,312L253,314L254,314L257,316L256,315L264,314L271,318L284,325L284,327L305,323L311,326L319,343L319,343L321,341L331,343L333,339L334,335L333,331L326,329L323,325L325,314L321,315L321,312L319,305L319,304L320,299L314,296L308,299L307,299L307,288L308,287L315,282L315,278L311,269L311,268L313,265L310,263L301,261L294,260L289,261L282,258L279,254L272,251L264,253L262,255L258,260Z " data-fips="CD12" data-fips-="" data-iso3="TCD" data-name="Ouadda"/><path d="M166,390L158,391L155,390L150,392L141,392L140,392L140,392L138,399L137,401L135,407L135,407L136,408L143,412L147,410L149,411L162,402L170,396L166,390L166,390L166,390Z " data-fips="CD08" data-fips-="" data-iso3="TCD" data-name="Logone Occidental"/><path d="M166,390L166,390L170,396L162,402L149,411L147,410L143,412L136,408L135,407L134,407L134,408L137,415L139,423L143,424L141,431L145,431L148,433L156,430L163,428L164,425L168,423L170,427L174,431L175,431L186,425L186,424L182,416L187,412L181,404L183,400L183,393L183,392L180,392L174,391L169,390L166,390L166,390Z " data-fips="CD09" data-fips-="" data-iso3="TCD" data-name="Logone Oriental"/><path d="M130,340L131,345L133,350L133,352L135,354L137,358L141,363L145,366L140,368L133,367L126,367L122,368L114,366L107,367L106,370L103,372L104,377L111,386L112,388L123,397L124,397L130,402L133,406L134,408L134,407L135,407L135,407L137,401L138,399L140,392L140,392L140,391L142,384L146,380L147,377L150,374L154,375L159,371L161,362L160,362L160,362L158,359L158,355L159,348L155,346L148,346L143,343L139,337L137,336L130,338L130,340Z " data-fips="CD10" data-fips-="" data-iso3="TCD" data-name="Mayo-Kebbi Est"/><path d="M190,372L186,372L184,370L179,369L177,367L171,365L169,361L166,362L160,362L161,362L159,371L154,375L150,374L147,377L146,380L142,384L140,391L140,392L141,392L150,392L155,390L158,391L166,390L166,390L166,390L169,390L174,391L180,392L183,392L185,390L182,386L186,383L186,379L191,377L194,378L194,375L191,373L190,372Z " data-fips="CD14" data-fips-="" data-iso3="TCD" data-name="Tandjil"/><path d="M249,352L246,355L241,356L236,364L227,368L226,371L222,370L222,368L216,363L214,361L204,358L202,355L194,356L191,373L194,375L194,378L191,377L186,379L186,383L182,386L185,390L183,392L183,393L183,400L181,404L187,412L182,416L186,424L186,424L191,422L192,423L196,421L201,421L208,419L219,419L225,414L226,413L232,406L235,402L229,398L230,396L233,394L239,393L243,393L255,393L256,392L256,392L249,370L248,365L248,359L249,352L249,352Z " data-fips="CD11" data-fips-="" data-iso3="TCD" data-name="Mandoul"/><path d="M253,314L249,313L243,312L242,312L238,316L240,320L234,326L229,323L229,324L228,332L230,334L234,336L243,340L249,342L250,344L250,350L249,352L248,359L248,365L249,370L256,392L256,392L263,390L265,391L269,390L270,389L279,383L280,381L285,374L285,374L291,368L293,368L297,363L301,362L303,356L302,354L302,351L309,348L310,347L314,346L316,344L319,343L319,343L311,326L305,323L284,327L284,325L271,318L264,314L256,315L257,316L254,314L253,314Z " data-fips="CD13" data-fips-="" data-iso3="TCD" data-name="Salamat"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/UGA.svg b/plugins/UserCountryMap/svg/UGA.svg
index 593451bab2b01fa56ac85e9a52d8bb5fa3300240..cdb157a0c3fe4419c5d5d1788bb8d5151f5389ec 100644
--- a/plugins/UserCountryMap/svg/UGA.svg
+++ b/plugins/UserCountryMap/svg/UGA.svg
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="-0.564616387286" lon0="32.4167090184"/><bbox h="78.36" w="75.42" x="960.56" y="936.93"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M0,0L0,299L78,299L87,286L90,285L96,281L98,279L98,278L97,260L99,247L101,239L101,235L104,217L104,209L107,206L109,202L115,191L114,182L115,176L120,173L126,168L129,162L133,158L140,156L140,155L137,155L136,153L139,149L140,145L143,142L146,140L150,135L151,134L159,127L162,124L164,123L173,116L177,113L177,112L173,107L169,106L163,101L157,101L152,98L152,95L154,88L158,80L157,76L153,71L155,65L161,54L160,51L157,50L156,48L154,43L151,43L146,43L144,42L142,33L138,31L127,27L112,10L108,3L105,0L91,0L89,2L82,7L78,7L74,5L68,3L58,2L49,8L44,10L41,11L33,9L28,6L22,0L0,0Z " data-iso="COD"/><path d="M450,0L398,0L401,4L404,5L442,6L450,11L450,0Z " data-iso="ETH"/><path d="M320,0L314,6L305,15L312,31L314,35L319,38L325,40L327,44L325,53L327,65L331,67L334,76L342,86L344,91L349,97L348,100L349,109L351,117L352,126L352,137L343,149L344,154L340,157L337,158L329,165L325,173L320,180L319,182L314,186L311,190L310,196L308,200L305,204L305,204L305,210L305,213L306,215L307,217L309,218L312,218L312,218L311,220L312,222L317,226L320,231L321,231L323,229L324,226L326,223L331,221L340,218L344,227L344,228L339,229L333,230L329,231L328,231L329,236L328,237L326,238L324,236L322,236L319,235L316,235L314,236L310,241L309,244L309,248L311,252L314,255L313,258L312,260L309,261L309,263L309,263L332,276L373,299L450,299L450,11L442,6L404,5L401,4L398,0L320,0Z " data-iso="KEN"/><path d="M142,264L140,264L133,267L131,270L123,279L117,282L112,282L110,277L99,279L98,279L96,281L90,285L87,286L78,299L156,299L157,294L156,288L154,283L151,280L148,278L142,271L140,267L140,265L142,264Z " data-iso="RWA"/><path d="M157,50L159,47L162,43L167,39L172,36L175,36L188,41L195,40L202,35L209,44L219,48L221,44L228,40L237,38L251,35L259,31L266,36L274,37L282,37L294,26L305,15L314,6L320,0L105,0L108,3L112,10L127,27L138,31L142,33L144,42L146,43L151,43L154,43L156,48L157,50Z M22,0L28,6L33,9L41,11L44,10L49,8L58,2L68,3L74,5L78,7L82,7L89,2L91,0L22,0Z " data-iso="SDS"/><path d="M202,261L157,261L153,262L149,264L142,264L142,264L140,265L140,267L142,271L148,278L151,280L154,283L156,288L157,294L156,299L198,299L201,284L203,281L204,278L206,265L205,263L205,262L204,262L203,262L202,262L202,261Z M284,299L373,299L332,276L309,263L303,270L302,273L302,274L304,276L303,277L299,277L298,278L298,280L297,280L298,281L302,284L302,285L301,285L296,284L293,284L291,284L290,285L289,288L290,290L291,291L287,294L287,297L284,299Z " data-iso="TZA"/><path d="M305,204L308,200L310,196L311,190L314,186L319,182L320,180L325,173L329,165L337,158L340,157L344,154L343,149L352,137L352,126L351,117L349,109L348,100L349,97L344,91L342,86L334,76L331,67L327,65L325,53L327,44L325,40L319,38L314,35L312,31L305,15L294,26L282,37L274,37L266,36L259,31L251,35L237,38L228,40L221,44L219,48L209,44L202,35L195,40L188,41L175,36L172,36L167,39L162,43L159,47L157,50L160,51L161,54L155,65L153,71L157,76L158,80L154,88L152,95L152,98L157,101L163,101L169,106L173,107L177,112L181,106L185,102L187,101L187,102L184,107L183,108L183,110L184,125L183,127L182,128L181,128L180,129L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L146,165L143,166L141,165L142,161L141,159L141,157L141,157L141,156L140,156L133,158L129,162L126,168L120,173L115,176L114,182L115,191L109,202L107,206L104,209L104,217L101,235L101,239L99,247L97,260L98,278L98,279L99,279L110,277L112,282L117,282L123,279L131,270L133,267L140,264L142,264L142,264L149,264L153,262L157,261L202,261L200,256L199,254L199,251L203,241L206,237L212,229L212,226L211,224L209,223L209,222L210,220L213,218L215,217L219,216L222,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L272,192L274,193L276,192L276,193L275,197L276,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L293,200L293,203L294,204L300,205L304,204L305,204Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M209,221L209,220L208,220L209,223L210,223L209,223L209,222L209,221Z M211,224L211,225L212,226L212,226L211,224Z " data-fips="UG36" data-fips-="" data-iso3="UGA" data-name="Kalangala" data-p="KN"/><path d="M268,182L265,182L265,183L263,183L261,183L261,184L263,188L264,188L266,191L269,193L272,192L274,193L276,192L276,193L275,197L276,198L280,198L284,194L285,194L286,193L285,192L285,189L280,188L278,186L274,184L273,184L269,182L268,182Z " data-fips="UG33" data-fips-="" data-iso3="UGA" data-name="Jinja" data-p="JI"/><path d="M308,137L304,138L301,137L299,136L297,136L296,136L293,138L290,148L286,150L285,151L286,151L290,152L292,151L298,152L303,155L303,156L308,157L308,158L309,158L312,159L313,159L314,159L315,158L318,151L319,148L317,144L317,141L317,137L317,137L316,137L308,137Z " data-fips="UG46" data-fips-="" data-iso3="UGA" data-name="Kumi" data-p="KU"/><path d="M275,118L273,118L272,122L265,128L265,129L260,134L259,133L258,136L256,137L257,141L257,145L258,145L259,145L260,145L262,147L264,148L269,145L272,144L269,141L273,137L279,134L280,126L280,125L279,124L279,122L277,120L277,119L275,118Z " data-fips="UG80" data-fips-="" data-iso3="UGA" data-name="Kaberamaido" data-p="KD"/><path d="M261,181L260,175L257,171L256,162L257,158L255,155L253,152L251,148L250,145L244,145L244,149L249,154L249,158L249,163L249,169L249,174L251,177L252,180L253,183L256,184L259,189L262,190L264,188L263,188L261,184L261,183L261,181Z " data-fips="UG83" data-fips-="" data-iso3="UGA" data-name="Kayunga" data-p="KY"/><path d="M282,174L278,172L278,168L276,164L275,163L274,164L273,174L270,179L269,181L269,182L273,184L274,184L278,186L280,188L285,189L285,192L286,193L288,193L288,193L288,192L288,190L288,189L291,184L289,181L289,180L288,178L286,177L285,177L285,176L284,173L282,174Z " data-fips="UGA2" data-fips-="UG78" data-iso3="UGA" data-name="Iganga" data-p="IN"/><path d="M250,145L251,148L253,152L255,155L257,158L256,162L257,171L260,175L261,181L261,183L263,183L265,183L265,182L268,182L269,182L269,181L270,179L273,174L274,164L275,163L276,162L279,156L280,155L280,153L279,153L278,151L278,150L273,150L271,152L265,149L264,148L262,147L260,145L259,145L258,145L257,145L250,145Z " data-fips="UGA3" data-fips-="UG38" data-iso3="UGA" data-name="Kamuli" data-p="KX"/><path d="M254,129L250,127L242,135L240,136L237,136L232,134L228,136L226,136L227,138L230,139L238,142L241,145L244,145L250,145L257,145L257,141L256,137L258,136L259,133L258,129L256,129L254,129Z " data-fips="UGB4" data-fips-="" data-iso3="UGA" data-name="Kyoga" data-p="KO"/><path d="M288,161L286,159L284,157L281,155L280,153L280,155L279,156L276,162L275,163L276,164L278,168L278,172L282,174L284,173L286,167L287,166L288,165L288,164L289,163L288,161Z " data-fips="UGC2" data-fips-="" data-iso3="UGA" data-name="Bulamogi" data-p="BL"/><path d="M309,158L308,158L308,157L303,156L304,158L304,164L303,165L299,168L299,170L301,170L304,169L307,167L309,165L310,165L311,164L312,162L312,160L312,159L309,158Z " data-fips="UGC9" data-fips-="" data-iso3="UGA" data-name="Budaka" data-p="BD"/><path d="M292,168L292,168L292,165L291,164L289,163L288,164L288,165L287,166L286,167L284,173L285,176L285,177L286,177L288,178L289,180L290,180L294,180L296,182L297,182L298,182L298,180L296,178L296,176L295,171L294,170L292,168Z " data-fips="UGD2" data-fips-="" data-iso3="UGA" data-name="Busiki" data-p="BS"/><path d="M297,133L290,125L290,124L282,119L280,123L280,125L280,126L279,134L273,137L269,141L272,144L269,145L264,148L265,149L271,152L273,150L278,150L278,151L279,151L280,152L281,152L285,152L285,151L286,150L290,148L293,138L296,136L297,136L297,135L297,134L297,133Z " data-fips="UG95" data-fips-="" data-iso3="UGA" data-name="Soroti" data-p="SR"/><path d="M262,190L259,189L256,184L253,183L252,180L251,177L249,174L247,177L247,181L247,183L246,185L244,188L244,189L243,190L244,191L243,196L244,198L242,202L242,202L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L269,193L266,191L264,188L262,190Z " data-fips="UG90" data-fips-="" data-iso3="UGA" data-name="Mukono" data-p="MN"/><path d="M303,155L298,152L292,151L290,152L286,151L285,151L285,152L281,152L280,152L279,151L278,151L279,153L280,153L281,155L284,157L286,159L288,161L289,163L291,164L292,165L292,168L292,168L294,170L296,169L299,170L299,168L303,165L304,164L304,158L303,156L303,155Z " data-fips="UGB3" data-fips-="UG60" data-iso3="UGA" data-name="Pallisa" data-p="PL"/><path d="M177,206L172,203L170,203L167,204L165,204L165,205L166,206L167,210L167,213L166,216L167,216L169,216L170,216L174,216L179,219L178,225L178,226L179,229L181,230L187,229L192,230L190,223L189,215L191,213L193,212L189,209L185,207L184,205L181,205L179,205L177,206Z " data-fips="UG74" data-fips-="" data-iso3="UGA" data-name="Sembabule" data-p="SE"/><path d="M223,214L222,213L225,209L231,204L232,200L229,197L225,195L225,196L225,199L222,200L216,200L215,201L206,203L205,201L204,201L200,203L198,203L191,197L188,199L180,201L179,203L179,205L181,205L184,205L185,207L189,209L193,212L194,212L198,211L203,212L206,216L209,220L209,221L210,220L213,218L215,217L219,216L222,214L223,214Z " data-fips="UG89" data-fips-="" data-iso3="UGA" data-name="Mpigi" data-p="MI"/><path d="M214,46L213,45L213,45L209,49L202,48L193,57L191,63L190,66L189,67L187,70L185,72L184,73L184,75L185,76L186,77L192,79L193,77L204,74L207,74L209,69L213,61L213,54L214,54L215,47L214,46Z " data-fips="UG65" data-fips-="" data-iso3="UGA" data-name="Adjumani" data-p="AD"/><path d="M190,66L185,61L184,63L185,65L185,67L181,68L174,69L173,72L166,70L163,68L161,67L154,67L153,69L158,76L158,78L154,89L154,90L164,87L166,92L169,94L176,92L181,84L183,83L182,81L182,79L183,77L184,75L184,73L185,72L187,70L189,67L190,66Z " data-fips="UG99" data-fips-="UG77" data-iso3="UGA" data-name="Arua Municipality" data-p="AU"/><path d="M169,38L163,40L159,47L158,49L160,48L161,54L160,55L163,57L164,58L166,57L167,58L169,54L170,50L170,39L170,37L169,38Z " data-fips="UGC4" data-fips-="" data-iso3="UGA" data-name="Koboko" data-p="KB"/><path d="M200,106L196,107L188,108L186,109L183,110L183,110L184,125L183,127L182,128L181,128L180,129L180,130L181,130L182,132L182,134L183,134L183,134L189,134L193,131L194,135L195,135L197,129L196,128L197,119L201,117L201,105L200,106Z " data-fips="UGD1" data-fips-="" data-iso3="UGA" data-name="Bujenje" data-p="BL"/><path d="M215,47L214,54L213,54L213,61L209,69L207,74L204,74L193,77L192,79L186,77L185,76L184,75L183,77L182,79L182,81L183,83L184,84L185,89L188,99L187,100L186,101L187,101L187,102L184,107L183,108L183,110L186,109L188,108L196,107L200,106L201,105L202,104L209,103L213,106L220,109L224,108L224,108L223,104L223,100L223,98L227,98L229,98L228,97L225,92L226,91L225,89L225,85L223,84L221,75L223,72L224,65L227,62L230,60L227,58L225,55L224,54L220,48L220,48L219,49L216,48L215,47L215,47Z " data-fips="UGD4" data-fips-="" data-iso3="UGA" data-name="Gulu" data-p="GL"/><path d="M183,83L181,84L176,92L169,94L166,92L164,87L154,90L154,90L151,99L156,99L156,101L159,104L162,101L167,105L167,106L171,106L173,106L174,109L177,112L181,106L185,102L186,101L187,100L188,99L185,89L184,84L183,83Z " data-fips="UG58" data-fips-="" data-iso3="UGA" data-name="Nebbi" data-p="NE"/><path d="M209,45L207,40L203,35L192,40L190,41L190,41L190,46L187,51L185,56L185,61L190,66L191,63L193,57L202,48L209,49L213,45L209,45Z " data-fips="UG72" data-fips-="" data-iso3="UGA" data-name="Moyo" data-p="MY"/><path d="M170,37L170,39L170,50L169,54L167,58L168,59L172,56L180,60L182,62L184,63L185,61L185,56L187,51L190,46L190,41L190,42L189,42L179,36L173,36L172,36L170,37Z " data-fips="UG97" data-fips-="" data-iso3="UGA" data-name="Yumbe" data-p="YU"/><path d="M160,55L158,58L157,59L156,61L154,67L161,67L163,68L166,70L173,72L174,69L181,68L185,67L185,65L184,63L182,62L180,60L172,56L168,59L167,58L166,57L164,58L163,57L160,55L160,55Z " data-fips="UGD5" data-fips-="" data-iso3="UGA" data-name="Maracha" data-p="MH"/><path d="M242,202L244,198L243,196L244,191L243,190L242,190L237,192L238,193L237,200L240,202L241,203L241,203L242,202L242,202Z " data-fips="UG37" data-fips-="" data-iso3="UGA" data-name="Kampala" data-p="KM"/><path d="M203,150L199,152L196,151L189,150L185,154L184,154L181,155L180,156L179,157L180,158L184,160L186,163L189,166L189,167L186,172L186,174L192,174L198,177L207,176L209,177L208,181L208,182L210,181L213,186L214,186L218,184L220,183L220,182L221,176L218,172L213,171L212,168L207,157L204,153L204,150L203,150Z " data-fips="UG42" data-fips-="" data-iso3="UGA" data-name="Kiboga" data-p="KG"/><path d="M223,136L222,135L220,135L219,136L217,136L216,137L215,139L212,142L210,145L216,148L224,154L227,155L228,158L229,161L231,163L237,169L238,168L239,162L241,160L244,163L246,163L249,163L249,158L249,154L244,149L244,145L241,145L238,142L230,139L227,138L226,136L223,136Z " data-fips="UG73" data-fips-="" data-iso3="UGA" data-name="Nakasongola" data-p="NA"/><path d="M226,189L225,188L224,187L222,187L221,190L221,192L222,193L223,195L225,195L229,197L232,200L231,204L225,209L222,213L223,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L240,202L237,200L238,193L237,192L242,190L243,190L244,189L244,188L241,188L239,187L237,189L229,188L228,188L228,188L226,189Z " data-fips="UG37" data-fips-="UG96" data-iso3="UGA" data-name="Wakiso" data-p="WA"/><path d="M246,163L244,163L241,160L239,162L238,168L237,169L231,163L229,161L228,165L229,170L233,183L230,183L228,187L228,188L228,188L229,188L237,189L239,187L241,188L244,188L246,185L247,183L247,181L247,177L249,174L249,169L249,163L246,163Z " data-fips="UGA8" data-fips-="UG70" data-iso3="UGA" data-name="Bamunanika" data-p="BM"/><path d="M208,181L209,177L207,176L198,177L192,174L186,174L185,175L182,181L178,181L175,185L176,186L177,187L172,190L170,194L171,198L166,203L165,204L167,204L170,203L172,203L177,206L179,205L179,203L180,201L188,199L191,197L198,203L200,203L204,201L204,199L210,198L211,194L208,189L207,186L208,182L208,182L208,181Z " data-fips="UGB2" data-fips-="UG56" data-iso3="UGA" data-name="Mubende" data-p="MD"/><path d="M218,184L214,186L213,186L210,181L208,182L208,182L207,186L208,189L211,194L210,198L204,199L204,201L205,201L206,203L215,201L216,200L222,200L225,199L225,196L225,195L223,195L222,193L221,192L221,190L222,187L222,186L220,184L220,183L218,184Z " data-fips="UGC6" data-fips-="" data-iso3="UGA" data-name="Busujju" data-p="BS"/><path d="M228,158L227,155L224,154L216,148L210,145L208,146L207,147L204,150L204,153L207,157L212,168L213,171L218,172L221,176L220,182L220,183L220,184L222,186L222,187L224,187L225,188L226,189L228,188L228,187L230,183L233,183L229,170L228,165L229,161L228,158Z " data-fips="UGC7" data-fips-="" data-iso3="UGA" data-name="Nakaseke" data-p="NK"/><path d="M220,48L224,54L225,55L227,58L230,60L236,65L246,64L251,65L255,61L257,63L262,69L265,70L265,67L266,64L272,64L274,64L273,61L276,60L279,61L277,59L281,59L284,60L285,60L287,60L291,61L292,60L294,57L294,56L293,54L291,51L289,46L286,42L284,37L282,38L280,38L266,36L260,32L251,35L248,37L232,38L220,44L220,47L220,48Z " data-fips="UG84" data-fips-="" data-iso3="UGA" data-name="Kitgum" data-p="TG"/><path d="M253,116L249,114L249,112L251,109L250,106L252,106L254,103L254,99L252,96L251,96L250,98L248,99L244,98L245,100L239,103L243,107L238,110L237,113L235,115L232,116L228,116L229,118L228,121L229,123L228,126L225,129L220,130L217,136L217,136L219,136L220,135L222,135L223,136L226,136L228,136L232,134L237,136L240,136L242,135L250,127L254,129L256,129L256,128L257,123L253,122L253,119L254,116L253,116Z " data-fips="UG98" data-fips-="UG26" data-iso3="UGA" data-name="Apac" data-p="AC"/><path d="M230,60L227,62L224,65L223,72L221,75L223,84L225,85L225,89L226,91L225,92L228,97L229,98L231,98L232,99L235,91L239,91L243,91L243,91L245,89L244,87L246,85L242,80L237,71L234,67L236,66L236,65L230,60Z " data-fips="UGA1" data-fips-="UG30" data-iso3="UGA" data-name="Aswa" data-p="AW"/><path d="M281,92L279,90L274,92L272,92L268,92L265,91L260,95L257,94L256,92L251,90L250,92L248,93L251,96L252,96L254,99L254,103L252,106L250,106L251,109L249,112L249,114L253,116L254,116L256,117L261,119L267,115L272,117L273,118L275,118L277,119L276,117L276,116L281,115L282,109L286,104L288,104L289,103L290,101L290,98L289,97L287,96L284,92L281,92Z " data-fips="UGA7" data-fips-="UG47" data-iso3="UGA" data-name="Lira" data-p="LA"/><path d="M272,117L267,115L261,119L256,117L254,116L253,119L253,122L257,123L256,128L256,129L258,129L259,133L260,134L265,129L265,128L272,122L273,118L272,117Z " data-fips="UGD3" data-fips-="" data-iso3="UGA" data-name="Dokolo" data-p="DK"/><path d="M284,60L281,59L277,59L279,61L276,60L273,61L274,64L272,64L266,64L265,67L265,70L262,69L257,63L255,61L251,65L246,64L236,65L236,66L234,67L237,71L242,80L246,85L244,87L245,89L243,91L243,91L248,93L250,92L251,90L256,92L257,94L260,95L265,91L268,92L272,92L274,92L279,90L281,92L284,92L284,88L285,85L287,83L286,75L285,66L285,60L284,60Z " data-fips="UG92" data-fips-="" data-iso3="UGA" data-name="Pader" data-p="PD"/><path d="M224,108L220,109L213,106L209,103L202,104L201,105L201,117L197,119L196,128L197,129L195,135L194,135L193,131L189,134L183,134L183,134L182,137L183,138L185,139L184,140L185,147L188,149L189,150L196,151L199,152L203,150L204,150L207,147L208,146L210,145L212,142L215,139L216,137L217,136L217,136L220,130L225,129L228,126L229,123L228,121L229,118L228,116L228,115L227,114L227,111L225,108L224,108L224,108Z " data-fips="UG50" data-fips-="" data-iso3="UGA" data-name="Masindi" data-p="MC"/><path d="M239,91L235,91L232,99L231,98L229,98L227,98L223,98L223,100L223,104L224,108L225,108L227,111L227,114L228,115L228,116L232,116L235,115L237,113L238,110L243,107L239,103L245,100L244,98L248,99L250,98L251,96L248,93L243,91L239,91Z " data-fips="UGD6" data-fips-="" data-iso3="UGA" data-name="Oyam" data-p="OA"/><path d="M140,156L131,159L129,161L128,163L128,166L125,172L118,174L116,175L115,180L115,191L114,192L114,192L115,192L116,195L118,194L118,193L121,190L124,184L128,176L132,173L138,169L139,166L142,166L142,165L141,165L142,161L141,159L141,157L141,157L141,156L140,156L140,156Z " data-fips="UG28" data-fips-="" data-iso3="UGA" data-name="Bundibugyo" data-p="BN"/><path d="M183,134L182,134L182,132L181,130L180,130L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L149,161L151,162L153,163L159,160L163,160L169,159L171,158L177,157L179,157L180,156L181,155L184,154L185,154L189,150L188,149L185,147L184,140L185,139L183,138L182,137L183,134Z " data-fips="UG31" data-fips-="" data-iso3="UGA" data-name="Hoima" data-p="HO"/><path d="M143,168L143,166L142,165L142,166L139,166L138,169L132,173L128,176L124,184L121,190L118,193L118,194L120,195L126,195L129,198L132,198L132,203L131,205L133,205L136,202L136,195L135,194L139,188L139,187L137,186L139,178L141,176L142,171L143,170L143,168Z " data-fips="UG79" data-fips-="" data-iso3="UGA" data-name="Kabarole" data-p="BR"/><path d="M174,184L165,183L162,181L158,176L156,175L148,172L143,170L142,171L141,176L139,178L137,186L139,187L141,188L143,199L147,196L150,192L158,192L158,197L154,203L154,204L157,204L160,204L162,205L165,205L165,204L166,203L171,198L170,194L172,190L177,187L176,186L175,185L174,184Z " data-fips="UG85" data-fips-="" data-iso3="UGA" data-name="Kyenjojo" data-p="KJ"/><path d="M177,157L171,158L169,159L163,160L159,160L153,163L151,162L149,161L146,165L143,166L143,166L143,168L143,170L148,172L156,175L158,176L162,181L165,183L174,184L175,185L178,181L182,181L185,175L186,174L186,172L189,167L189,166L186,163L184,160L180,158L179,157L177,157Z " data-fips="UG41" data-fips-="" data-iso3="UGA" data-name="Kibale" data-p="KI"/><path d="M324,141L326,142L327,144L327,146L324,147L321,150L322,153L326,155L331,159L330,162L330,162L331,162L332,163L333,163L332,158L335,153L339,152L340,150L341,147L338,143L330,139L327,141L324,141Z " data-fips="UGA4" data-fips-="UG39" data-iso3="UGA" data-name="Kapchorwa" data-p="KP"/><path d="M343,149L341,147L340,150L339,152L335,153L332,158L333,163L333,163L337,158L343,156L344,152L343,150L343,149Z " data-fips="UGB6" data-fips-="" data-iso3="UGA" data-name="Kongasis" data-p="KO"/><path d="M320,141L319,141L318,140L318,141L317,141L317,144L319,148L318,151L315,158L314,159L315,160L317,161L321,162L323,163L324,162L328,162L330,162L331,159L326,155L322,153L321,150L324,147L327,146L327,144L326,142L324,141L320,141Z " data-fips="UG94" data-fips-="" data-iso3="UGA" data-name="Budadiri" data-p="BD"/><path d="M313,159L312,159L312,160L312,162L311,164L310,165L309,165L311,166L312,166L311,170L310,172L311,172L312,173L313,174L314,175L315,174L317,170L318,169L321,163L323,163L321,162L317,161L315,160L314,159L313,159Z " data-fips="UGA9" data-fips-="UG87" data-iso3="UGA" data-name="Bungokho" data-p="BN"/><path d="M328,162L324,162L323,163L321,163L318,169L317,170L315,174L314,175L317,178L320,179L320,178L324,176L328,168L329,163L330,162L328,162Z " data-fips="UGC5" data-fips-="" data-iso3="UGA" data-name="Manafwa" data-p="MF"/><path d="M297,182L296,182L294,180L290,180L289,180L289,181L291,184L288,189L288,190L288,192L289,193L292,195L292,199L293,200L293,203L294,204L300,205L304,204L304,204L300,198L302,195L303,188L304,188L304,188L301,185L301,184L300,182L299,182L298,182L297,182Z " data-fips="UG66" data-fips-="" data-iso3="UGA" data-name="Bugiri" data-p="BG"/><path d="M304,188L304,188L303,188L302,195L300,198L304,204L305,204L308,200L310,197L310,195L311,192L312,187L308,187L307,187L305,188L304,188Z " data-fips="UG67" data-fips-="" data-iso3="UGA" data-name="Busia" data-p="BU"/><path d="M311,170L312,166L311,166L309,165L307,167L304,169L301,170L299,170L296,169L294,170L295,171L296,176L296,178L298,180L298,182L299,182L300,182L300,181L303,176L304,174L309,172L310,172L311,170Z " data-fips="UGB7" data-fips-="" data-iso3="UGA" data-name="Bunyole" data-p="BN"/><path d="M288,192L288,193L288,193L286,193L285,194L284,194L280,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L292,199L292,195L289,193L288,192Z " data-fips="UG86" data-fips-="" data-iso3="UGA" data-name="Mayuge" data-p="MG"/><path d="M320,179L317,178L314,175L313,174L312,173L311,172L310,172L309,172L304,174L303,176L300,181L300,182L301,184L301,185L304,188L305,188L307,187L308,187L312,187L312,187L313,186L318,183L320,180L320,179Z " data-fips="UG76" data-fips-="" data-iso3="UGA" data-name="Tororo" data-p="TR"/><path d="M316,117L316,115L314,113L302,106L301,108L300,110L302,115L301,125L300,126L300,131L299,132L297,134L297,135L297,136L299,136L301,137L304,138L308,137L316,137L316,117Z " data-fips="UGA5" data-fips-="UG69" data-iso3="UGA" data-name="Usuk" data-p="UU"/><path d="M322,69L313,64L308,62L302,61L300,59L299,59L296,58L294,56L294,57L292,60L291,61L287,60L285,60L285,66L287,67L291,67L291,70L297,80L301,83L297,83L297,88L300,89L304,91L306,88L313,85L317,86L319,77L322,73L324,69L322,69Z " data-fips="UGA6" data-fips-="UG45" data-iso3="UGA" data-name="Jie" data-p="JE"/><path d="M294,101L293,100L291,103L289,103L288,104L286,104L282,109L281,115L276,116L276,117L277,119L277,120L279,122L279,124L280,125L280,123L282,119L290,124L290,125L297,133L297,134L299,132L300,131L300,126L301,125L302,115L300,110L301,108L302,106L294,101Z " data-fips="UGB5" data-fips-="" data-iso3="UGA" data-name="Amuria" data-p="AM"/><path d="M284,37L286,42L289,46L291,51L293,54L294,56L296,58L299,59L300,59L302,61L308,62L313,64L322,69L324,69L326,69L329,69L330,69L332,68L332,68L328,66L325,57L324,55L326,48L327,41L324,40L319,39L318,38L313,34L316,32L310,32L311,28L309,26L306,16L294,26L284,36L284,37Z " data-fips="UGC1" data-fips-="" data-iso3="UGA" data-name="Kaabong" data-p="AB"/><path d="M300,89L297,88L297,83L301,83L297,80L291,70L291,67L287,67L285,66L286,75L287,83L285,85L284,88L284,92L287,96L289,97L290,98L291,98L295,96L306,96L304,92L304,91L300,89Z " data-fips="UGC8" data-fips-="" data-iso3="UGA" data-name="Labwor" data-p="LB"/><path d="M324,69L322,73L319,77L317,86L313,85L306,88L304,91L304,92L306,96L295,96L291,98L290,98L290,101L289,103L291,103L293,100L294,101L302,106L314,113L316,115L316,117L316,137L317,137L317,137L319,137L321,134L323,131L328,128L332,125L332,122L337,121L338,119L344,116L346,110L349,108L347,104L347,101L349,98L348,95L345,92L343,88L340,80L336,79L333,75L332,68L330,69L329,69L326,69L324,69Z " data-fips="UG88" data-fips-="" data-iso3="UGA" data-name="Moroto" data-p="MT"/><path d="M349,108L346,110L344,116L338,119L337,121L332,122L332,125L328,128L323,131L321,134L319,137L317,137L317,141L318,141L318,140L319,141L320,141L324,141L327,141L330,139L338,143L341,147L343,149L343,149L346,146L347,143L350,139L352,126L353,124L351,121L352,115L349,108Z " data-fips="UG91" data-fips-="" data-iso3="UGA" data-name="Nakapiripirit" data-p="NP"/><path d="M178,225L179,219L174,216L170,216L169,216L169,220L168,224L169,230L172,237L170,241L168,245L171,246L174,250L174,254L173,255L178,261L202,261L200,256L199,254L199,251L200,248L199,247L197,243L197,239L194,235L191,237L185,240L182,239L179,237L176,236L172,234L173,231L177,227L178,226L178,225Z " data-fips="UG61" data-fips-="" data-iso3="UGA" data-name="Rakai" data-p="RA"/><path d="M206,216L203,212L198,211L194,212L193,212L191,213L189,215L190,223L192,230L187,229L181,230L179,229L178,226L177,227L173,231L172,234L176,236L179,237L182,239L185,240L191,237L194,235L197,239L197,243L199,247L200,248L203,241L206,237L212,229L212,226L211,225L211,224L211,224L210,223L209,223L208,220L209,220L206,216Z " data-fips="UG71" data-fips-="" data-iso3="UGA" data-name="Masaka" data-p="MA"/><path d="M130,220L127,219L127,218L128,218L126,218L124,218L120,219L115,222L102,224L101,229L111,232L113,235L115,236L113,242L114,243L118,248L121,250L122,250L125,248L127,248L129,250L131,250L134,248L138,244L141,232L141,229L142,226L141,226L138,228L134,223L131,221L130,220Z " data-fips="UG29" data-fips-="" data-iso3="UGA" data-name="Bushenyi" data-p="BS"/><path d="M114,192L110,198L108,206L104,209L104,214L103,217L102,224L115,222L120,219L124,218L126,218L128,218L130,211L131,205L132,203L132,198L129,198L126,195L120,195L118,194L116,195L115,192L114,192L114,192L114,192Z " data-fips="UG40" data-fips-="" data-iso3="UGA" data-name="Kasese" data-p="KS"/><path d="M154,203L158,197L158,192L150,192L147,196L143,199L141,188L139,187L139,188L135,194L136,195L136,202L133,205L131,205L130,211L128,218L127,218L127,219L130,220L131,220L136,222L140,221L139,220L136,213L138,212L139,209L140,209L144,207L146,207L147,206L149,204L152,204L154,204L154,203Z " data-fips="UG81" data-fips-="" data-iso3="UGA" data-name="Kamwenge" data-p="KE"/><path d="M147,223L150,221L150,212L146,207L146,207L144,207L140,209L139,209L138,212L136,213L139,220L140,221L136,222L131,220L130,220L131,221L134,223L138,228L141,226L142,226L144,225L147,225L147,223Z " data-fips="UGB8" data-fips-="" data-iso3="UGA" data-name="Ibanda" data-p="IA"/><path d="M152,243L148,243L148,246L147,250L146,252L144,253L146,255L140,264L140,264L148,265L151,262L157,261L178,261L173,255L174,254L174,250L171,246L168,245L167,246L159,247L158,246L156,244L154,243L152,243Z " data-fips="UGB9" data-fips-="" data-iso3="UGA" data-name="Bukanga" data-p="BK"/><path d="M152,204L149,204L147,206L146,207L146,207L150,212L150,221L147,223L147,225L146,228L151,234L156,238L154,241L154,243L156,244L158,246L159,247L167,246L168,245L170,241L172,237L169,230L168,224L169,220L169,216L167,216L166,216L167,213L167,210L166,206L165,205L162,205L160,204L157,204L154,204L152,204Z " data-fips="UGC3" data-fips-="" data-iso3="UGA" data-name="Mbarara" data-p="RR"/><path d="M121,250L121,252L120,257L121,258L120,262L120,263L120,264L122,268L126,270L131,268L132,268L136,264L139,264L140,264L146,255L144,253L146,252L144,252L135,253L130,251L131,250L129,250L127,248L125,248L122,250L121,250Z " data-fips="UG59" data-fips-="" data-iso3="UGA" data-name="Ntungamo" data-p="NT"/><path d="M100,235L100,236L101,236L104,234L104,242L107,243L108,248L109,254L110,255L110,258L113,263L115,264L115,262L119,263L120,263L120,262L121,258L120,257L121,252L121,250L118,248L114,243L113,242L115,236L113,235L111,232L101,229L100,235Z " data-fips="UG93" data-fips-="" data-iso3="UGA" data-name="Rukungiri" data-p="RK"/><path d="M154,241L156,238L151,234L146,228L147,225L144,225L142,226L141,229L141,232L138,244L134,248L131,250L130,251L135,253L144,252L146,252L147,250L148,246L148,243L152,243L154,243L154,241Z " data-fips="UGB1" data-fips-="UG52" data-iso3="UGA" data-name="Kashari" data-p="KS"/><path d="M113,263L112,263L110,263L107,262L106,264L106,265L106,266L107,269L107,271L110,276L110,277L112,282L114,284L124,278L125,275L131,269L131,268L126,270L122,268L120,264L120,263L119,263L115,262L115,264L113,263Z " data-fips="UG34" data-fips-="" data-iso3="UGA" data-name="Kabale" data-p="KA"/><path d="M97,261L97,264L98,277L100,280L104,278L110,276L110,276L107,271L107,269L106,266L106,265L104,264L102,263L99,262L97,261L97,261Z " data-fips="UG43" data-fips-="" data-iso3="UGA" data-name="Kisoro" data-p="KR"/><path d="M101,237L100,242L99,255L97,260L97,261L99,262L102,263L104,264L106,265L106,264L107,262L110,263L112,263L113,263L110,258L110,255L109,254L108,248L107,243L104,242L104,234L101,236L101,237Z " data-fips="UG82" data-fips-="" data-iso3="UGA" data-name="Kanungu" data-p="UU"/></g></svg>
\ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="-0.564616387286" lon0="32.4167090184"/><bbox h="78.36" w="75.42" x="960.56" y="936.93"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M0,0L0,299L78,299L87,286L90,285L96,281L98,279L98,278L97,260L99,247L101,239L101,235L104,217L104,209L107,206L109,202L115,191L114,182L115,176L120,173L126,168L129,162L133,158L140,156L140,155L137,155L136,153L139,149L140,145L143,142L146,140L150,135L151,134L159,127L162,124L164,123L173,116L177,113L177,112L173,107L169,106L163,101L157,101L152,98L152,95L154,88L158,80L157,76L153,71L155,65L161,54L160,51L157,50L156,48L154,43L151,43L146,43L144,42L142,33L138,31L127,27L112,10L108,3L105,0L91,0L89,2L82,7L78,7L74,5L68,3L58,2L49,8L44,10L41,11L33,9L28,6L22,0L0,0Z " data-iso="COD"/><path d="M450,0L398,0L401,4L404,5L442,6L450,11L450,0Z " data-iso="ETH"/><path d="M320,0L314,6L305,15L312,31L314,35L319,38L325,40L327,44L325,53L327,65L331,67L334,76L342,86L344,91L349,97L348,100L349,109L351,117L352,126L352,137L343,149L344,154L340,157L337,158L329,165L325,173L320,180L319,182L314,186L311,190L310,196L308,200L305,204L305,204L305,210L305,213L306,215L307,217L309,218L312,218L312,218L311,220L312,222L317,226L320,231L321,231L323,229L324,226L326,223L331,221L340,218L344,227L344,228L339,229L333,230L329,231L328,231L329,236L328,237L326,238L324,236L322,236L319,235L316,235L314,236L310,241L309,244L309,248L311,252L314,255L313,258L312,260L309,261L309,263L309,263L332,276L373,299L450,299L450,11L442,6L404,5L401,4L398,0L320,0Z " data-iso="KEN"/><path d="M142,264L140,264L133,267L131,270L123,279L117,282L112,282L110,277L99,279L98,279L96,281L90,285L87,286L78,299L156,299L157,294L156,288L154,283L151,280L148,278L142,271L140,267L140,265L142,264Z " data-iso="RWA"/><path d="M157,50L159,47L162,43L167,39L172,36L175,36L188,41L195,40L202,35L209,44L219,48L221,44L228,40L237,38L251,35L259,31L266,36L274,37L282,37L294,26L305,15L314,6L320,0L105,0L108,3L112,10L127,27L138,31L142,33L144,42L146,43L151,43L154,43L156,48L157,50Z M22,0L28,6L33,9L41,11L44,10L49,8L58,2L68,3L74,5L78,7L82,7L89,2L91,0L22,0Z " data-iso="SSD"/><path d="M202,261L157,261L153,262L149,264L142,264L142,264L140,265L140,267L142,271L148,278L151,280L154,283L156,288L157,294L156,299L198,299L201,284L203,281L204,278L206,265L205,263L205,262L204,262L203,262L202,262L202,261Z M284,299L373,299L332,276L309,263L303,270L302,273L302,274L304,276L303,277L299,277L298,278L298,280L297,280L298,281L302,284L302,285L301,285L296,284L293,284L291,284L290,285L289,288L290,290L291,291L287,294L287,297L284,299Z " data-iso="TZA"/><path d="M305,204L308,200L310,196L311,190L314,186L319,182L320,180L325,173L329,165L337,158L340,157L344,154L343,149L352,137L352,126L351,117L349,109L348,100L349,97L344,91L342,86L334,76L331,67L327,65L325,53L327,44L325,40L319,38L314,35L312,31L305,15L294,26L282,37L274,37L266,36L259,31L251,35L237,38L228,40L221,44L219,48L209,44L202,35L195,40L188,41L175,36L172,36L167,39L162,43L159,47L157,50L160,51L161,54L155,65L153,71L157,76L158,80L154,88L152,95L152,98L157,101L163,101L169,106L173,107L177,112L181,106L185,102L187,101L187,102L184,107L183,108L183,110L184,125L183,127L182,128L181,128L180,129L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L146,165L143,166L141,165L142,161L141,159L141,157L141,157L141,156L140,156L133,158L129,162L126,168L120,173L115,176L114,182L115,191L109,202L107,206L104,209L104,217L101,235L101,239L99,247L97,260L98,278L98,279L99,279L110,277L112,282L117,282L123,279L131,270L133,267L140,264L142,264L142,264L149,264L153,262L157,261L202,261L200,256L199,254L199,251L203,241L206,237L212,229L212,226L211,224L209,223L209,222L210,220L213,218L215,217L219,216L222,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L272,192L274,193L276,192L276,193L275,197L276,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L293,200L293,203L294,204L300,205L304,204L305,204Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M209,221L209,220L208,220L209,223L210,223L209,223L209,222L209,221Z M211,224L211,225L212,226L212,226L211,224Z " data-fips="UG36" data-fips-="" data-iso3="UGA" data-name="Kalangala" data-p="KN"/><path d="M268,182L265,182L265,183L263,183L261,183L261,184L263,188L264,188L266,191L269,193L272,192L274,193L276,192L276,193L275,197L276,198L280,198L284,194L285,194L286,193L285,192L285,189L280,188L278,186L274,184L273,184L269,182L268,182Z " data-fips="UG33" data-fips-="" data-iso3="UGA" data-name="Jinja" data-p="JI"/><path d="M308,137L304,138L301,137L299,136L297,136L296,136L293,138L290,148L286,150L285,151L286,151L290,152L292,151L298,152L303,155L303,156L308,157L308,158L309,158L312,159L313,159L314,159L315,158L318,151L319,148L317,144L317,141L317,137L317,137L316,137L308,137Z " data-fips="UG46" data-fips-="" data-iso3="UGA" data-name="Kumi" data-p="KU"/><path d="M275,118L273,118L272,122L265,128L265,129L260,134L259,133L258,136L256,137L257,141L257,145L258,145L259,145L260,145L262,147L264,148L269,145L272,144L269,141L273,137L279,134L280,126L280,125L279,124L279,122L277,120L277,119L275,118Z " data-fips="UG80" data-fips-="" data-iso3="UGA" data-name="Kaberamaido" data-p="KD"/><path d="M261,181L260,175L257,171L256,162L257,158L255,155L253,152L251,148L250,145L244,145L244,149L249,154L249,158L249,163L249,169L249,174L251,177L252,180L253,183L256,184L259,189L262,190L264,188L263,188L261,184L261,183L261,181Z " data-fips="UG83" data-fips-="" data-iso3="UGA" data-name="Kayunga" data-p="KY"/><path d="M282,174L278,172L278,168L276,164L275,163L274,164L273,174L270,179L269,181L269,182L273,184L274,184L278,186L280,188L285,189L285,192L286,193L288,193L288,193L288,192L288,190L288,189L291,184L289,181L289,180L288,178L286,177L285,177L285,176L284,173L282,174Z " data-fips="UGA2" data-fips-="UG78" data-iso3="UGA" data-name="Iganga" data-p="IN"/><path d="M250,145L251,148L253,152L255,155L257,158L256,162L257,171L260,175L261,181L261,183L263,183L265,183L265,182L268,182L269,182L269,181L270,179L273,174L274,164L275,163L276,162L279,156L280,155L280,153L279,153L278,151L278,150L273,150L271,152L265,149L264,148L262,147L260,145L259,145L258,145L257,145L250,145Z " data-fips="UGA3" data-fips-="UG38" data-iso3="UGA" data-name="Kamuli" data-p="KX"/><path d="M254,129L250,127L242,135L240,136L237,136L232,134L228,136L226,136L227,138L230,139L238,142L241,145L244,145L250,145L257,145L257,141L256,137L258,136L259,133L258,129L256,129L254,129Z " data-fips="UGB4" data-fips-="" data-iso3="UGA" data-name="Kyoga" data-p="KO"/><path d="M288,161L286,159L284,157L281,155L280,153L280,155L279,156L276,162L275,163L276,164L278,168L278,172L282,174L284,173L286,167L287,166L288,165L288,164L289,163L288,161Z " data-fips="UGC2" data-fips-="" data-iso3="UGA" data-name="Bulamogi" data-p="BL"/><path d="M309,158L308,158L308,157L303,156L304,158L304,164L303,165L299,168L299,170L301,170L304,169L307,167L309,165L310,165L311,164L312,162L312,160L312,159L309,158Z " data-fips="UGC9" data-fips-="" data-iso3="UGA" data-name="Budaka" data-p="BD"/><path d="M292,168L292,168L292,165L291,164L289,163L288,164L288,165L287,166L286,167L284,173L285,176L285,177L286,177L288,178L289,180L290,180L294,180L296,182L297,182L298,182L298,180L296,178L296,176L295,171L294,170L292,168Z " data-fips="UGD2" data-fips-="" data-iso3="UGA" data-name="Busiki" data-p="BS"/><path d="M297,133L290,125L290,124L282,119L280,123L280,125L280,126L279,134L273,137L269,141L272,144L269,145L264,148L265,149L271,152L273,150L278,150L278,151L279,151L280,152L281,152L285,152L285,151L286,150L290,148L293,138L296,136L297,136L297,135L297,134L297,133Z " data-fips="UG95" data-fips-="" data-iso3="UGA" data-name="Soroti" data-p="SR"/><path d="M262,190L259,189L256,184L253,183L252,180L251,177L249,174L247,177L247,181L247,183L246,185L244,188L244,189L243,190L244,191L243,196L244,198L242,202L242,202L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L269,193L266,191L264,188L262,190Z " data-fips="UG90" data-fips-="" data-iso3="UGA" data-name="Mukono" data-p="MN"/><path d="M303,155L298,152L292,151L290,152L286,151L285,151L285,152L281,152L280,152L279,151L278,151L279,153L280,153L281,155L284,157L286,159L288,161L289,163L291,164L292,165L292,168L292,168L294,170L296,169L299,170L299,168L303,165L304,164L304,158L303,156L303,155Z " data-fips="UGB3" data-fips-="UG60" data-iso3="UGA" data-name="Pallisa" data-p="PL"/><path d="M177,206L172,203L170,203L167,204L165,204L165,205L166,206L167,210L167,213L166,216L167,216L169,216L170,216L174,216L179,219L178,225L178,226L179,229L181,230L187,229L192,230L190,223L189,215L191,213L193,212L189,209L185,207L184,205L181,205L179,205L177,206Z " data-fips="UG74" data-fips-="" data-iso3="UGA" data-name="Sembabule" data-p="SE"/><path d="M223,214L222,213L225,209L231,204L232,200L229,197L225,195L225,196L225,199L222,200L216,200L215,201L206,203L205,201L204,201L200,203L198,203L191,197L188,199L180,201L179,203L179,205L181,205L184,205L185,207L189,209L193,212L194,212L198,211L203,212L206,216L209,220L209,221L210,220L213,218L215,217L219,216L222,214L223,214Z " data-fips="UG89" data-fips-="" data-iso3="UGA" data-name="Mpigi" data-p="MI"/><path d="M214,46L213,45L213,45L209,49L202,48L193,57L191,63L190,66L189,67L187,70L185,72L184,73L184,75L185,76L186,77L192,79L193,77L204,74L207,74L209,69L213,61L213,54L214,54L215,47L214,46Z " data-fips="UG65" data-fips-="" data-iso3="UGA" data-name="Adjumani" data-p="AD"/><path d="M190,66L185,61L184,63L185,65L185,67L181,68L174,69L173,72L166,70L163,68L161,67L154,67L153,69L158,76L158,78L154,89L154,90L164,87L166,92L169,94L176,92L181,84L183,83L182,81L182,79L183,77L184,75L184,73L185,72L187,70L189,67L190,66Z " data-fips="UG99" data-fips-="UG77" data-iso3="UGA" data-name="Arua Municipality" data-p="AU"/><path d="M169,38L163,40L159,47L158,49L160,48L161,54L160,55L163,57L164,58L166,57L167,58L169,54L170,50L170,39L170,37L169,38Z " data-fips="UGC4" data-fips-="" data-iso3="UGA" data-name="Koboko" data-p="KB"/><path d="M200,106L196,107L188,108L186,109L183,110L183,110L184,125L183,127L182,128L181,128L180,129L180,130L181,130L182,132L182,134L183,134L183,134L189,134L193,131L194,135L195,135L197,129L196,128L197,119L201,117L201,105L200,106Z " data-fips="UGD1" data-fips-="" data-iso3="UGA" data-name="Bujenje" data-p="BL"/><path d="M215,47L214,54L213,54L213,61L209,69L207,74L204,74L193,77L192,79L186,77L185,76L184,75L183,77L182,79L182,81L183,83L184,84L185,89L188,99L187,100L186,101L187,101L187,102L184,107L183,108L183,110L186,109L188,108L196,107L200,106L201,105L202,104L209,103L213,106L220,109L224,108L224,108L223,104L223,100L223,98L227,98L229,98L228,97L225,92L226,91L225,89L225,85L223,84L221,75L223,72L224,65L227,62L230,60L227,58L225,55L224,54L220,48L220,48L219,49L216,48L215,47L215,47Z " data-fips="UGD4" data-fips-="" data-iso3="UGA" data-name="Gulu" data-p="GL"/><path d="M183,83L181,84L176,92L169,94L166,92L164,87L154,90L154,90L151,99L156,99L156,101L159,104L162,101L167,105L167,106L171,106L173,106L174,109L177,112L181,106L185,102L186,101L187,100L188,99L185,89L184,84L183,83Z " data-fips="UG58" data-fips-="" data-iso3="UGA" data-name="Nebbi" data-p="NE"/><path d="M209,45L207,40L203,35L192,40L190,41L190,41L190,46L187,51L185,56L185,61L190,66L191,63L193,57L202,48L209,49L213,45L209,45Z " data-fips="UG72" data-fips-="" data-iso3="UGA" data-name="Moyo" data-p="MY"/><path d="M170,37L170,39L170,50L169,54L167,58L168,59L172,56L180,60L182,62L184,63L185,61L185,56L187,51L190,46L190,41L190,42L189,42L179,36L173,36L172,36L170,37Z " data-fips="UG97" data-fips-="" data-iso3="UGA" data-name="Yumbe" data-p="YU"/><path d="M160,55L158,58L157,59L156,61L154,67L161,67L163,68L166,70L173,72L174,69L181,68L185,67L185,65L184,63L182,62L180,60L172,56L168,59L167,58L166,57L164,58L163,57L160,55L160,55Z " data-fips="UGD5" data-fips-="" data-iso3="UGA" data-name="Maracha" data-p="MH"/><path d="M242,202L244,198L243,196L244,191L243,190L242,190L237,192L238,193L237,200L240,202L241,203L241,203L242,202L242,202Z " data-fips="UG37" data-fips-="" data-iso3="UGA" data-name="Kampala" data-p="KM"/><path d="M203,150L199,152L196,151L189,150L185,154L184,154L181,155L180,156L179,157L180,158L184,160L186,163L189,166L189,167L186,172L186,174L192,174L198,177L207,176L209,177L208,181L208,182L210,181L213,186L214,186L218,184L220,183L220,182L221,176L218,172L213,171L212,168L207,157L204,153L204,150L203,150Z " data-fips="UG42" data-fips-="" data-iso3="UGA" data-name="Kiboga" data-p="KG"/><path d="M223,136L222,135L220,135L219,136L217,136L216,137L215,139L212,142L210,145L216,148L224,154L227,155L228,158L229,161L231,163L237,169L238,168L239,162L241,160L244,163L246,163L249,163L249,158L249,154L244,149L244,145L241,145L238,142L230,139L227,138L226,136L223,136Z " data-fips="UG73" data-fips-="" data-iso3="UGA" data-name="Nakasongola" data-p="NA"/><path d="M226,189L225,188L224,187L222,187L221,190L221,192L222,193L223,195L225,195L229,197L232,200L231,204L225,209L222,213L223,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L240,202L237,200L238,193L237,192L242,190L243,190L244,189L244,188L241,188L239,187L237,189L229,188L228,188L228,188L226,189Z " data-fips="UG37" data-fips-="UG96" data-iso3="UGA" data-name="Wakiso" data-p="WA"/><path d="M246,163L244,163L241,160L239,162L238,168L237,169L231,163L229,161L228,165L229,170L233,183L230,183L228,187L228,188L228,188L229,188L237,189L239,187L241,188L244,188L246,185L247,183L247,181L247,177L249,174L249,169L249,163L246,163Z " data-fips="UGA8" data-fips-="UG70" data-iso3="UGA" data-name="Bamunanika" data-p="BM"/><path d="M208,181L209,177L207,176L198,177L192,174L186,174L185,175L182,181L178,181L175,185L176,186L177,187L172,190L170,194L171,198L166,203L165,204L167,204L170,203L172,203L177,206L179,205L179,203L180,201L188,199L191,197L198,203L200,203L204,201L204,199L210,198L211,194L208,189L207,186L208,182L208,182L208,181Z " data-fips="UGB2" data-fips-="UG56" data-iso3="UGA" data-name="Mubende" data-p="MD"/><path d="M218,184L214,186L213,186L210,181L208,182L208,182L207,186L208,189L211,194L210,198L204,199L204,201L205,201L206,203L215,201L216,200L222,200L225,199L225,196L225,195L223,195L222,193L221,192L221,190L222,187L222,186L220,184L220,183L218,184Z " data-fips="UGC6" data-fips-="" data-iso3="UGA" data-name="Busujju" data-p="BS"/><path d="M228,158L227,155L224,154L216,148L210,145L208,146L207,147L204,150L204,153L207,157L212,168L213,171L218,172L221,176L220,182L220,183L220,184L222,186L222,187L224,187L225,188L226,189L228,188L228,187L230,183L233,183L229,170L228,165L229,161L228,158Z " data-fips="UGC7" data-fips-="" data-iso3="UGA" data-name="Nakaseke" data-p="NK"/><path d="M220,48L224,54L225,55L227,58L230,60L236,65L246,64L251,65L255,61L257,63L262,69L265,70L265,67L266,64L272,64L274,64L273,61L276,60L279,61L277,59L281,59L284,60L285,60L287,60L291,61L292,60L294,57L294,56L293,54L291,51L289,46L286,42L284,37L282,38L280,38L266,36L260,32L251,35L248,37L232,38L220,44L220,47L220,48Z " data-fips="UG84" data-fips-="" data-iso3="UGA" data-name="Kitgum" data-p="TG"/><path d="M253,116L249,114L249,112L251,109L250,106L252,106L254,103L254,99L252,96L251,96L250,98L248,99L244,98L245,100L239,103L243,107L238,110L237,113L235,115L232,116L228,116L229,118L228,121L229,123L228,126L225,129L220,130L217,136L217,136L219,136L220,135L222,135L223,136L226,136L228,136L232,134L237,136L240,136L242,135L250,127L254,129L256,129L256,128L257,123L253,122L253,119L254,116L253,116Z " data-fips="UG98" data-fips-="UG26" data-iso3="UGA" data-name="Apac" data-p="AC"/><path d="M230,60L227,62L224,65L223,72L221,75L223,84L225,85L225,89L226,91L225,92L228,97L229,98L231,98L232,99L235,91L239,91L243,91L243,91L245,89L244,87L246,85L242,80L237,71L234,67L236,66L236,65L230,60Z " data-fips="UGA1" data-fips-="UG30" data-iso3="UGA" data-name="Aswa" data-p="AW"/><path d="M281,92L279,90L274,92L272,92L268,92L265,91L260,95L257,94L256,92L251,90L250,92L248,93L251,96L252,96L254,99L254,103L252,106L250,106L251,109L249,112L249,114L253,116L254,116L256,117L261,119L267,115L272,117L273,118L275,118L277,119L276,117L276,116L281,115L282,109L286,104L288,104L289,103L290,101L290,98L289,97L287,96L284,92L281,92Z " data-fips="UGA7" data-fips-="UG47" data-iso3="UGA" data-name="Lira" data-p="LA"/><path d="M272,117L267,115L261,119L256,117L254,116L253,119L253,122L257,123L256,128L256,129L258,129L259,133L260,134L265,129L265,128L272,122L273,118L272,117Z " data-fips="UGD3" data-fips-="" data-iso3="UGA" data-name="Dokolo" data-p="DK"/><path d="M284,60L281,59L277,59L279,61L276,60L273,61L274,64L272,64L266,64L265,67L265,70L262,69L257,63L255,61L251,65L246,64L236,65L236,66L234,67L237,71L242,80L246,85L244,87L245,89L243,91L243,91L248,93L250,92L251,90L256,92L257,94L260,95L265,91L268,92L272,92L274,92L279,90L281,92L284,92L284,88L285,85L287,83L286,75L285,66L285,60L284,60Z " data-fips="UG92" data-fips-="" data-iso3="UGA" data-name="Pader" data-p="PD"/><path d="M224,108L220,109L213,106L209,103L202,104L201,105L201,117L197,119L196,128L197,129L195,135L194,135L193,131L189,134L183,134L183,134L182,137L183,138L185,139L184,140L185,147L188,149L189,150L196,151L199,152L203,150L204,150L207,147L208,146L210,145L212,142L215,139L216,137L217,136L217,136L220,130L225,129L228,126L229,123L228,121L229,118L228,116L228,115L227,114L227,111L225,108L224,108L224,108Z " data-fips="UG50" data-fips-="" data-iso3="UGA" data-name="Masindi" data-p="MC"/><path d="M239,91L235,91L232,99L231,98L229,98L227,98L223,98L223,100L223,104L224,108L225,108L227,111L227,114L228,115L228,116L232,116L235,115L237,113L238,110L243,107L239,103L245,100L244,98L248,99L250,98L251,96L248,93L243,91L239,91Z " data-fips="UGD6" data-fips-="" data-iso3="UGA" data-name="Oyam" data-p="OA"/><path d="M140,156L131,159L129,161L128,163L128,166L125,172L118,174L116,175L115,180L115,191L114,192L114,192L115,192L116,195L118,194L118,193L121,190L124,184L128,176L132,173L138,169L139,166L142,166L142,165L141,165L142,161L141,159L141,157L141,157L141,156L140,156L140,156Z " data-fips="UG28" data-fips-="" data-iso3="UGA" data-name="Bundibugyo" data-p="BN"/><path d="M183,134L182,134L182,132L181,130L180,130L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L149,161L151,162L153,163L159,160L163,160L169,159L171,158L177,157L179,157L180,156L181,155L184,154L185,154L189,150L188,149L185,147L184,140L185,139L183,138L182,137L183,134Z " data-fips="UG31" data-fips-="" data-iso3="UGA" data-name="Hoima" data-p="HO"/><path d="M143,168L143,166L142,165L142,166L139,166L138,169L132,173L128,176L124,184L121,190L118,193L118,194L120,195L126,195L129,198L132,198L132,203L131,205L133,205L136,202L136,195L135,194L139,188L139,187L137,186L139,178L141,176L142,171L143,170L143,168Z " data-fips="UG79" data-fips-="" data-iso3="UGA" data-name="Kabarole" data-p="BR"/><path d="M174,184L165,183L162,181L158,176L156,175L148,172L143,170L142,171L141,176L139,178L137,186L139,187L141,188L143,199L147,196L150,192L158,192L158,197L154,203L154,204L157,204L160,204L162,205L165,205L165,204L166,203L171,198L170,194L172,190L177,187L176,186L175,185L174,184Z " data-fips="UG85" data-fips-="" data-iso3="UGA" data-name="Kyenjojo" data-p="KJ"/><path d="M177,157L171,158L169,159L163,160L159,160L153,163L151,162L149,161L146,165L143,166L143,166L143,168L143,170L148,172L156,175L158,176L162,181L165,183L174,184L175,185L178,181L182,181L185,175L186,174L186,172L189,167L189,166L186,163L184,160L180,158L179,157L177,157Z " data-fips="UG41" data-fips-="" data-iso3="UGA" data-name="Kibale" data-p="KI"/><path d="M324,141L326,142L327,144L327,146L324,147L321,150L322,153L326,155L331,159L330,162L330,162L331,162L332,163L333,163L332,158L335,153L339,152L340,150L341,147L338,143L330,139L327,141L324,141Z " data-fips="UGA4" data-fips-="UG39" data-iso3="UGA" data-name="Kapchorwa" data-p="KP"/><path d="M343,149L341,147L340,150L339,152L335,153L332,158L333,163L333,163L337,158L343,156L344,152L343,150L343,149Z " data-fips="UGB6" data-fips-="" data-iso3="UGA" data-name="Kongasis" data-p="KO"/><path d="M320,141L319,141L318,140L318,141L317,141L317,144L319,148L318,151L315,158L314,159L315,160L317,161L321,162L323,163L324,162L328,162L330,162L331,159L326,155L322,153L321,150L324,147L327,146L327,144L326,142L324,141L320,141Z " data-fips="UG94" data-fips-="" data-iso3="UGA" data-name="Budadiri" data-p="BD"/><path d="M313,159L312,159L312,160L312,162L311,164L310,165L309,165L311,166L312,166L311,170L310,172L311,172L312,173L313,174L314,175L315,174L317,170L318,169L321,163L323,163L321,162L317,161L315,160L314,159L313,159Z " data-fips="UGA9" data-fips-="UG87" data-iso3="UGA" data-name="Bungokho" data-p="BN"/><path d="M328,162L324,162L323,163L321,163L318,169L317,170L315,174L314,175L317,178L320,179L320,178L324,176L328,168L329,163L330,162L328,162Z " data-fips="UGC5" data-fips-="" data-iso3="UGA" data-name="Manafwa" data-p="MF"/><path d="M297,182L296,182L294,180L290,180L289,180L289,181L291,184L288,189L288,190L288,192L289,193L292,195L292,199L293,200L293,203L294,204L300,205L304,204L304,204L300,198L302,195L303,188L304,188L304,188L301,185L301,184L300,182L299,182L298,182L297,182Z " data-fips="UG66" data-fips-="" data-iso3="UGA" data-name="Bugiri" data-p="BG"/><path d="M304,188L304,188L303,188L302,195L300,198L304,204L305,204L308,200L310,197L310,195L311,192L312,187L308,187L307,187L305,188L304,188Z " data-fips="UG67" data-fips-="" data-iso3="UGA" data-name="Busia" data-p="BU"/><path d="M311,170L312,166L311,166L309,165L307,167L304,169L301,170L299,170L296,169L294,170L295,171L296,176L296,178L298,180L298,182L299,182L300,182L300,181L303,176L304,174L309,172L310,172L311,170Z " data-fips="UGB7" data-fips-="" data-iso3="UGA" data-name="Bunyole" data-p="BN"/><path d="M288,192L288,193L288,193L286,193L285,194L284,194L280,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L292,199L292,195L289,193L288,192Z " data-fips="UG86" data-fips-="" data-iso3="UGA" data-name="Mayuge" data-p="MG"/><path d="M320,179L317,178L314,175L313,174L312,173L311,172L310,172L309,172L304,174L303,176L300,181L300,182L301,184L301,185L304,188L305,188L307,187L308,187L312,187L312,187L313,186L318,183L320,180L320,179Z " data-fips="UG76" data-fips-="" data-iso3="UGA" data-name="Tororo" data-p="TR"/><path d="M316,117L316,115L314,113L302,106L301,108L300,110L302,115L301,125L300,126L300,131L299,132L297,134L297,135L297,136L299,136L301,137L304,138L308,137L316,137L316,117Z " data-fips="UGA5" data-fips-="UG69" data-iso3="UGA" data-name="Usuk" data-p="UU"/><path d="M322,69L313,64L308,62L302,61L300,59L299,59L296,58L294,56L294,57L292,60L291,61L287,60L285,60L285,66L287,67L291,67L291,70L297,80L301,83L297,83L297,88L300,89L304,91L306,88L313,85L317,86L319,77L322,73L324,69L322,69Z " data-fips="UGA6" data-fips-="UG45" data-iso3="UGA" data-name="Jie" data-p="JE"/><path d="M294,101L293,100L291,103L289,103L288,104L286,104L282,109L281,115L276,116L276,117L277,119L277,120L279,122L279,124L280,125L280,123L282,119L290,124L290,125L297,133L297,134L299,132L300,131L300,126L301,125L302,115L300,110L301,108L302,106L294,101Z " data-fips="UGB5" data-fips-="" data-iso3="UGA" data-name="Amuria" data-p="AM"/><path d="M284,37L286,42L289,46L291,51L293,54L294,56L296,58L299,59L300,59L302,61L308,62L313,64L322,69L324,69L326,69L329,69L330,69L332,68L332,68L328,66L325,57L324,55L326,48L327,41L324,40L319,39L318,38L313,34L316,32L310,32L311,28L309,26L306,16L294,26L284,36L284,37Z " data-fips="UGC1" data-fips-="" data-iso3="UGA" data-name="Kaabong" data-p="AB"/><path d="M300,89L297,88L297,83L301,83L297,80L291,70L291,67L287,67L285,66L286,75L287,83L285,85L284,88L284,92L287,96L289,97L290,98L291,98L295,96L306,96L304,92L304,91L300,89Z " data-fips="UGC8" data-fips-="" data-iso3="UGA" data-name="Labwor" data-p="LB"/><path d="M324,69L322,73L319,77L317,86L313,85L306,88L304,91L304,92L306,96L295,96L291,98L290,98L290,101L289,103L291,103L293,100L294,101L302,106L314,113L316,115L316,117L316,137L317,137L317,137L319,137L321,134L323,131L328,128L332,125L332,122L337,121L338,119L344,116L346,110L349,108L347,104L347,101L349,98L348,95L345,92L343,88L340,80L336,79L333,75L332,68L330,69L329,69L326,69L324,69Z " data-fips="UG88" data-fips-="" data-iso3="UGA" data-name="Moroto" data-p="MT"/><path d="M349,108L346,110L344,116L338,119L337,121L332,122L332,125L328,128L323,131L321,134L319,137L317,137L317,141L318,141L318,140L319,141L320,141L324,141L327,141L330,139L338,143L341,147L343,149L343,149L346,146L347,143L350,139L352,126L353,124L351,121L352,115L349,108Z " data-fips="UG91" data-fips-="" data-iso3="UGA" data-name="Nakapiripirit" data-p="NP"/><path d="M178,225L179,219L174,216L170,216L169,216L169,220L168,224L169,230L172,237L170,241L168,245L171,246L174,250L174,254L173,255L178,261L202,261L200,256L199,254L199,251L200,248L199,247L197,243L197,239L194,235L191,237L185,240L182,239L179,237L176,236L172,234L173,231L177,227L178,226L178,225Z " data-fips="UG61" data-fips-="" data-iso3="UGA" data-name="Rakai" data-p="RA"/><path d="M206,216L203,212L198,211L194,212L193,212L191,213L189,215L190,223L192,230L187,229L181,230L179,229L178,226L177,227L173,231L172,234L176,236L179,237L182,239L185,240L191,237L194,235L197,239L197,243L199,247L200,248L203,241L206,237L212,229L212,226L211,225L211,224L211,224L210,223L209,223L208,220L209,220L206,216Z " data-fips="UG71" data-fips-="" data-iso3="UGA" data-name="Masaka" data-p="MA"/><path d="M130,220L127,219L127,218L128,218L126,218L124,218L120,219L115,222L102,224L101,229L111,232L113,235L115,236L113,242L114,243L118,248L121,250L122,250L125,248L127,248L129,250L131,250L134,248L138,244L141,232L141,229L142,226L141,226L138,228L134,223L131,221L130,220Z " data-fips="UG29" data-fips-="" data-iso3="UGA" data-name="Bushenyi" data-p="BS"/><path d="M114,192L110,198L108,206L104,209L104,214L103,217L102,224L115,222L120,219L124,218L126,218L128,218L130,211L131,205L132,203L132,198L129,198L126,195L120,195L118,194L116,195L115,192L114,192L114,192L114,192Z " data-fips="UG40" data-fips-="" data-iso3="UGA" data-name="Kasese" data-p="KS"/><path d="M154,203L158,197L158,192L150,192L147,196L143,199L141,188L139,187L139,188L135,194L136,195L136,202L133,205L131,205L130,211L128,218L127,218L127,219L130,220L131,220L136,222L140,221L139,220L136,213L138,212L139,209L140,209L144,207L146,207L147,206L149,204L152,204L154,204L154,203Z " data-fips="UG81" data-fips-="" data-iso3="UGA" data-name="Kamwenge" data-p="KE"/><path d="M147,223L150,221L150,212L146,207L146,207L144,207L140,209L139,209L138,212L136,213L139,220L140,221L136,222L131,220L130,220L131,221L134,223L138,228L141,226L142,226L144,225L147,225L147,223Z " data-fips="UGB8" data-fips-="" data-iso3="UGA" data-name="Ibanda" data-p="IA"/><path d="M152,243L148,243L148,246L147,250L146,252L144,253L146,255L140,264L140,264L148,265L151,262L157,261L178,261L173,255L174,254L174,250L171,246L168,245L167,246L159,247L158,246L156,244L154,243L152,243Z " data-fips="UGB9" data-fips-="" data-iso3="UGA" data-name="Bukanga" data-p="BK"/><path d="M152,204L149,204L147,206L146,207L146,207L150,212L150,221L147,223L147,225L146,228L151,234L156,238L154,241L154,243L156,244L158,246L159,247L167,246L168,245L170,241L172,237L169,230L168,224L169,220L169,216L167,216L166,216L167,213L167,210L166,206L165,205L162,205L160,204L157,204L154,204L152,204Z " data-fips="UGC3" data-fips-="" data-iso3="UGA" data-name="Mbarara" data-p="RR"/><path d="M121,250L121,252L120,257L121,258L120,262L120,263L120,264L122,268L126,270L131,268L132,268L136,264L139,264L140,264L146,255L144,253L146,252L144,252L135,253L130,251L131,250L129,250L127,248L125,248L122,250L121,250Z " data-fips="UG59" data-fips-="" data-iso3="UGA" data-name="Ntungamo" data-p="NT"/><path d="M100,235L100,236L101,236L104,234L104,242L107,243L108,248L109,254L110,255L110,258L113,263L115,264L115,262L119,263L120,263L120,262L121,258L120,257L121,252L121,250L118,248L114,243L113,242L115,236L113,235L111,232L101,229L100,235Z " data-fips="UG93" data-fips-="" data-iso3="UGA" data-name="Rukungiri" data-p="RK"/><path d="M154,241L156,238L151,234L146,228L147,225L144,225L142,226L141,229L141,232L138,244L134,248L131,250L130,251L135,253L144,252L146,252L147,250L148,246L148,243L152,243L154,243L154,241Z " data-fips="UGB1" data-fips-="UG52" data-iso3="UGA" data-name="Kashari" data-p="KS"/><path d="M113,263L112,263L110,263L107,262L106,264L106,265L106,266L107,269L107,271L110,276L110,277L112,282L114,284L124,278L125,275L131,269L131,268L126,270L122,268L120,264L120,263L119,263L115,262L115,264L113,263Z " data-fips="UG34" data-fips-="" data-iso3="UGA" data-name="Kabale" data-p="KA"/><path d="M97,261L97,264L98,277L100,280L104,278L110,276L110,276L107,271L107,269L106,266L106,265L104,264L102,263L99,262L97,261L97,261Z " data-fips="UG43" data-fips-="" data-iso3="UGA" data-name="Kisoro" data-p="KR"/><path d="M101,237L100,242L99,255L97,260L97,261L99,262L102,263L104,264L106,265L106,264L107,262L110,263L112,263L113,263L110,258L110,255L109,254L108,248L107,243L104,242L104,234L101,236L101,237Z " data-fips="UG82" data-fips-="" data-iso3="UGA" data-name="Kanungu" data-p="UU"/></g></svg>
\ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/world.svg b/plugins/UserCountryMap/svg/world.svg
index b7c32d8e16b9d26e60dbb9a87d2bb9c83881a239..49d78ee43acbf1032446e2637fd7113b504e224e 100644
--- a/plugins/UserCountryMap/svg/world.svg
+++ b/plugins/UserCountryMap/svg/world.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 1000 525" height="525px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 1000 525" width="1000px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="525.010727376" padding="0.03" w="1000"><proj flip="auto" id="naturalearth" lon0="0"/><bbox h="463.56" w="884.64" x="95.31" y="-3.13"/></view></views></metadata><g class="" id="countries"><path d="M687.20,185.87L688.68,188.96L687.36,191.79L689.20,195.61L690.07,195.53L697.12,200.63L699.84,199.56L705.90,203.27L710.26,206.83L714.66,207.55L721.73,209.91L723.60,207.40L725.44,206.87L729.91,208.10L733.01,208.00L734.28,205.51L737.93,203.26L741.81,202.63L743.27,206.36L748.57,207.11L748.70,207.13L750.07,200.49L746.58,193.56L743.88,191.54L741.01,194.39L739.71,194.52L734.58,191.08L733.38,191.78L730.41,191.10L724.66,188.77L721.00,188.11L719.27,186.64L718.63,183.28L717.18,181.47L716.76,178.88L713.29,177.63L706.94,178.72L706.68,179.76L700.12,181.44L696.47,180.26L694.21,181.82L690.33,181.16L690.08,183.81L687.46,185.74L687.20,185.87Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M673.19,174.69L668.98,173.86L663.88,176.11L662.21,171.36L660.29,170.46L652.79,175.05L652.75,174.94L652.71,174.84L651.77,174.63L650.63,174.35L649.91,174.22L649.05,174.30L648.91,174.32L644.26,175.34L644.00,177.91L640.35,179.69L640.42,181.12L638.31,182.04L635.33,180.46L635.10,180.50L635.20,180.74L634.87,185.17L633.83,185.97L636.20,194.72L638.92,195.72L638.00,200.23L637.37,201.20L638.56,201.59L647.26,202.88L653.15,201.28L653.07,197.80L654.76,196.02L660.96,193.73L661.41,189.57L662.92,188.58L662.88,186.49L665.15,181.07L664.06,179.36L672.13,175.61L672.41,175.47L672.36,175.44L671.81,174.99L672.28,174.70L673.10,174.75L673.24,174.72L673.19,174.69Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M497.63,329.25L496.11,331.69L497.04,332.99L498.63,339.18L497.68,340.32L500.01,347.19L499.22,352.05L495.96,356.17L493.42,368.46L493.29,369.82L497.44,368.81L500.20,370.39L513.52,370.35L514.79,371.67L522.50,372.51L527.70,371.43L528.66,371.22L528.07,370.62L524.58,365.18L524.85,354.60L530.56,354.60L531.17,347.46L531.11,346.99L530.99,347.06L526.02,348.16L526.03,345.29L524.59,341.97L524.60,334.27L520.99,334.14L520.98,332.92L518.09,333.28L516.45,336.73L511.64,337.08L508.18,329.22L497.82,329.09L497.63,329.25Z M497.85,324.70L497.78,324.65L495.73,324.64L495.49,325.17L494.60,326.02L494.66,326.13L495.08,327.17L495.17,327.68L495.14,328.62L495.18,328.72L496.02,328.57L497.10,325.06L497.81,324.76L497.85,324.70Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M513.96,155.76L513.08,155.56L512.83,155.48L512.15,158.18L512.51,158.22L512.54,162.01L512.78,163.15L514.52,165.54L514.56,165.86L515.39,165.00L516.33,164.41L517.00,162.07L517.01,161.80L516.98,161.72L515.37,159.41L515.57,158.20L515.60,158.16L515.64,158.00L515.40,157.10L514.87,156.61L514.12,155.85L514.01,155.77L513.96,155.76Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M462.37,155.84L462.36,155.56L461.96,155.46L461.65,155.50L461.57,155.60L461.53,155.76L462.01,156.09L462.27,155.95L462.35,155.92L462.37,155.84Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M625.07,214.89L620.77,221.26L614.05,222.37L612.37,221.05L612.28,221.23L612.43,221.98L615.74,226.10L623.57,227.21L623.74,226.92L623.71,226.39L624.12,222.47L624.73,219.14L626.46,218.74L626.40,218.60L626.14,216.62L625.91,216.33L625.57,216.35L625.43,216.19L625.08,214.85L625.07,214.89Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M274.97,495.77L276.60,500.53L276.92,501.45L277.52,503.23L277.59,503.17L284.17,503.64L286.19,502.51L280.14,500.52L275.17,495.92L274.97,495.77Z M255.24,389.81L255.88,390.45L255.32,394.16L252.16,396.31L253.36,405.13L251.10,409.45L250.29,412.92L250.30,418.86L251.52,423.92L253.48,427.42L254.06,430.80L252.33,439.05L252.72,442.16L254.46,446.97L253.55,448.64L253.46,454.29L255.17,458.76L257.26,467.03L259.01,467.24L258.49,469.14L259.72,476.54L259.17,479.63L260.04,480.52L258.61,486.36L260.61,489.21L262.73,489.02L265.42,493.51L270.67,493.57L275.12,494.76L275.20,494.59L271.15,490.21L274.10,486.18L273.87,484.39L277.18,478.22L270.65,472.91L271.13,471.24L275.36,467.37L274.89,464.93L276.69,462.35L274.83,460.96L278.54,461.45L277.66,459.00L274.30,458.96L272.96,454.35L276.92,455.57L280.82,454.38L280.03,447.62L286.37,447.33L292.58,443.42L293.53,438.41L289.69,433.20L287.37,431.63L286.65,428.78L286.96,424.83L286.97,424.50L286.86,420.71L286.89,417.74L287.37,416.43L287.45,416.29L287.56,416.12L291.72,409.70L297.17,405.26L296.51,400.33L294.42,399.71L294.19,399.71L294.32,401.25L291.71,406.32L289.38,406.58L282.89,405.53L285.20,399.79L284.41,398.13L274.81,393.53L271.64,391.10L268.77,387.80L268.68,387.70L268.63,387.64L265.50,386.87L263.71,389.59L261.37,387.23L256.43,387.64L255.32,389.64L255.24,389.81Z " data-iso="ARG" data-name="Argentina" data-pop="40913584.0"/><path d="M584.92,160.23L584.86,160.28L582.78,160.51L580.75,160.85L580.61,160.88L580.67,161.04L582.63,164.75L583.61,164.68L585.04,165.73L585.16,165.89L585.44,165.83L587.24,166.63L588.15,166.45L589.32,168.56L589.47,168.83L589.63,168.87L590.03,168.71L590.53,168.73L590.47,168.41L589.31,166.27L587.57,164.98L585.01,160.39L584.92,160.23Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M645.61,483.58L643.96,485.63L646.97,485.59L649.11,484.12L645.61,483.58Z " data-iso="ATF" data-name="Fr. S. and Antarctic Lands" data-pop="140.0"/><path d="M869.03,454.28L867.11,457.98L866.20,461.88L868.01,463.94L873.54,460.93L877.95,454.85L877.34,454.26L869.03,454.28Z M896.50,350.86L895.13,346.40L891.73,352.28L892.09,353.81L888.73,365.59L886.03,370.41L881.28,370.10L871.45,361.76L873.34,357.95L873.60,355.69L877.20,352.27L874.52,352.53L870.58,350.97L865.97,349.97L862.45,348.09L864.33,351.46L858.58,352.34L855.95,355.12L852.99,359.58L853.53,361.22L849.19,360.87L845.35,357.42L841.60,359.10L838.71,362.33L837.37,365.75L836.05,366.54L833.49,370.41L832.12,366.89L829.29,370.05L829.11,372.39L825.49,377.24L822.39,379.11L818.26,379.66L817.00,380.62L808.17,383.38L803.66,386.22L801.99,388.39L801.31,386.64L797.88,394.95L798.54,402.27L796.87,399.79L796.41,403.24L797.74,412.53L796.93,417.63L797.53,421.71L794.30,428.70L793.38,428.25L796.04,433.54L800.74,433.53L807.01,429.90L811.72,429.37L816.77,429.95L822.70,425.98L827.51,423.73L829.33,423.92L836.45,421.74L844.61,421.71L848.36,423.47L851.81,429.66L851.62,432.08L857.77,428.93L857.19,432.74L854.83,434.44L857.32,434.10L858.99,431.63L860.20,432.73L858.98,435.89L861.37,434.83L860.80,443.96L863.44,445.72L866.25,445.95L868.27,447.27L873.72,443.97L876.10,446.93L883.53,443.73L887.13,443.51L889.68,441.04L892.49,436.57L897.79,430.58L907.35,420.77L912.90,411.49L913.58,405.52L914.57,402.32L914.43,396.93L911.04,392.09L911.05,388.87L908.65,388.44L908.40,383.72L907.45,380.20L901.93,376.38L896.50,350.86Z " data-iso="AUS" data-name="Australia" data-pop="21262641.0"/><path d="M503.69,134.42L498.28,133.16L497.63,134.24L495.25,133.94L495.18,133.91L495.15,133.98L493.25,138.40L490.97,137.60L488.55,138.59L483.74,138.21L483.67,138.24L483.76,138.29L483.96,138.44L483.92,138.70L483.72,139.13L483.75,139.18L483.81,139.43L483.86,139.52L483.93,139.81L483.89,139.87L484.00,139.87L486.02,140.13L486.32,140.43L486.32,140.55L486.40,140.58L491.01,139.79L490.99,140.30L494.75,141.63L495.33,141.75L495.45,141.77L497.70,142.18L498.46,141.54L501.70,140.62L501.85,140.55L502.26,140.17L502.66,138.79L503.29,138.20L504.31,136.71L504.45,136.56L504.28,136.44L503.58,135.23L503.56,135.04L503.76,134.53L503.77,134.50L503.69,134.42Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M585.16,165.89L585.22,165.95L585.33,166.08L585.40,166.15L587.58,168.38L588.90,168.73L589.47,168.83L589.32,168.56L588.15,166.45L587.24,166.63L585.44,165.83L585.16,165.89Z M588.60,158.10L588.56,158.22L589.66,160.24L589.38,160.95L585.46,159.76L584.92,160.23L585.01,160.39L587.57,164.98L589.31,166.27L590.47,168.41L590.53,168.73L590.71,168.74L594.38,165.96L595.48,166.97L597.61,170.41L597.33,169.06L598.49,164.14L600.76,163.83L594.98,158.47L594.68,158.26L593.07,160.51L588.92,158.17L588.60,158.10Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M551.74,316.71L550.39,316.76L549.17,318.13L547.11,317.67L547.06,317.86L547.06,318.00L547.70,319.05L547.66,321.31L548.14,323.50L548.21,324.04L549.18,324.06L551.15,321.65L551.39,320.97L551.76,316.81L551.82,316.72L551.74,316.71Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M466.20,124.98L465.49,125.28L464.33,125.86L469.37,129.83L470.68,129.17L473.03,131.23L473.25,131.24L473.32,131.18L473.05,130.30L473.41,129.35L474.06,129.21L474.08,129.22L474.09,129.16L474.35,127.58L473.72,127.11L473.68,127.05L473.15,127.04L473.41,127.04L473.24,126.85L472.88,126.95L472.87,126.97L469.97,124.74L468.39,125.34L466.53,124.89L466.20,124.98Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M468.38,266.04L465.12,264.34L464.94,265.29L464.87,265.65L464.79,265.86L463.62,267.36L460.39,268.89L460.31,268.88L460.23,269.27L459.89,271.05L461.69,273.98L462.55,285.95L463.15,285.80L464.59,285.56L465.89,285.41L466.08,275.84L467.11,275.34L469.17,270.88L468.45,266.60L468.57,266.37L468.38,266.04Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M457.57,254.60L455.23,254.38L447.61,259.35L447.44,260.70L444.84,260.61L444.00,263.52L441.33,265.90L440.64,270.71L440.59,270.91L440.78,271.15L444.24,273.70L445.90,272.73L449.20,274.38L449.26,274.29L449.23,274.10L448.71,270.62L449.10,268.87L456.63,268.26L457.34,268.45L458.04,268.61L459.03,268.89L459.23,269.02L459.52,268.92L460.31,268.88L460.39,268.89L463.62,267.36L464.79,265.86L464.87,265.65L464.73,265.48L462.34,263.01L460.91,261.70L458.17,255.03L458.21,254.86L457.57,254.60Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M726.22,229.39L730.13,226.20L732.77,226.58L736.66,233.79L736.71,233.78L737.27,232.07L736.83,229.66L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.22,229.39Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M520.91,149.78L520.81,149.85L521.34,154.57L520.68,154.72L520.71,156.54L520.49,156.60L520.97,157.12L522.54,158.72L522.42,159.11L522.43,160.00L522.40,160.07L522.71,160.11L529.40,160.32L531.49,159.89L531.55,158.62L531.90,158.72L531.89,158.62L535.08,157.90L536.59,157.82L536.48,157.54L534.92,156.05L535.59,155.20L537.55,152.39L537.52,151.54L532.51,150.11L531.53,150.33L521.12,149.93L520.91,149.78Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M509.42,155.72L509.47,155.71L509.34,154.27L509.83,154.06L511.22,152.27L511.30,152.27L511.46,152.09L510.88,148.92L510.52,147.55L510.42,147.56L510.24,147.57L502.45,146.84L501.35,147.92L509.17,155.63L509.42,155.72Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M530.63,108.74L528.70,109.88L528.02,109.79L526.96,110.30L526.90,110.34L526.91,110.49L527.26,111.89L525.16,113.14L524.81,114.90L519.71,116.23L519.51,116.16L519.95,117.31L520.98,120.49L519.42,121.88L520.58,124.07L520.80,124.41L520.82,124.39L530.17,123.61L538.38,124.55L541.84,122.39L542.35,122.42L542.32,122.33L542.59,119.04L541.58,116.66L538.31,111.83L538.20,110.66L534.42,110.28L531.11,109.04L530.71,108.75L530.63,108.74Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M189.39,242.10L188.69,242.20L186.49,244.15L186.45,244.46L186.31,245.33L185.40,251.36L185.76,251.32L186.43,251.36L186.40,251.12L188.51,248.70L189.23,245.53L189.18,242.51L189.39,242.10Z " data-iso="BLZ" data-name="Belize" data-pop="307899.0"/><path d="M281.67,380.22L279.82,369.76L279.62,366.36L274.12,366.30L272.73,362.27L273.30,360.39L272.46,357.43L262.11,352.70L260.16,352.59L257.64,349.98L256.61,342.84L253.02,343.51L246.52,347.79L244.37,347.26L244.01,347.27L244.44,348.05L247.11,352.82L246.23,357.04L246.98,358.79L245.99,360.32L246.09,370.73L246.09,370.74L246.18,371.14L249.71,381.45L251.61,384.87L253.18,389.81L254.75,389.93L255.24,389.81L255.32,389.64L256.43,387.64L261.37,387.23L263.71,389.59L265.50,386.87L268.63,387.64L268.68,387.70L268.73,387.52L270.39,378.41L275.58,377.16L278.35,377.12L281.47,379.68L281.47,380.27L281.67,380.22Z " data-iso="BOL" data-name="Bolivia" data-pop="9775246.0"/><path d="M304.39,308.97L301.25,309.13L301.40,314.21L305.81,313.20L308.20,309.21L304.39,308.97Z M270.32,289.58L270.41,289.62L267.74,292.84L263.68,295.32L259.95,293.96L260.00,298.96L261.95,300.22L255.49,305.68L251.96,304.61L251.17,303.79L250.59,303.95L249.73,300.71L246.98,302.01L242.01,302.05L242.40,304.37L241.30,308.09L243.38,312.42L241.85,323.15L241.80,323.28L241.79,323.51L238.70,323.69L233.45,326.25L229.77,335.14L233.75,341.76L235.82,343.88L240.52,343.24L240.76,347.48L243.72,347.28L244.01,347.27L244.37,347.26L246.52,347.79L253.02,343.51L256.61,342.84L257.64,349.98L260.16,352.59L262.11,352.70L272.46,357.43L273.30,360.39L272.73,362.27L274.12,366.30L279.62,366.36L279.82,369.76L281.67,380.22L281.47,380.27L281.56,380.53L282.79,387.25L290.25,390.79L290.63,392.54L294.70,394.21L294.15,399.19L294.19,399.71L294.42,399.71L296.51,400.33L297.17,405.26L291.72,409.70L287.56,416.12L287.45,416.29L287.66,416.55L290.07,416.29L299.76,423.01L300.79,424.61L301.81,429.07L302.93,427.84L304.84,423.22L308.42,418.84L310.30,413.32L313.09,408.69L312.00,402.20L317.57,394.44L323.33,391.27L327.46,390.42L327.38,389.54L330.76,390.24L331.84,387.97L333.89,386.85L333.83,384.12L337.15,377.09L336.89,374.80L338.48,371.45L338.50,362.67L337.95,356.70L342.64,349.78L342.93,348.35L348.15,342.23L349.99,338.18L349.77,330.98L347.97,326.47L342.95,325.69L337.21,320.26L334.26,318.37L327.21,318.12L322.22,317.42L319.90,319.36L320.12,315.48L317.27,312.99L309.31,310.67L305.11,316.52L305.38,314.34L300.64,312.53L300.48,311.50L296.48,314.01L297.99,310.87L302.34,305.17L300.07,296.44L298.56,293.04L298.26,293.65L294.32,300.26L291.75,299.91L289.11,299.89L289.03,299.85L288.89,299.84L286.67,299.44L285.10,299.26L283.35,301.25L283.26,301.22L283.13,301.27L280.39,301.34L276.98,303.57L273.65,302.02L272.94,295.34L273.89,294.11L270.60,289.51L270.32,289.58Z " data-iso="BRA" data-name="Brazil" data-pop="198739269.0"/><path d="M812.15,290.66L812.47,292.48L813.15,292.51L812.15,290.66Z M812.20,290.43L812.03,290.22L811.57,290.49L809.58,291.76L809.23,291.75L810.87,293.70L811.63,292.61L812.15,290.66L812.20,290.43Z " data-iso="BRN" data-name="Brunei" data-pop="388190.0"/><path d="M730.00,208.60L728.59,207.63L725.08,206.80L722.27,209.81L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.00,208.60Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M534.22,371.75L530.88,372.78L528.13,372.51L522.05,373.61L521.11,378.76L520.80,386.86L517.74,388.76L517.43,396.74L517.43,396.83L517.57,396.94L518.49,397.74L519.06,403.32L523.20,403.52L526.45,398.80L530.29,400.31L534.06,399.81L535.11,396.87L538.08,394.91L538.96,392.53L542.51,389.35L545.37,387.62L546.08,387.55L545.94,387.42L545.17,386.18L542.01,385.09L540.09,381.40L536.63,377.42L534.28,371.94L534.35,371.77L534.22,371.75Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M527.58,269.12L524.19,270.51L521.40,274.56L515.84,276.23L511.86,279.64L509.54,280.89L505.53,281.32L505.20,281.29L504.89,281.88L503.32,284.74L502.60,288.53L502.90,291.49L507.33,299.71L507.48,300.05L507.69,299.56L508.66,295.79L510.90,295.24L514.78,295.62L514.95,295.73L514.91,295.02L516.33,290.69L525.10,292.96L536.22,289.19L541.13,289.59L542.02,289.91L541.80,289.63L538.74,284.46L535.06,281.17L531.96,277.25L531.81,277.20L531.51,277.11L530.16,274.79L530.20,273.07L527.94,269.59L527.71,269.15L527.58,269.12Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M288.51,143.77L290.25,144.79L287.60,144.99L287.43,143.78L290.29,140.55L290.48,142.51L288.51,143.77Z M250.30,146.95L254.39,144.43L265.45,138.43L269.12,135.62L277.77,132.36L282.03,132.74L282.70,133.78L279.35,138.79L279.10,142.33L288.14,146.07L283.62,147.65L274.71,151.80L272.62,151.28L273.60,148.64L278.70,145.91L279.53,144.16L271.19,146.59L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L250.30,146.95Z M114.91,127.43L118.59,128.40L119.01,130.87L121.27,134.15L118.30,134.79L117.64,133.26L114.17,131.65L115.69,130.85L114.91,127.43Z M308.97,124.35L303.83,130.21L306.97,129.76L308.13,132.20L311.97,131.99L312.79,134.91L310.69,136.35L313.16,137.90L311.17,141.28L308.83,139.77L309.54,137.26L305.06,138.45L302.03,138.00L295.44,138.08L295.16,136.81L303.45,127.07L307.48,124.24L308.97,124.35Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.34,112.76L115.65,113.20L115.01,113.43L114.95,113.35Z M251.80,79.21L252.86,78.63L257.31,80.90L260.71,83.80L255.32,84.01L248.15,85.72L246.95,84.11L243.65,84.53L246.03,83.01L250.64,77.43L251.80,79.21Z M279.01,69.75L279.50,71.49L278.15,72.68L274.17,72.98L274.58,71.19L279.01,69.75Z M230.41,65.74L232.45,66.65L229.94,69.33L225.36,67.89L227.68,65.96L230.41,65.74Z M203.00,134.43L202.99,134.44L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.51,133.00L122.99,129.14L120.68,130.41L118.87,127.96L115.29,126.48L115.26,124.12L116.62,121.08L114.67,118.17L114.56,115.04L118.21,111.64L118.99,109.62L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L129.17,65.77L135.60,67.80L140.28,66.75L146.54,66.37L146.70,67.06L161.61,63.89L163.21,66.27L168.70,66.55L173.45,65.22L180.75,67.56L186.71,67.87L188.51,69.80L185.48,70.33L187.37,71.63L190.78,71.70L196.30,70.87L200.21,73.41L199.94,74.98L202.66,70.63L201.03,69.89L210.47,70.54L212.98,70.38L223.94,70.84L227.19,69.11L230.71,70.01L228.63,72.10L237.67,68.84L235.94,67.81L239.19,66.23L234.18,65.26L233.92,63.69L235.65,61.47L240.31,59.01L244.14,60.90L244.44,63.57L241.07,65.67L246.17,66.34L244.61,69.95L249.23,66.88L250.74,68.57L248.89,70.23L249.58,73.24L254.19,70.59L257.76,66.99L260.61,65.12L267.06,67.32L263.21,73.59L253.59,76.06L249.63,75.32L250.80,76.53L246.22,78.92L240.88,77.72L242.13,78.94L246.48,79.69L240.50,83.15L234.43,84.50L232.11,84.13L233.40,86.44L229.09,87.08L226.42,88.37L218.97,94.40L215.88,99.06L219.80,100.19L218.97,105.21L222.56,105.09L241.81,112.35L239.20,119.12L241.64,125.14L243.44,125.79L248.20,121.90L248.43,113.60L250.67,112.98L257.83,109.24L258.89,108.02L260.03,103.71L258.36,99.17L261.31,97.42L263.14,90.09L265.25,87.85L272.00,89.18L274.99,88.09L278.40,92.08L283.00,92.61L281.56,95.77L279.77,96.11L278.59,100.07L283.76,101.06L283.91,102.55L290.67,99.25L293.76,95.20L297.06,100.36L295.48,101.08L299.68,110.14L298.82,112.38L306.23,113.76L299.03,116.76L298.52,117.69L306.29,115.40L306.30,116.92L309.17,117.35L309.00,121.94L306.19,123.85L300.56,125.18L296.82,127.94L290.74,129.28L289.19,128.68L279.51,128.62L276.52,129.66L274.67,131.89L267.56,135.71L263.77,135.00L261.29,140.79L255.94,142.84L251.05,146.37L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L203.00,134.43Z M197.98,56.99L202.27,55.82L204.95,57.68L209.17,55.85L210.26,59.46L212.67,59.03L213.46,55.49L217.64,55.23L218.92,56.87L217.62,60.95L223.03,64.34L222.42,65.53L219.80,65.13L216.99,68.02L214.51,68.27L208.74,66.35L200.10,68.67L192.14,69.25L190.68,66.93L186.15,66.67L184.98,65.26L187.19,64.14L198.15,63.33L189.53,62.91L188.07,61.05L192.88,60.06L186.29,59.76L191.73,56.29L199.72,54.72L197.98,56.99Z M279.17,53.91L284.80,54.90L285.30,56.26L281.66,56.10L276.05,55.02L276.23,53.86L279.17,53.91Z M258.27,61.65L262.56,61.40L263.77,59.95L263.25,58.09L266.26,54.83L272.31,53.69L274.61,53.79L275.91,56.47L272.89,59.00L279.70,57.67L280.92,56.71L285.64,57.04L288.30,58.61L285.22,61.00L290.83,59.67L293.79,60.31L296.31,62.14L299.50,63.10L297.40,64.81L299.17,65.36L297.11,68.16L299.35,70.54L305.25,71.89L309.66,73.75L309.00,75.93L307.47,75.64L303.99,79.31L293.07,76.13L295.39,80.61L295.99,80.12L299.35,83.84L297.75,86.66L288.60,83.96L292.50,87.62L292.50,89.97L286.20,88.25L280.43,85.03L282.17,84.51L278.65,81.37L269.73,82.43L267.11,81.23L269.74,79.52L277.52,78.78L278.80,76.26L282.81,74.65L285.31,71.78L283.91,68.59L277.92,67.76L279.86,66.52L277.25,63.95L267.94,64.84L257.47,64.35L257.68,63.28L252.12,63.10L251.77,61.50L256.86,61.72L251.93,60.43L256.34,55.49L259.69,54.08L266.97,53.46L263.71,55.05L260.80,59.02L262.46,60.50L258.27,61.65Z M233.93,53.07L238.97,54.58L237.02,55.69L237.60,58.30L232.47,60.37L225.16,56.62L226.67,55.62L228.18,56.54L229.51,54.55L233.93,53.07Z M249.67,52.45L255.35,53.29L249.09,56.52L245.39,57.09L243.23,58.64L241.38,56.44L242.83,54.19L246.03,52.67L249.67,52.45Z M190.26,52.59L194.11,52.15L198.36,54.35L184.13,58.10L181.99,59.81L174.29,61.32L173.96,59.68L171.22,58.32L180.22,53.41L179.86,51.92L190.26,52.59Z M244.84,45.97L241.80,49.71L237.15,50.11L237.77,48.47L234.58,48.36L236.65,46.09L238.83,47.47L240.09,45.51L244.84,45.97Z M220.72,47.10L224.16,47.20L223.11,49.81L217.25,50.18L204.98,51.68L205.21,50.60L212.36,49.52L208.25,49.73L206.58,48.85L203.50,50.07L198.21,49.49L200.17,48.25L207.79,45.86L212.97,48.16L217.76,48.62L220.93,45.02L220.72,47.10Z M253.27,44.75L259.59,45.43L260.16,47.11L262.85,48.21L269.42,48.43L273.92,47.78L280.89,48.69L282.17,49.33L279.48,51.04L274.37,51.38L272.84,50.39L271.20,51.30L264.83,51.52L254.41,51.06L255.33,48.22L249.66,46.53L247.42,45.05L253.27,44.75Z M208.50,43.52L205.87,45.23L200.49,46.14L202.02,45.10L191.30,47.21L190.47,46.28L200.70,43.68L208.50,43.52Z M221.52,41.54L221.17,42.57L216.20,43.57L216.04,41.97L221.52,41.54Z M253.02,40.40L254.10,41.83L249.57,42.33L248.87,41.11L251.15,39.74L253.02,40.40Z M239.78,38.36L245.43,39.89L245.53,41.90L240.37,41.11L235.06,41.10L238.11,39.78L235.68,39.63L239.78,38.36Z M268.67,33.83L273.79,35.58L278.42,38.44L272.00,39.08L268.02,41.30L262.42,41.31L258.43,39.36L262.08,38.70L256.41,37.37L255.92,36.28L264.40,33.36L268.67,33.83Z M318.66,29.50L324.60,29.69L322.10,30.26L330.56,30.49L333.67,31.14L323.11,32.97L320.21,34.05L310.41,36.44L296.03,37.86L300.05,38.57L292.29,38.97L299.24,40.17L290.54,41.96L283.44,43.84L288.26,44.69L285.67,46.01L280.92,45.84L271.85,46.42L262.99,45.95L270.67,42.10L270.98,41.46L280.39,38.76L278.16,35.82L282.70,35.97L286.76,37.50L285.02,35.93L298.96,34.48L296.21,33.88L291.98,34.73L282.57,35.31L273.50,34.36L274.22,32.63L270.62,32.52L279.02,31.56L284.47,31.68L286.35,30.76L295.96,32.12L294.59,30.16L305.54,30.40L306.23,29.43L318.66,29.50Z " data-iso="CAN" data-name="Canada" data-pop="33487208.0"/><path d="M483.18,137.98L481.47,137.63L480.38,137.95L478.66,138.08L478.43,138.00L478.10,138.16L474.37,143.06L475.70,142.04L476.92,143.72L476.97,143.84L477.07,143.92L480.85,142.17L482.52,144.12L483.60,142.07L486.21,141.00L486.32,140.55L486.32,140.43L486.02,140.13L484.00,139.87L483.89,139.87L483.68,139.85L483.64,139.86L483.61,139.73L483.61,139.47L483.72,139.13L483.92,138.70L483.96,138.44L483.76,138.29L483.67,138.24L483.18,137.98Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M277.52,503.23L276.92,501.45L276.60,500.53L274.97,495.77L274.87,495.70L272.69,495.21L271.00,497.99L272.41,499.97L275.59,502.23L269.54,501.86L277.13,503.23L277.52,503.23Z M255.15,483.71L253.52,482.28L252.70,484.45L255.39,486.70L255.15,483.71Z M250.75,463.37L251.29,461.92L248.62,458.60L248.91,462.80L250.75,463.37Z M246.09,370.74L245.88,370.98L245.38,372.47L245.30,372.84L243.64,373.75L243.83,373.93L245.93,385.04L245.96,392.80L246.63,398.26L246.05,410.84L246.70,416.13L246.03,416.80L248.26,425.18L247.72,426.74L246.22,441.56L247.78,451.35L247.92,454.58L250.71,457.82L251.72,456.98L252.97,462.31L253.01,466.28L254.96,467.22L253.91,472.68L252.33,471.73L249.81,472.29L254.46,479.62L254.04,479.77L258.98,489.91L255.31,489.02L261.21,493.68L263.34,492.64L261.46,495.80L267.25,495.61L264.14,497.95L269.92,498.90L269.35,496.17L273.51,494.44L275.12,494.76L270.67,493.57L265.42,493.51L262.73,489.02L260.61,489.21L258.61,486.36L260.04,480.52L259.17,479.63L259.72,476.54L258.49,469.14L259.01,467.24L257.26,467.03L255.17,458.76L253.46,454.29L253.55,448.64L254.46,446.97L252.72,442.16L252.33,439.05L254.06,430.80L253.48,427.42L251.52,423.92L250.30,418.86L250.29,412.92L251.10,409.45L253.36,405.13L252.16,396.31L255.32,394.16L255.88,390.45L255.24,389.81L254.75,389.93L253.18,389.81L251.61,384.87L249.71,381.45L246.18,371.14L246.09,370.74Z " data-iso="CHL" data-name="Chile" data-pop="16601707.0"/><path d="M447.64,289.77L447.54,289.89L447.95,289.98L448.03,289.84L447.64,289.77Z M433.01,271.85L432.93,271.99L433.64,275.72L433.10,276.77L431.60,281.01L431.43,281.16L431.49,281.20L432.02,285.59L433.25,285.89L434.28,292.62L434.65,292.53L440.40,289.98L445.62,289.51L448.22,289.76L448.24,289.83L448.95,289.13L447.57,284.82L449.55,279.29L449.29,274.47L449.26,274.29L449.20,274.38L445.90,272.73L444.24,273.70L440.78,271.15L440.59,270.91L440.49,270.86L438.39,271.50L438.33,269.85L433.10,271.85L433.01,271.85Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M505.36,281.00L500.59,273.91L501.30,272.51L505.64,272.41L503.04,263.49L501.16,261.43L500.61,261.42L500.93,263.09L502.20,266.25L499.60,269.31L498.18,273.70L495.70,277.46L494.53,281.05L491.68,284.92L489.25,283.60L485.27,287.02L483.93,291.17L483.97,291.19L486.26,294.08L488.24,297.16L487.85,299.09L487.79,299.93L488.00,300.25L488.34,300.41L491.79,300.41L492.50,300.41L492.54,300.18L493.21,299.93L498.06,300.09L498.49,300.21L498.57,300.44L499.31,300.44L502.53,300.30L507.34,302.00L507.48,300.08L507.48,300.05L507.33,299.71L502.90,291.49L502.60,288.53L503.32,284.74L504.89,281.88L505.20,281.29L505.36,281.00Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M541.13,289.59L536.22,289.19L525.10,292.96L516.33,290.69L514.91,295.02L514.95,295.73L514.99,296.36L512.25,309.14L507.58,315.93L503.52,324.95L502.23,325.48L497.90,324.58L497.85,324.70L497.81,324.76L497.10,325.06L496.02,328.57L495.18,328.72L495.27,328.89L495.49,329.20L497.62,328.99L497.82,329.09L508.18,329.22L511.64,337.08L516.45,336.73L518.09,333.28L520.98,332.92L520.99,334.14L524.60,334.27L524.59,341.97L526.03,345.29L526.02,348.16L530.99,347.06L531.11,346.99L531.22,347.01L532.20,348.77L539.49,350.94L540.85,349.52L542.27,351.98L548.74,355.92L548.87,351.58L546.61,352.27L544.74,349.94L545.51,343.27L544.85,341.28L551.62,337.51L552.16,337.41L552.07,337.09L550.26,332.85L548.00,325.94L548.21,324.21L548.21,324.04L548.14,323.50L547.66,321.31L547.70,319.05L547.06,318.00L547.06,317.86L546.78,317.73L546.58,316.89L547.43,315.99L548.70,313.19L548.82,313.11L548.83,313.00L549.90,305.75L553.03,302.14L553.74,300.05L552.36,299.39L552.84,295.79L552.67,295.69L552.60,295.54L549.65,292.70L546.78,292.13L542.13,290.16L542.02,289.91L541.13,289.59Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M514.78,295.62L510.90,295.24L508.66,295.79L507.69,299.56L507.48,300.05L507.48,300.08L507.34,302.00L502.53,300.30L499.31,300.44L498.57,300.44L498.55,300.68L501.49,303.43L500.40,307.47L500.97,309.12L501.36,316.56L500.72,317.04L497.03,315.05L493.35,317.42L494.35,320.12L491.87,322.14L492.59,322.90L493.86,324.45L493.99,325.13L494.55,325.94L494.60,326.02L495.49,325.17L495.73,324.64L497.78,324.65L497.85,324.70L497.90,324.58L502.23,325.48L503.52,324.95L507.58,315.93L512.25,309.14L514.99,296.36L514.95,295.73L514.78,295.62Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M219.59,277.23L219.94,279.82L217.71,282.34L218.00,282.67L219.25,286.75L219.18,291.75L219.84,294.18L215.98,299.19L214.11,302.71L214.20,302.96L220.44,307.27L224.65,308.29L225.21,308.53L225.39,308.30L234.18,316.82L236.75,316.09L241.39,317.80L240.03,321.96L241.64,323.01L241.80,323.28L241.85,323.15L243.38,312.42L241.30,308.09L242.40,304.37L242.01,302.05L246.98,302.01L249.73,300.71L250.59,303.95L251.17,303.79L251.11,303.55L249.09,298.55L249.79,296.29L248.35,291.49L249.77,286.64L243.66,286.29L241.70,283.38L234.55,281.53L234.85,278.56L233.81,270.68L236.69,266.71L238.88,265.78L239.00,265.58L239.17,264.08L236.34,265.07L232.63,267.80L229.90,267.91L229.33,269.53L226.97,269.32L225.01,273.40L220.84,279.06L219.67,277.31L219.59,277.23Z " data-iso="COL" data-name="Colombia" data-pop="45644023.0"/><path d="M194.42,268.71L193.99,271.01L196.39,272.02L202.35,278.93L202.54,279.33L203.14,276.18L202.59,275.12L203.82,273.95L203.69,273.81L202.21,272.29L201.32,270.77L200.91,269.30L200.84,269.16L199.94,269.81L197.83,268.70L194.43,268.64L194.42,268.71Z " data-iso="CRI" data-name="Costa Rica" data-pop="4253877.0"/><path d="M211.35,225.27L204.42,227.06L202.60,229.34L211.44,227.32L210.88,228.73L214.78,229.22L220.34,232.84L223.96,234.32L222.89,237.12L232.71,236.34L228.73,232.64L225.26,231.39L220.41,228.13L211.35,225.27Z " data-iso="CUB" data-name="Cuba" data-pop="11451652.0"/><path d="M556.06,182.22L554.62,181.52L553.10,181.32L552.69,182.15L552.52,182.11L554.59,182.22L555.37,182.66L556.30,182.49L556.06,182.22Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M552.34,182.07L552.08,183.78L552.64,183.98L556.37,182.56L556.30,182.49L555.37,182.66L554.59,182.22L552.52,182.11L552.34,182.07Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M497.36,126.74L491.40,128.28L490.71,129.01L492.33,131.96L495.04,133.74L495.18,133.91L495.25,133.94L497.63,134.24L498.28,133.16L503.69,134.42L503.77,134.50L503.83,134.23L506.07,133.35L506.72,132.88L508.55,131.34L508.62,131.33L508.60,131.23L507.65,129.98L503.35,128.20L502.75,129.24L498.64,126.60L497.62,126.67L497.39,126.68L497.36,126.74Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M494.56,115.84L493.98,115.52L494.63,116.42L494.95,116.38L495.07,116.39L495.01,116.23L495.04,116.12L494.56,115.84Z M480.33,113.28L479.37,117.83L476.49,118.24L476.62,118.39L473.46,123.58L474.15,124.51L473.82,126.52L473.68,127.05L473.72,127.11L474.35,127.58L474.09,129.16L474.08,129.22L474.06,129.31L474.07,129.52L474.77,131.33L474.76,131.53L474.86,131.51L479.71,133.50L478.29,137.95L478.43,138.00L478.66,138.08L480.38,137.95L481.47,137.63L483.18,137.98L483.67,138.24L483.74,138.21L488.55,138.59L490.97,137.60L493.25,138.40L495.15,133.98L495.18,133.91L495.04,133.74L492.33,131.96L490.71,129.01L491.40,128.28L497.36,126.74L497.39,126.68L497.40,126.63L496.60,123.34L496.94,122.48L495.22,116.87L495.20,116.86L491.81,114.56L490.61,114.37L483.11,113.23L483.09,113.17L481.64,113.10L480.89,112.93L480.28,112.90L480.33,113.28Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M589.93,266.84L590.21,265.39L590.60,264.60L589.67,262.92L589.62,262.75L588.59,263.77L588.30,263.94L587.48,263.51L587.39,263.61L587.11,264.12L585.82,268.93L586.06,269.02L589.03,268.87L589.27,268.86L589.63,268.17L589.95,267.55L590.20,267.07L589.93,266.84Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M490.30,109.94L489.31,108.83L487.06,110.05L488.67,113.34L490.30,109.94Z M480.28,112.90L480.89,112.93L481.64,113.10L483.09,113.17L482.99,112.82L485.66,107.48L484.15,105.89L480.24,112.63L480.28,112.90Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M239.58,243.78L248.94,243.00L250.05,241.61L246.70,239.45L245.55,237.80L240.19,237.58L240.05,237.64L238.98,241.61L239.42,243.66L239.58,243.78Z " data-iso="DOM" data-name="Dominican Rep." data-pop="9650054.0"/><path d="M480.99,175.87L468.45,175.92L460.36,177.54L451.69,182.42L451.10,182.35L453.81,193.18L447.44,194.56L445.81,197.41L441.91,200.48L438.33,201.38L431.81,205.40L431.74,208.24L431.72,209.12L431.71,209.72L431.69,210.45L432.25,210.85L438.90,215.62L439.46,216.02L442.43,218.18L443.10,218.69L444.01,219.37L467.25,237.38L469.41,239.91L470.37,239.70L471.03,239.55L478.70,234.94L480.17,233.49L491.99,225.09L493.52,224.00L493.22,223.36L489.59,220.28L485.77,214.83L485.37,200.05L485.65,199.87L485.45,199.02L479.43,186.92L481.69,182.42L481.43,179.85L482.28,175.78L480.99,175.87Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M214.29,303.53L210.39,305.35L210.58,306.69L208.07,311.63L208.13,316.54L209.86,317.82L211.51,317.02L209.85,320.20L209.78,320.25L209.46,323.17L214.94,324.44L217.12,319.03L220.97,317.30L224.35,313.62L225.32,311.55L225.03,308.66L225.21,308.53L224.65,308.29L220.44,307.27L214.20,302.96L214.29,303.53Z " data-iso="ECU" data-name="Ecuador" data-pop="14573101.0"/><path d="M558.10,196.00L553.33,196.73L548.91,194.93L544.24,197.36L537.70,195.74L531.71,195.18L531.46,194.74L530.52,200.22L531.53,203.63L532.86,228.66L532.89,229.46L534.05,229.46L549.03,229.46L552.36,229.46L568.76,229.46L568.75,229.39L565.00,226.05L565.01,222.49L563.10,220.56L558.84,212.74L557.27,208.25L554.75,205.05L553.51,200.96L556.19,205.84L557.86,207.71L560.68,202.73L560.83,202.57L559.88,200.00L559.42,199.09L558.65,197.11L558.34,196.35L558.21,196.04L558.16,195.94L558.10,196.00Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M569.20,257.21L569.26,257.20L572.35,257.61L573.27,255.08L575.23,256.61L579.04,256.34L582.20,257.61L587.11,263.24L587.39,263.61L587.48,263.51L588.30,263.94L588.59,263.77L589.62,262.75L589.50,262.33L581.66,254.97L578.10,252.64L575.94,245.85L574.90,243.78L571.56,246.99L570.18,247.31L569.06,256.18L569.20,257.21Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M432.78,157.92L437.71,157.89L437.87,165.05L436.30,165.97L436.21,174.91L436.88,174.80L442.14,178.29L444.95,176.56L449.50,176.57L454.85,173.51L457.99,169.02L457.33,165.27L459.58,161.90L466.04,158.54L466.67,156.40L466.59,156.18L464.78,156.48L464.24,156.32L462.78,156.09L462.35,155.92L462.27,155.95L462.01,156.09L461.53,155.76L461.57,155.60L461.34,155.26L456.71,154.78L452.52,152.72L452.42,152.74L441.18,151.88L432.67,152.98L431.80,153.55L432.57,157.97L432.78,157.92Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M520.00,103.00L521.93,102.37L523.78,103.01L527.89,104.15L527.95,104.14L527.94,104.06L528.30,103.24L527.53,100.16L528.62,97.70L528.60,97.75L522.09,97.58L517.29,98.64L520.00,102.87L520.00,103.00Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M569.20,257.21L569.00,258.17L564.73,269.00L563.66,269.29L562.28,274.17L562.28,274.36L562.28,274.51L559.13,279.76L559.35,280.21L566.19,288.48L566.24,288.54L566.23,288.66L568.48,292.07L572.12,292.96L575.02,295.13L579.37,295.81L583.25,292.90L586.27,293.95L586.72,293.95L586.81,293.76L590.51,291.57L596.00,290.66L604.45,280.44L605.18,279.59L604.13,279.59L591.20,274.65L590.34,273.26L589.23,269.00L589.27,268.86L589.03,268.87L586.06,269.02L585.82,268.93L587.11,264.12L587.39,263.61L587.11,263.24L582.20,257.61L579.04,256.34L575.23,256.61L573.27,255.08L572.35,257.61L569.26,257.20L569.20,257.21Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M505.89,67.58L506.55,67.75L512.66,70.33L514.90,74.39L514.36,75.72L515.81,77.51L516.00,77.49L518.56,78.32L518.80,79.58L512.51,85.36L510.65,85.70L511.14,92.58L515.81,96.62L516.85,96.06L527.43,94.28L527.51,94.27L534.33,88.51L534.39,85.69L531.33,84.16L529.46,79.90L529.61,76.83L527.08,74.27L524.91,69.66L525.31,67.66L525.45,67.62L525.26,67.50L525.46,65.66L522.31,64.48L516.25,68.92L511.81,68.68L508.12,66.87L506.00,67.48L505.89,67.58Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M299.63,491.04L298.34,493.29L299.19,494.60L301.58,493.08L299.63,491.04Z " data-iso="FLK" data-name="Falkland Is." data-pop="3140.0"/><path d="M290.64,289.02L289.69,290.25L289.07,299.81L289.03,299.85L289.11,299.89L291.75,299.91L294.32,300.26L298.26,293.65L298.25,293.52L294.92,289.32L290.86,288.83L290.64,289.02Z M484.19,154.85L481.69,156.93L483.72,159.63L484.19,154.85Z M464.12,125.96L462.69,126.22L461.74,128.63L458.05,130.67L457.10,132.07L452.52,130.73L453.63,134.35L444.67,134.70L446.40,137.11L452.12,138.99L453.71,142.35L454.08,148.27L452.98,152.61L452.52,152.72L456.71,154.78L461.34,155.26L461.57,155.60L461.65,155.50L461.96,155.46L462.36,155.56L462.37,155.84L462.35,155.92L462.78,156.09L464.24,156.32L464.78,156.48L466.59,156.18L466.55,156.07L466.10,154.74L469.21,152.38L473.46,153.53L475.98,153.46L477.87,151.70L478.19,151.57L478.29,151.43L478.35,151.47L478.36,151.51L478.51,151.45L478.13,150.17L476.99,149.64L476.76,144.04L476.97,143.84L476.92,143.72L475.70,142.04L474.37,143.06L478.10,138.16L478.43,138.00L478.29,137.95L479.71,133.50L474.86,131.51L474.76,131.53L474.58,131.45L474.15,131.42L474.03,131.53L473.34,131.35L473.25,131.24L473.03,131.23L470.68,129.17L469.37,129.83L464.33,125.86L464.12,125.96Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M498.49,300.21L498.06,300.09L493.21,299.93L492.54,300.18L492.50,300.41L492.51,301.24L492.53,304.58L487.15,304.47L487.10,304.61L487.78,307.99L485.16,310.61L487.40,316.78L491.57,321.81L491.87,322.14L494.35,320.12L493.35,317.42L497.03,315.05L500.72,317.04L501.36,316.56L500.97,309.12L500.40,307.47L501.49,303.43L498.55,300.68L498.57,300.44L498.49,300.21Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M558.61,196.04L558.60,195.79L558.90,194.99L558.67,195.36L558.16,195.94L558.21,196.04L558.34,196.35L558.61,196.04Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M438.65,112.27L436.41,114.22L436.86,115.23L441.16,115.65L441.42,115.75L441.52,111.85L438.75,112.39L438.65,112.27Z M449.60,100.88L443.67,102.35L444.26,102.89L443.03,111.27L444.96,108.95L444.30,112.62L448.55,112.70L449.44,117.61L446.66,119.64L446.30,121.81L443.48,123.17L448.72,124.85L442.50,128.96L447.61,128.81L453.74,126.55L459.39,126.59L461.22,125.66L460.96,123.29L461.95,120.19L456.77,117.00L457.14,115.68L450.35,107.61L452.75,103.86L446.91,103.97L449.60,100.88Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M588.54,158.05L586.27,156.02L574.18,153.39L571.38,152.27L569.57,152.68L570.23,153.06L573.13,154.77L573.99,155.09L575.36,158.76L574.92,159.42L575.85,159.73L580.60,160.82L580.61,160.88L580.75,160.85L582.78,160.51L584.86,160.28L584.92,160.23L585.46,159.76L589.38,160.95L589.66,160.24L588.56,158.22L588.60,158.10L588.54,158.05Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M456.63,268.26L449.10,268.87L448.71,270.62L449.23,274.10L449.26,274.29L449.29,274.47L449.55,279.29L447.57,284.82L448.95,289.13L448.24,289.83L448.03,289.84L447.95,289.98L448.05,290.01L451.38,291.15L460.48,287.41L460.96,286.55L461.21,286.41L459.38,284.08L459.16,274.59L457.53,268.66L457.34,268.45L456.63,268.26Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M422.44,263.79L419.14,263.94L416.48,262.91L415.49,262.87L415.48,263.16L414.24,266.53L412.21,267.41L411.38,269.07L411.35,269.45L413.24,271.55L414.02,271.98L416.65,275.73L416.68,275.83L419.37,272.80L420.96,272.46L424.48,274.63L425.68,277.81L425.92,277.85L426.07,277.84L428.27,278.35L428.71,280.64L431.32,281.06L431.43,281.16L431.60,281.01L433.10,276.77L433.64,275.72L432.93,271.99L433.01,271.85L433.06,271.61L430.51,265.56L423.03,265.27L422.56,263.93L422.65,263.84L422.44,263.79Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M406.96,260.07L407.50,260.48L406.21,261.17L406.22,261.48L409.14,260.54L415.17,260.51L414.26,259.79L406.87,259.60L406.96,260.07Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M415.49,262.87L414.47,262.87L411.00,262.85L409.02,263.72L406.34,264.01L407.17,264.55L408.07,265.58L410.22,267.08L411.23,268.82L411.38,269.07L412.21,267.41L414.24,266.53L415.48,263.16L415.49,262.87Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M492.50,300.41L491.79,300.41L488.34,300.41L488.00,300.25L487.79,299.93L487.72,300.77L487.12,302.65L486.85,303.03L487.17,304.39L487.15,304.47L492.53,304.58L492.51,301.24L492.50,300.41Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M531.90,158.72L531.55,158.62L531.49,159.89L529.40,160.32L522.71,160.11L522.40,160.07L522.24,160.07L519.29,161.44L517.39,161.78L517.01,161.80L517.00,162.07L516.33,164.41L515.39,165.00L514.56,165.86L514.86,166.11L519.12,170.82L518.47,172.58L522.49,177.10L523.83,175.50L524.15,172.12L525.72,172.39L522.19,168.79L523.13,168.58L521.83,163.06L523.94,164.51L526.63,163.97L524.97,162.16L531.35,162.09L531.44,162.24L532.24,161.28L532.09,160.42L532.16,158.79L531.90,158.72Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M334.97,64.84L331.60,63.72L332.21,66.91L334.97,64.84Z M398.22,28.32L382.74,28.46L366.78,29.83L374.42,30.02L367.46,31.19L365.37,32.18L355.11,30.70L352.60,31.60L350.92,31.04L339.51,32.57L332.67,32.49L331.60,33.70L319.49,35.30L323.12,36.44L319.44,38.46L311.45,39.55L302.11,41.29L308.25,43.24L314.97,42.98L314.31,43.56L303.68,44.31L309.21,45.56L308.53,47.08L318.17,46.66L319.58,46.29L329.40,48.64L328.49,49.07L332.50,51.41L332.14,55.85L333.65,55.90L330.70,60.42L332.98,60.54L335.54,59.04L339.43,61.33L337.80,63.16L331.70,62.70L340.39,65.20L338.01,67.05L332.74,68.87L331.83,74.26L328.63,76.42L334.70,74.26L329.66,76.98L334.01,79.40L334.63,80.99L333.09,88.23L336.38,93.40L342.24,92.46L342.54,94.26L346.50,96.04L348.61,95.82L351.97,90.57L352.38,87.63L357.33,84.65L359.55,81.66L357.96,80.44L360.38,78.39L364.22,78.07L367.36,75.82L367.54,77.56L373.30,76.04L381.44,70.76L381.57,69.84L385.24,70.24L389.50,69.63L397.58,67.62L400.88,65.92L405.83,64.29L394.87,64.07L390.37,63.29L392.18,61.70L398.62,60.89L401.52,61.25L403.58,63.32L407.70,62.90L407.77,61.07L400.31,57.57L397.20,56.63L400.49,56.02L404.81,57.77L407.42,57.55L407.76,56.04L403.81,54.65L403.43,53.59L407.60,55.02L411.48,54.37L411.96,53.35L408.05,52.32L414.16,52.14L410.82,49.87L414.69,49.42L413.66,46.65L415.26,44.89L410.91,42.37L413.01,40.34L417.55,38.63L415.76,36.42L422.43,36.12L427.78,34.17L433.36,32.77L425.89,32.17L421.28,33.12L416.65,32.80L410.48,34.36L414.43,32.49L413.80,31.61L409.38,32.38L406.49,31.78L397.64,31.41L409.31,31.12L412.37,30.00L405.37,29.32L393.68,29.35L405.39,29.05L398.22,28.32Z " data-iso="GRL" data-name="Greenland" data-pop="57600.0"/><path d="M185.81,244.46L180.80,245.16L180.14,247.47L181.54,250.71L177.84,250.71L175.69,256.17L176.84,257.31L178.79,258.39L180.44,258.38L180.82,258.48L181.94,259.07L182.14,258.47L184.36,256.60L184.42,256.64L184.51,256.48L185.13,255.73L188.39,251.94L187.37,251.14L187.50,251.50L187.26,251.81L186.59,251.43L186.43,251.36L185.76,251.32L185.40,251.36L186.31,245.33L186.45,244.46L185.81,244.46Z " data-iso="GTM" data-name="Guatemala" data-pop="13276517.0"/><path d="M281.26,288.28L280.90,285.76L278.98,283.92L277.01,284.93L277.48,283.02L276.55,280.53L273.06,277.68L272.95,277.62L273.42,278.69L270.65,281.24L271.82,282.83L270.56,283.98L269.69,288.74L270.32,289.58L270.60,289.51L273.89,294.11L272.94,295.34L273.65,302.02L276.98,303.57L280.39,301.34L283.13,301.27L283.26,301.22L283.14,301.10L280.79,296.10L279.87,296.12L279.00,290.94L281.29,288.34L281.26,288.28Z " data-iso="GUY" data-name="Guyana" data-pop="772298.0"/><path d="M801.79,227.50L801.34,227.42L801.27,227.47L801.06,227.61L801.05,227.71L800.76,227.91L801.80,227.52L801.79,227.50Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M188.39,251.94L185.13,255.73L184.51,256.48L184.42,256.64L184.50,256.65L187.97,258.17L189.00,258.52L188.80,260.28L188.93,260.36L189.44,260.33L189.78,260.44L190.17,261.40L190.12,261.78L192.15,260.58L192.23,258.97L202.43,254.63L203.59,254.57L203.40,254.40L195.96,250.96L192.44,251.82L188.68,252.04L188.39,251.94Z " data-iso="HND" data-name="Honduras" data-pop="7792854.0"/><path d="M509.68,156.17L509.56,156.00L509.44,155.85L509.42,155.72L509.17,155.63L507.35,154.69L505.89,154.07L509.14,155.84L509.68,156.17Z M503.10,141.83L502.85,141.74L500.74,142.87L500.80,144.16L495.19,145.28L495.03,145.40L503.46,152.24L504.92,152.77L506.80,154.30L501.35,147.92L502.45,146.84L510.24,147.57L510.42,147.56L510.38,147.43L511.05,146.12L510.27,145.69L509.85,143.90L509.85,143.82L509.84,143.82L507.29,144.39L506.85,144.32L503.26,141.88L503.10,141.83Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M239.42,243.66L238.98,241.61L240.05,237.64L239.87,237.71L235.03,237.62L237.14,238.63L237.65,241.80L231.35,242.19L233.20,243.36L239.19,243.37L239.42,243.66Z " data-iso="HTI" data-name="Haiti" data-pop="9035536.0"/><path d="M517.90,135.21L513.84,134.67L508.83,137.32L504.53,136.54L504.45,136.56L504.31,136.71L503.29,138.20L502.66,138.79L502.26,140.17L501.85,140.55L502.37,140.57L502.55,141.05L503.07,141.75L503.10,141.83L503.26,141.88L506.85,144.32L507.29,144.39L509.84,143.82L509.85,143.82L509.91,143.82L510.50,143.62L511.33,143.27L513.40,143.14L513.50,143.20L513.60,143.11L515.66,142.73L517.90,138.31L520.09,136.85L520.15,136.77L520.09,136.72L519.08,135.87L518.60,135.69L518.21,135.14L517.95,135.17L517.90,135.21Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M826.42,341.63L823.39,341.87L826.55,344.59L828.61,344.26L826.42,341.63Z M841.55,340.18L840.96,340.52L840.75,340.71L840.52,340.85L840.11,340.98L839.97,341.42L839.53,341.82L838.80,341.52L838.61,341.63L837.56,344.15L839.72,344.40L841.68,342.32L841.92,342.13L842.12,340.97L842.30,340.73L841.66,340.09L841.55,340.18Z M835.18,338.91L835.95,337.90L830.86,338.69L828.60,337.58L826.00,339.21L835.18,338.91Z M788.37,329.60L784.39,329.27L782.40,332.37L795.61,336.11L797.85,337.26L805.96,337.75L809.92,339.47L808.64,335.41L805.38,335.50L804.10,332.89L797.89,332.78L792.02,332.18L788.37,329.60Z M857.84,318.38L855.70,318.29L852.01,319.66L858.07,320.03L860.96,321.93L861.13,320.77L857.84,318.38Z M784.78,314.11L783.37,313.60L781.95,315.45L783.95,315.94L784.56,318.24L785.72,316.95L784.78,314.11Z M890.95,340.72L891.51,332.58L891.44,331.76L892.48,317.47L891.79,317.46L882.80,313.45L878.37,316.27L875.11,320.20L871.49,315.99L871.30,311.73L866.14,309.42L862.74,311.13L865.78,316.16L870.04,317.52L865.79,317.74L867.21,322.25L869.87,320.58L870.62,321.63L883.04,327.67L884.35,332.92L885.66,335.25L884.78,337.41L888.43,336.80L890.81,340.60L890.95,340.72Z M842.96,304.60L842.85,302.53L837.99,304.84L831.20,303.41L828.06,305.68L827.22,310.88L826.36,311.39L824.36,320.59L826.45,322.56L826.36,323.95L830.82,317.69L830.50,320.85L833.40,325.46L836.42,323.83L834.62,320.92L833.58,314.20L838.36,311.59L836.80,310.85L831.40,312.93L828.62,311.25L829.67,306.27L841.55,306.47L842.96,304.60Z M851.74,305.12L851.20,306.40L855.36,307.38L853.23,303.15L851.74,305.12Z M820.28,293.44L820.64,293.86L821.20,293.68L821.18,293.55L821.07,293.21L820.64,293.28L820.34,293.27L820.28,293.44Z M795.05,301.29L793.70,306.25L796.95,312.70L797.61,317.75L799.75,319.12L802.13,318.47L810.55,320.58L811.03,322.83L816.18,319.31L817.20,316.36L816.52,314.27L820.32,310.13L820.34,306.94L823.66,303.44L819.93,295.07L820.09,293.29L820.11,293.26L814.27,293.18L811.78,301.39L808.37,303.65L804.63,302.59L798.91,305.02L797.13,303.74L795.82,300.91L795.05,301.29Z M754.97,289.48L751.17,288.18L751.00,289.29L759.29,300.00L762.42,302.82L767.11,311.10L768.75,315.06L773.26,322.32L777.61,326.29L783.63,328.42L784.02,324.41L782.40,316.57L781.14,316.79L778.69,311.80L776.77,310.21L777.50,307.12L775.63,306.40L771.64,302.36L765.75,297.48L757.92,289.46L754.97,289.48Z " data-iso="IDN" data-name="Indonesia" data-pop="240271522.0"/><path d="M696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.42,208.23L720.71,207.55L721.44,207.86L722.00,210.17L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.27,208.75L732.81,207.55L734.17,205.62L741.74,202.68L743.77,206.42L746.47,207.03L746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.11,229.67L723.54,230.75L723.48,228.95L719.95,232.19L718.71,236.44L716.41,237.00L711.79,243.55L708.26,247.04L707.84,249.23L705.64,249.66L702.75,251.71L703.45,260.41L702.73,271.28L701.36,271.34L700.44,274.82L694.31,278.13L692.13,274.39L689.15,266.35L687.15,263.26L684.94,256.67L681.59,250.77L677.69,237.23L676.30,228.87L675.69,231.13L673.40,233.50L671.41,233.97L666.25,229.48L665.87,227.95L668.95,227.39L669.65,225.53L667.54,226.66L662.43,223.24L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.08,186.00L689.65,191.47L687.25,191.54L689.17,195.53L696.63,199.84L696.76,200.10Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M438.78,112.12L435.89,112.09L435.92,114.24L431.49,117.20L432.16,118.42L429.89,123.45L432.64,124.48L440.32,121.58L441.51,119.04L441.27,115.77L441.16,115.65L436.86,115.23L436.41,114.22L438.65,112.27L438.78,112.12Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M585.33,166.08L585.23,166.07L583.27,166.99L586.52,174.99L586.52,175.04L586.53,175.07L588.96,179.13L591.25,179.78L591.50,182.27L590.16,186.58L598.05,194.24L597.97,197.09L600.99,200.83L601.12,200.78L605.38,199.98L610.68,208.21L617.70,212.47L621.33,213.07L623.39,211.56L628.38,214.50L641.77,217.97L641.93,217.94L642.14,214.48L644.83,212.76L645.65,210.57L643.99,207.88L641.18,205.92L638.05,201.90L637.37,201.20L637.43,201.11L638.00,200.23L638.92,195.72L636.20,194.72L633.83,185.97L634.87,185.17L635.20,180.74L635.10,180.50L635.00,180.36L633.99,176.83L631.75,176.85L628.32,173.96L622.10,171.65L619.14,171.29L612.76,174.32L612.97,174.90L608.22,176.91L602.57,175.02L597.64,170.57L597.61,170.41L595.48,166.97L594.38,165.96L590.71,168.74L590.53,168.73L590.03,168.71L589.63,168.87L589.47,168.83L588.90,168.73L587.58,168.38L585.40,166.15L585.33,166.08Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M586.41,174.96L583.81,174.75L580.58,174.26L579.88,175.09L579.61,175.16L579.61,175.21L577.17,177.29L577.15,181.69L571.61,188.06L570.84,188.57L571.14,189.36L572.02,191.73L572.80,192.62L572.41,193.05L573.08,193.17L580.57,196.30L583.97,198.91L594.88,204.06L595.39,203.94L595.80,203.35L596.84,200.69L597.88,200.34L599.30,200.75L599.30,200.65L600.42,200.85L600.72,200.91L600.99,200.83L597.97,197.09L598.05,194.24L590.16,186.58L591.50,182.27L591.25,179.78L588.96,179.13L586.53,175.07L586.52,175.04L586.41,174.96Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M420.20,76.19L418.00,75.41L413.91,77.43L408.55,76.80L407.68,77.98L405.28,77.76L403.75,75.57L399.55,78.10L404.71,78.63L404.41,79.88L400.77,80.58L404.03,81.55L401.92,83.59L405.73,83.35L407.91,84.58L411.65,85.06L421.85,81.86L424.54,79.92L422.07,76.75L420.20,76.19Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M562.37,190.69L562.46,189.59L562.55,189.42L562.30,188.57L562.33,188.35L562.26,188.41L561.35,189.48L561.12,189.63L560.24,189.61L560.18,190.02L559.65,192.79L559.38,193.87L558.91,194.97L558.90,194.99L558.60,195.79L558.61,196.04L558.34,196.35L558.65,197.11L559.42,199.09L559.88,200.00L560.83,202.57L561.01,202.29L561.28,199.99L561.29,198.81L561.76,195.93L561.79,195.37L561.67,195.36L560.51,194.67L561.58,192.06L561.77,192.08L561.75,191.27L561.85,191.05L562.19,190.88L562.35,190.86L562.37,190.69Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M502.23,171.18L493.41,172.19L493.56,173.15L500.85,176.65L502.23,171.18Z M484.86,161.69L483.83,160.55L480.93,161.60L481.60,167.66L485.00,167.13L484.86,161.69Z M486.32,140.55L486.21,141.00L483.60,142.07L482.52,144.12L480.85,142.17L477.07,143.92L476.97,143.84L476.76,144.04L476.99,149.64L478.13,150.17L478.51,151.45L479.18,151.32L481.99,149.13L486.20,151.15L487.08,154.28L494.60,160.40L502.23,164.86L503.91,168.61L502.71,172.19L503.66,172.18L506.40,167.04L504.98,164.34L505.92,163.00L509.81,165.47L508.52,162.49L502.51,159.44L503.26,158.37L497.47,155.91L491.86,149.11L491.59,145.53L495.74,144.89L495.57,145.03L495.17,143.65L494.54,142.46L495.29,141.96L495.33,141.75L494.75,141.63L490.99,140.30L491.01,139.79L486.40,140.58L486.32,140.55Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M222.90,242.16L220.36,242.20L220.60,243.63L225.87,244.11L222.90,242.16Z " data-iso="JAM" data-name="Jamaica" data-pop="2825928.0"/><path d="M572.80,192.62L572.02,191.73L571.14,189.36L570.84,188.57L570.14,189.06L565.52,192.36L564.51,192.20L562.67,190.93L562.35,190.86L562.19,190.88L561.85,191.05L561.75,191.27L561.77,192.08L561.89,192.64L561.86,193.55L562.01,194.34L561.81,195.07L561.79,195.37L561.76,195.93L561.29,198.81L561.28,199.99L561.01,202.29L561.06,202.54L561.01,203.02L564.95,203.01L569.58,198.89L566.70,195.82L572.02,193.47L572.41,193.05L572.80,192.62Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M840.52,187.74L837.01,188.75L840.26,191.27L840.34,195.63L842.45,196.53L843.87,194.68L842.19,187.92L840.52,187.74Z M848.90,185.39L845.15,186.00L844.00,188.41L849.72,188.66L848.90,185.39Z M857.15,159.94L855.79,165.26L856.35,165.35L857.33,171.94L853.83,176.37L851.66,180.27L843.55,180.72L839.70,184.90L839.27,186.40L843.04,186.89L842.77,185.50L851.47,184.10L853.88,188.16L855.00,182.51L859.57,184.17L859.97,182.41L863.07,182.19L864.15,183.08L865.15,179.69L864.42,178.92L862.02,171.44L862.47,166.22L857.15,159.94Z M859.17,150.21L851.09,145.30L850.57,145.68L853.87,152.81L851.04,155.65L854.00,159.76L852.78,156.52L856.65,155.65L861.70,157.58L862.48,154.26L864.46,154.16L864.53,152.52L859.17,150.21Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M682.93,181.00L682.13,181.02L681.66,180.90L680.36,180.52L680.00,180.35L680.21,180.67L680.52,181.16L681.08,182.02L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L682.93,181.00Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M593.35,142.23L598.56,139.73L603.14,140.23L604.35,142.91L603.82,145.08L605.19,145.93L600.22,145.84L597.77,149.37L601.46,153.55L605.24,154.85L605.65,158.12L605.80,158.49L610.28,156.63L614.62,160.30L615.85,160.11L615.97,160.12L615.80,159.30L613.16,147.11L627.87,149.39L631.19,152.42L638.01,152.21L639.16,151.63L643.23,154.61L643.77,157.69L645.16,157.73L646.47,160.63L651.40,162.49L652.97,159.96L657.27,156.97L657.47,156.83L657.28,156.67L657.88,155.11L664.08,155.22L664.08,154.15L679.79,155.00L683.12,156.63L683.63,157.04L683.68,156.97L683.92,153.19L680.10,147.07L684.24,145.87L686.69,146.66L685.68,144.73L685.83,140.19L692.84,139.18L691.51,135.87L694.67,132.74L694.95,132.81L694.79,132.59L692.24,130.41L691.28,131.37L688.43,130.80L680.84,126.55L673.03,126.86L663.64,118.27L659.34,115.98L659.59,114.46L654.29,117.69L651.98,117.75L651.12,116.08L644.77,115.24L643.58,112.75L639.86,111.55L636.03,112.04L635.03,113.01L625.66,115.15L619.01,115.89L619.55,118.20L622.05,118.98L619.62,119.44L621.06,124.50L622.70,126.67L616.94,127.40L614.35,125.97L610.73,125.97L607.61,127.63L597.30,123.76L594.52,123.97L588.72,127.74L589.07,130.07L585.70,128.25L584.64,134.58L586.82,137.31L589.53,137.60L593.46,142.40L593.35,142.23Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M566.24,288.54L565.68,289.19L563.55,291.65L562.93,292.37L562.32,293.08L562.81,294.27L565.18,299.52L565.44,302.29L562.30,307.53L562.17,311.12L562.18,311.73L562.41,311.73L573.74,320.71L578.47,324.91L578.49,324.81L581.55,318.93L582.95,317.22L585.26,314.82L585.71,314.21L584.01,311.26L583.97,298.00L586.34,294.58L586.72,293.95L586.27,293.95L583.25,292.90L579.37,295.81L575.02,295.13L572.12,292.96L568.48,292.07L566.23,288.66L566.24,288.54Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M683.12,156.63L679.79,155.00L664.08,154.15L664.08,155.22L657.88,155.11L657.28,156.67L657.47,156.83L657.54,156.76L657.37,157.98L659.49,160.72L664.98,161.88L659.42,163.92L659.35,163.98L659.37,164.04L654.89,164.94L655.24,166.52L661.48,166.32L663.89,167.66L667.50,166.76L667.67,166.79L667.90,166.75L670.22,163.07L674.48,163.57L676.57,161.21L683.75,157.25L683.63,157.04L683.12,156.63Z M660.36,165.21L659.82,164.91L659.49,164.51L660.36,165.21Z M658.98,165.45L658.46,165.44L658.34,165.32L658.98,165.45Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.02,256.92L774.02,256.63L770.64,259.77L773.20,266.33L773.19,266.21L774.14,269.17L775.63,268.65L775.83,270.62L777.67,270.50L778.21,270.97L782.48,266.42L786.67,264.35L786.11,255.80L786.04,255.60Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M821.46,172.85L821.85,175.70L824.59,179.97L824.32,181.95L826.42,184.48L832.65,182.07L831.56,177.75L826.57,171.34L825.18,169.74L821.85,171.11L821.46,172.75L821.46,172.85Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M518.24,156.71L516.65,153.84L515.40,153.46L515.06,154.67L514.72,154.77L514.36,154.88L513.92,155.01L513.86,155.11L514.02,155.73L514.01,155.77L514.12,155.85L514.87,156.61L515.40,157.10L515.64,158.00L515.60,158.16L515.64,158.19L516.15,157.46L518.31,156.83L518.31,156.83L518.24,156.71Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M599.30,200.75L597.88,200.34L596.84,200.69L595.80,203.35L595.39,203.94L595.97,204.02L598.70,205.63L599.00,205.97L601.28,205.93L601.09,205.61L599.43,202.07L599.96,202.23L599.30,200.89L599.30,200.75Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L770.83,243.29L770.82,243.31L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.56,228.43Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M562.45,188.23L563.62,186.83L563.11,183.88L562.20,184.05L562.23,184.35L561.39,185.42L561.36,186.20L560.34,189.33L560.24,189.61L561.12,189.63L561.35,189.48L562.26,188.41L562.33,188.35L562.45,188.23Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M431.32,281.06L428.71,280.64L428.27,278.35L426.07,277.84L425.92,277.85L425.91,277.96L425.82,278.47L422.11,283.49L422.77,284.27L424.32,285.62L429.40,290.11L433.93,292.56L434.28,292.62L433.25,285.89L432.02,285.59L431.49,281.20L431.43,281.16L431.32,281.06Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M531.34,194.53L522.48,190.20L516.57,192.71L515.70,198.93L514.00,199.73L508.63,196.80L504.99,196.14L502.61,192.93L498.06,190.65L491.64,189.48L491.19,189.25L491.28,192.01L487.29,195.43L487.66,197.87L486.00,199.68L485.65,199.87L485.37,200.05L485.77,214.83L489.59,220.28L493.22,223.36L493.52,224.00L495.10,224.41L498.46,225.43L499.28,226.21L502.63,225.87L502.63,225.87L503.72,225.28L505.60,224.26L512.50,228.24L528.76,237.58L530.24,238.43L530.22,237.98L530.92,236.64L533.20,236.62L532.97,231.25L532.89,229.46L532.86,228.66L531.53,203.63L530.52,200.22L531.46,194.74L531.34,194.53Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M483.93,139.81L483.86,139.52L483.81,139.43L483.75,139.18L483.72,139.13L483.61,139.47L483.61,139.73L483.64,139.86L483.68,139.85L483.89,139.87L483.93,139.81Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M703.29,273.11L702.93,279.41L704.86,286.69L709.23,284.90L709.61,282.13L706.66,276.25L703.29,273.11Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M542.42,415.98L544.35,412.34L542.01,410.64L538.50,413.66L537.90,415.40L540.16,417.92L542.42,415.98Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M512.19,111.62L512.35,111.64L512.51,111.40L512.65,110.94L512.45,111.23L512.19,111.62Z M512.32,109.15L512.42,109.85L512.96,111.42L513.08,111.67L513.08,111.69L517.42,113.12L517.19,113.82L517.32,114.58L517.45,114.75L517.58,114.62L519.34,115.47L519.48,116.09L519.51,116.16L519.71,116.23L524.81,114.90L525.16,113.14L527.26,111.89L526.91,110.49L526.90,110.34L526.76,110.32L524.27,108.87L514.85,107.86L512.28,108.99L512.32,109.15Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M474.06,129.21L473.41,129.35L473.05,130.30L473.32,131.18L473.25,131.24L473.34,131.35L474.03,131.53L474.15,131.42L474.58,131.45L474.76,131.53L474.77,131.33L474.07,129.52L474.06,129.31L474.08,129.22L474.06,129.21Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M527.89,104.15L523.78,103.01L521.93,102.37L520.00,103.00L519.98,103.29L518.66,105.99L513.46,103.99L512.13,108.36L512.28,108.99L514.85,107.86L524.27,108.87L526.76,110.32L526.90,110.34L526.96,110.30L528.02,109.79L528.70,109.88L530.63,108.74L530.71,108.75L530.75,108.59L529.15,105.96L529.33,105.33L528.25,104.15L527.95,104.14L527.89,104.15Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M799.69,228.74L799.73,228.72L799.86,228.65L799.86,228.65L799.78,228.56L799.69,228.58L799.67,228.67L799.67,228.74L799.69,228.74Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M266.06,243.42L266.02,243.39L265.90,243.38L265.74,243.47L265.71,243.55L266.05,243.55L266.06,243.42Z " data-iso="MAF" data-name="St. Martin" data-pop="29820.0"/><path d="M406.20,231.53L413.36,230.60L415.97,223.16L420.08,219.50L422.55,214.70L425.00,211.44L428.28,212.02L431.47,210.94L431.32,209.12L431.72,209.12L431.74,208.24L431.81,205.40L438.33,201.38L441.91,200.48L445.81,197.41L447.44,194.56L453.81,193.18L451.10,182.35L450.51,182.28L444.98,182.14L441.56,179.63L440.39,179.90L437.86,185.84L433.29,188.56L429.12,194.54L429.00,200.30L425.91,204.51L421.94,207.42L419.06,208.19L417.32,211.94L414.33,214.49L412.00,220.54L409.79,222.82L406.47,229.81L406.20,231.53Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M478.36,151.51L478.35,151.47L478.29,151.43L478.19,151.57L478.36,151.51Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M535.93,145.39L539.94,140.84L537.24,136.71L533.47,135.13L530.30,135.56L530.26,135.68L530.52,135.66L534.78,140.15L535.07,140.80L535.63,145.29L535.80,145.51L535.93,145.39Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M609.34,352.57L608.38,351.31L606.35,356.12L604.35,356.80L603.81,360.49L592.91,366.81L591.36,370.33L591.34,373.54L592.31,377.63L591.82,380.20L588.19,390.04L588.97,392.35L588.61,395.33L589.45,397.62L593.67,399.66L600.61,392.72L607.50,373.71L609.36,363.37L611.21,361.53L610.98,358.32L609.34,352.57Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M114.30,192.26L115.52,197.80L115.30,199.20L117.88,203.95L117.94,208.21L115.54,208.45L118.78,212.48L122.32,215.39L121.72,219.24L125.87,223.68L126.65,226.27L128.60,224.13L125.55,221.04L125.89,219.15L125.02,214.62L121.91,205.01L119.42,198.87L120.05,193.86L124.81,196.45L124.21,197.84L128.76,208.62L129.08,210.90L131.54,213.80L130.64,214.96L136.03,222.21L139.55,232.61L137.77,235.24L143.31,242.63L147.51,243.90L150.61,246.66L157.26,249.87L164.02,252.06L168.47,249.46L171.18,250.77L175.61,256.09L175.69,256.17L177.84,250.71L181.54,250.71L180.14,247.47L180.80,245.16L185.81,244.46L186.45,244.46L186.49,244.15L188.69,242.20L189.39,242.10L189.47,241.95L190.55,242.82L195.36,232.50L193.40,231.34L184.46,233.00L182.41,238.95L179.34,242.20L178.59,241.51L170.26,243.17L165.58,238.98L163.35,232.66L162.80,227.20L164.56,220.86L167.06,215.96L167.27,215.21L162.02,213.64L157.81,201.62L154.17,201.58L151.58,204.28L148.15,198.59L144.81,194.33L139.54,194.70L139.18,195.91L130.86,195.93L122.24,192.20L121.23,190.97L114.32,191.58L114.30,192.26Z " data-iso="MEX" data-name="Mexico" data-pop="111211789.0"/><path d="M520.42,156.57L518.80,156.76L518.47,156.85L518.31,156.83L518.31,156.83L516.15,157.46L515.64,158.19L515.60,158.16L515.57,158.20L515.37,159.41L516.98,161.72L517.01,161.80L517.39,161.78L519.29,161.44L522.24,160.07L522.40,160.07L522.43,160.00L522.42,159.11L522.54,158.72L520.97,157.12L520.49,156.60L520.42,156.57Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M469.41,239.91L467.25,237.38L444.01,219.37L443.10,218.69L442.05,218.69L437.87,219.51L440.73,252.77L429.54,252.77L428.79,252.32L423.94,253.75L421.92,252.71L420.57,255.46L420.03,255.23L420.31,255.81L422.67,261.91L422.67,263.57L422.65,263.84L422.56,263.93L423.03,265.27L430.51,265.56L433.06,271.61L433.01,271.85L433.10,271.85L438.33,269.85L438.39,271.50L440.49,270.86L440.59,270.91L440.64,270.71L441.33,265.90L444.00,263.52L444.84,260.61L447.44,260.70L447.61,259.35L455.23,254.38L457.57,254.60L458.21,254.86L458.25,254.68L461.52,253.57L468.29,252.82L470.11,249.68L470.38,240.33L470.37,239.70L469.41,239.91Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.83,229.66L737.27,232.07L736.71,233.78L736.92,234.05L739.19,235.27L745.27,245.34L744.79,250.51L746.11,249.13L746.25,251.31L753.39,247.16L755.96,253.00L756.32,255.05L760.51,268.00L760.56,271.80L760.70,271.75L763.00,266.07L760.36,258.32L757.33,253.82L758.38,253.10L758.35,249.87L753.29,242.03L754.12,239.26L760.18,235.26L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L762.90,230.95L759.14,230.31L754.35,223.21L750.77,222.67L750.05,220.50L752.09,212.98L751.06,209.42L748.80,207.22L748.67,207.12L748.15,206.60L747.79,206.60L746.65,206.97L746.58,207.10Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M511.22,152.27L509.83,154.06L509.34,154.27L509.47,155.71L509.42,155.72L509.44,155.85L509.56,156.00L509.68,156.17L509.79,156.19L510.02,156.37L510.79,156.82L511.69,157.89L512.15,158.18L512.83,155.48L513.08,155.56L513.96,155.76L514.01,155.77L514.02,155.73L513.86,155.11L513.92,155.01L514.36,154.88L514.72,154.77L514.72,154.68L513.06,153.77L512.74,153.58L511.30,152.32L511.30,152.27L511.22,152.27Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M773.17,130.07L765.64,128.93L761.66,131.63L757.25,132.35L752.43,131.98L745.18,128.50L738.98,129.05L733.18,127.62L731.61,125.11L721.73,122.41L720.44,126.02L722.71,129.37L721.71,129.87L713.36,129.56L708.08,127.38L701.05,129.28L698.99,131.46L696.19,132.54L696.18,132.54L696.27,132.70L697.47,134.65L707.08,140.06L709.06,143.21L708.90,145.25L713.74,146.97L719.90,148.35L722.78,149.71L730.76,154.91L737.42,155.69L754.98,158.52L758.36,156.68L765.65,156.09L767.87,154.96L770.13,150.86L770.70,147.39L773.73,147.99L775.31,145.81L778.38,145.48L781.31,141.52L784.88,140.91L787.86,141.22L779.73,136.62L775.15,137.67L773.41,130.73L773.41,130.25L773.17,130.07Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M555.60,404.22L554.92,401.25L558.88,397.88L562.97,395.99L564.33,391.11L562.79,379.43L568.51,374.36L571.65,370.97L575.93,369.07L578.97,366.90L581.86,361.51L581.37,354.54L581.94,345.90L581.79,345.53L575.62,348.92L571.68,349.90L565.45,349.50L564.77,349.51L564.36,349.50L562.86,351.78L565.35,357.81L566.70,365.19L565.00,368.23L562.46,366.22L562.01,364.73L562.48,359.64L559.95,359.73L559.20,358.33L559.08,358.23L558.41,358.48L553.92,360.24L551.99,360.88L550.26,363.57L550.29,364.06L550.27,364.63L556.98,367.45L557.89,369.82L557.05,380.46L552.28,387.93L551.84,388.30L551.84,388.49L553.43,396.34L552.97,400.82L553.01,401.08L553.07,401.13L553.28,402.00L553.21,402.24L553.34,403.10L553.28,404.25L553.54,404.23L553.99,404.33L555.26,404.29L555.59,404.28L555.60,404.22Z M563.97,351.42L563.86,351.05L563.97,351.03L563.97,351.42Z M563.74,351.07L563.44,351.09L563.48,350.96L563.74,351.07Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M443.10,218.69L442.43,218.18L439.46,216.02L438.90,215.62L432.25,210.85L431.69,210.45L431.68,211.05L431.61,215.09L423.76,215.09L421.62,216.01L421.40,224.18L406.31,231.86L406.00,233.73L406.18,232.89L407.86,234.28L408.81,244.20L407.15,249.94L407.11,251.54L408.07,249.06L413.27,248.62L416.66,250.75L419.97,255.20L420.03,255.23L420.57,255.46L421.92,252.71L423.94,253.75L428.79,252.32L429.54,252.77L440.73,252.77L437.87,219.51L442.05,218.69L443.10,218.69Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M563.97,351.42L563.97,351.03L563.86,351.05L563.97,351.42Z M563.74,351.07L563.48,350.96L563.44,351.09L563.74,351.07Z M558.73,341.75L558.74,341.85L560.27,346.67L559.74,346.92L559.39,353.01L557.79,356.57L558.93,357.97L559.08,358.23L559.20,358.33L559.95,359.73L562.48,359.64L562.01,364.73L562.46,366.22L565.00,368.23L566.70,365.19L565.35,357.81L562.86,351.78L564.36,349.50L564.77,349.51L564.75,349.39L563.02,343.00L562.03,342.07L558.78,341.72L558.73,341.75Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M820.68,292.97L820.51,292.93L820.37,292.98L820.39,293.14L820.34,293.27L820.64,293.28L821.07,293.21L820.68,292.97Z M766.08,285.57L768.15,293.99L772.72,300.13L776.49,302.63L779.26,303.20L776.97,298.25L776.59,292.47L775.63,289.36L772.62,286.00L772.08,285.86L768.72,287.55L768.94,286.14L765.94,285.15L766.08,285.57Z M813.15,292.51L812.47,292.48L812.15,290.66L811.63,292.61L810.87,293.70L809.23,291.75L809.20,291.75L806.54,296.22L802.23,297.96L800.77,303.17L796.03,301.41L795.82,300.91L797.13,303.74L798.91,305.02L804.63,302.59L808.37,303.65L811.78,301.39L814.27,293.18L820.11,293.26L820.20,293.16L823.22,292.23L825.10,288.99L817.31,283.33L813.22,290.54L813.15,292.51Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M527.70,371.43L522.50,372.51L514.79,371.67L513.52,370.35L500.20,370.39L497.44,368.81L493.29,369.82L493.21,370.60L493.34,372.51L499.72,386.02L500.73,387.54L501.41,396.01L503.22,406.22L506.02,410.35L506.34,410.64L508.23,408.53L509.30,410.93L514.34,411.80L516.85,410.04L517.37,398.34L517.43,396.83L517.43,396.74L517.74,388.76L520.80,386.86L521.11,378.76L522.05,373.61L528.13,372.51L530.88,372.78L534.22,371.75L534.35,371.77L533.86,371.20L532.79,370.78L529.32,371.07L528.66,371.22L527.70,371.43Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M954.59,380.56L954.78,382.66L956.45,385.15L960.81,388.02L954.59,380.56Z " data-iso="NCL" data-name="New Caledonia" data-pop="227436.0"/><path d="M502.63,225.87L499.28,226.21L498.46,225.43L495.10,224.41L493.52,224.00L491.99,225.09L480.17,233.49L478.70,234.94L471.03,239.55L470.37,239.70L470.38,240.33L470.11,249.68L468.29,252.82L461.52,253.57L458.25,254.68L458.21,254.86L458.17,255.03L460.91,261.70L462.34,263.01L464.73,265.48L464.87,265.65L464.94,265.29L465.12,264.34L468.38,266.04L468.57,266.37L468.75,266.24L470.24,260.07L474.35,258.58L477.83,260.40L481.39,260.50L484.35,262.03L487.00,262.38L489.61,260.52L495.85,261.01L498.63,259.19L499.17,259.18L498.84,257.65L501.38,251.86L504.67,247.71L505.21,236.97L503.02,227.94L502.63,225.87L502.63,225.87Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M468.57,266.37L468.45,266.60L469.17,270.88L467.11,275.34L466.08,275.84L465.89,285.41L466.09,285.39L470.26,285.26L474.78,291.56L476.90,292.54L483.89,291.17L483.93,291.17L485.27,287.02L489.25,283.60L491.68,284.92L494.53,281.05L495.70,277.46L498.18,273.70L499.60,269.31L502.20,266.25L500.93,263.09L500.61,261.42L500.20,260.78L499.67,259.95L499.17,259.18L498.63,259.19L495.85,261.01L489.61,260.52L487.00,262.38L484.35,262.03L481.39,260.50L477.83,260.40L474.35,258.58L470.24,260.07L468.75,266.24L468.57,266.37Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M190.10,261.88L191.38,264.40L192.39,266.22L194.43,268.54L194.43,268.64L197.83,268.70L199.94,269.81L200.84,269.16L200.62,269.10L201.81,261.91L202.47,258.14L203.49,254.70L203.59,254.57L202.43,254.63L192.23,258.97L192.15,260.58L190.12,261.78L190.10,261.88Z " data-iso="NIC" data-name="Nicaragua" data-pop="5891199.0"/><path d="M468.58,124.95L468.30,124.83L467.96,124.97L466.73,124.84L466.53,124.89L468.39,125.34L468.58,124.95Z M472.87,126.97L473.02,127.02L473.15,127.04L473.68,127.05L473.82,126.52L474.15,124.51L473.46,123.58L476.62,118.39L476.25,118.33L470.99,119.48L467.80,124.79L468.65,124.81L469.97,124.74L472.87,126.97L472.87,126.97Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M486.54,99.17L489.08,95.67L489.77,91.63L487.86,90.45L487.10,85.42L491.37,81.56L492.53,76.50L496.72,73.33L497.30,71.05L505.58,67.59L505.89,67.58L506.00,67.48L508.12,66.87L511.81,68.68L516.25,68.92L522.31,64.48L525.46,65.66L525.26,67.50L525.45,67.62L525.80,67.54L526.27,66.78L529.40,66.09L529.41,65.32L529.05,65.28L524.33,64.23L529.26,63.85L522.91,61.76L519.08,63.44L519.17,62.12L513.86,62.00L511.82,64.72L510.07,63.55L508.68,65.17L504.79,64.83L503.43,66.40L502.26,65.43L496.73,68.82L497.86,69.61L494.16,70.42L492.76,73.21L488.90,75.57L485.84,80.61L481.03,84.11L482.21,85.11L478.68,85.35L473.87,88.24L469.96,89.87L470.89,91.20L476.45,92.20L475.06,92.79L470.32,92.54L471.91,95.62L470.99,97.18L472.54,99.09L471.81,100.53L475.51,102.50L479.36,101.58L484.06,98.37L486.53,99.07L486.54,99.17Z M503.45,40.23L500.85,40.45L503.11,42.83L506.35,43.15L507.01,41.83L503.45,40.23Z M492.63,36.86L491.14,36.60L492.11,39.24L488.60,37.21L482.03,37.07L480.66,38.39L483.33,40.21L493.17,40.06L493.29,40.88L487.66,43.13L493.33,45.58L496.99,41.74L502.91,39.86L497.58,38.72L492.63,36.86Z M501.02,36.00L505.83,38.58L509.63,38.24L514.17,36.47L505.68,36.15L505.05,35.45L501.02,36.00Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M719.21,208.30L717.08,208.52L711.16,206.89L707.20,204.60L706.59,203.50L697.83,199.48L696.94,200.33L696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.21,208.30Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M947.57,456.03L947.20,453.69L932.56,464.24L927.79,465.97L918.08,472.60L921.50,473.96L925.44,474.66L936.25,466.16L941.27,465.28L949.83,457.67L951.52,455.11L947.57,456.03Z M961.00,433.35L960.63,440.55L961.66,441.06L958.12,445.86L953.63,449.25L955.89,451.31L955.21,453.28L952.29,456.58L954.55,456.50L962.48,450.31L964.62,448.20L968.22,446.30L970.30,442.78L966.24,444.28L961.55,440.18L962.28,439.36L962.67,433.79L961.00,433.35Z " data-iso="NZL" data-name="New Zealand" data-pop="4213418.0"/><path d="M623.74,226.92L624.01,227.33L625.37,229.44L624.66,233.38L622.73,237.18L615.67,240.06L615.26,240.23L615.42,240.58L618.01,246.31L618.24,246.42L619.27,248.64L619.89,248.37L624.32,247.51L626.62,244.21L628.93,243.84L637.79,227.62L636.54,227.07L626.87,219.69L626.46,218.74L624.73,219.14L624.12,222.47L623.71,226.39L623.74,226.92Z M625.08,214.85L625.43,216.19L625.57,216.35L625.91,216.33L625.91,216.12L626.06,214.68L625.27,214.33L625.08,214.85Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M679.87,180.29L678.38,179.81L676.65,176.98L672.57,175.42L672.41,175.47L672.13,175.61L664.06,179.36L665.15,181.07L662.88,186.49L662.92,188.58L661.41,189.57L660.96,193.73L654.76,196.02L653.07,197.80L653.15,201.28L647.26,202.88L638.56,201.59L637.37,201.20L638.05,201.90L641.18,205.92L643.99,207.88L645.65,210.57L644.83,212.76L642.14,214.48L641.93,217.94L641.88,218.00L655.91,216.51L659.57,221.64L662.27,222.99L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.08,182.02L680.52,181.16L680.21,180.67L680.00,180.35L679.87,180.29Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M203.82,273.95L202.59,275.12L203.14,276.18L202.54,279.33L202.62,279.23L204.58,278.76L209.20,282.35L211.26,281.37L210.01,278.82L214.39,276.02L217.26,278.23L217.63,282.24L217.71,282.34L219.94,279.82L219.59,277.23L218.64,276.41L213.68,273.98L205.18,276.24L204.01,274.14L203.82,273.95Z " data-iso="PAN" data-name="Panama" data-pop="3360474.0"/><path d="M241.64,323.01L240.03,321.96L241.39,317.80L236.75,316.09L234.18,316.82L225.39,308.30L225.21,308.53L225.03,308.66L225.32,311.55L224.35,313.62L220.97,317.30L217.12,319.03L214.94,324.44L209.46,323.17L209.78,320.25L209.24,320.63L207.24,325.57L208.30,328.27L207.55,329.78L210.82,331.90L214.46,337.47L218.95,346.86L219.37,348.47L224.43,356.44L224.29,358.65L228.32,363.23L235.78,367.54L243.39,373.50L243.64,373.75L245.30,372.84L245.38,372.47L245.88,370.98L246.09,370.74L246.09,370.73L245.99,360.32L246.98,358.79L246.23,357.04L247.11,352.82L244.44,348.05L244.01,347.27L243.72,347.28L240.76,347.48L240.52,343.24L235.82,343.88L233.75,341.76L229.77,335.14L233.45,326.25L238.70,323.69L241.79,323.51L241.80,323.28L241.64,323.01Z " data-iso="PER" data-name="Peru" data-pop="29546963.0"/><path d="M844.86,274.86L842.92,273.62L843.40,275.96L836.33,277.74L832.93,282.44L833.53,283.46L834.91,280.43L839.43,281.09L839.48,282.75L843.83,288.16L844.74,286.80L843.70,284.26L844.75,282.01L846.33,284.11L847.17,282.53L844.86,274.86Z M836.11,275.78L836.69,270.35L835.01,269.27L834.92,272.12L833.69,273.53L836.11,275.78Z M833.23,266.66L831.87,266.27L832.02,268.93L834.38,269.49L835.18,268.16L833.23,266.66Z M825.25,241.59L824.10,241.84L823.61,245.10L824.54,250.17L822.78,249.80L824.34,255.08L825.86,254.97L830.96,258.88L832.86,261.01L832.50,258.46L835.02,261.35L837.65,261.58L833.40,257.45L831.20,257.73L828.29,252.72L830.50,246.94L828.72,242.00L825.25,241.59Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M925.99,323.49L922.78,327.52L915.00,327.69L914.84,328.74L918.56,330.61L921.84,330.11L925.56,328.02L925.99,323.49Z M892.48,317.47L892.48,317.48L892.48,317.72L891.44,331.76L891.51,332.58L890.95,340.72L891.40,341.09L898.28,339.08L899.16,336.72L903.71,336.01L906.87,336.99L910.85,343.56L919.53,346.15L917.94,343.92L918.50,342.76L912.15,336.28L912.91,330.91L906.74,327.44L906.93,325.37L900.20,320.40L892.57,317.47L892.48,317.47Z M929.14,325.14L929.42,322.81L926.52,319.76L922.62,317.93L928.34,322.90L929.14,325.14Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M508.98,114.48L504.98,113.13L501.06,114.08L495.14,116.18L495.04,116.12L495.01,116.23L495.07,116.39L495.43,116.43L495.99,116.55L495.84,117.07L495.22,116.87L496.94,122.48L496.60,123.34L497.40,126.63L497.39,126.68L497.62,126.67L498.64,126.60L502.75,129.24L503.35,128.20L507.65,129.98L508.60,131.23L508.62,131.33L508.91,131.38L512.81,131.77L516.27,131.68L518.65,132.82L518.83,132.85L518.94,132.84L519.68,132.89L521.52,128.34L520.97,124.65L520.80,124.41L520.58,124.07L519.42,121.88L520.98,120.49L519.95,117.31L519.51,116.16L519.48,116.09L519.34,115.47L517.58,114.62L517.45,114.75L517.36,114.77L515.87,114.74L509.09,114.40L508.98,114.48Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M811.64,164.84L815.17,166.52L815.59,168.86L817.01,169.52L815.37,171.51L821.42,172.72L821.46,172.75L821.85,171.11L825.18,169.74L824.96,169.54L821.47,167.65L821.07,165.61L825.38,161.51L824.11,159.15L825.63,156.73L825.72,156.64L825.59,156.55L825.05,156.03L824.86,155.81L824.72,155.69L822.34,154.95L821.66,156.93L818.93,158.07L820.11,159.89L816.97,159.29L811.59,164.81L811.64,164.84Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M432.48,158.31L430.95,167.00L432.30,171.31L431.61,175.44L435.96,174.95L436.21,174.91L436.30,165.97L437.87,165.05L437.71,157.89L432.78,157.92L432.48,158.31Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M281.47,379.68L278.35,377.12L275.58,377.16L270.39,378.41L268.73,387.52L268.68,387.70L268.77,387.80L271.64,391.10L274.81,393.53L284.41,398.13L285.20,399.79L282.89,405.53L289.38,406.58L291.71,406.32L294.32,401.25L294.19,399.71L294.15,399.19L294.70,394.21L290.63,392.54L290.25,390.79L282.79,387.25L281.56,380.53L281.47,380.27L281.47,379.68Z " data-iso="PRY" data-name="Paraguay" data-pop="6995655.0"/><path d="M611.63,219.94L610.65,214.52L609.43,217.23L609.88,219.21L609.80,219.43L610.00,219.82L611.26,220.08L611.63,219.94Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M535.63,145.29L535.07,140.80L534.78,140.15L530.52,135.66L530.26,135.68L530.14,135.72L525.75,137.57L523.72,136.91L520.24,136.71L520.15,136.77L520.09,136.85L517.90,138.31L515.66,142.73L513.60,143.11L513.50,143.20L513.68,143.40L516.25,146.07L518.08,148.22L520.86,149.75L520.91,149.78L521.12,149.93L531.53,150.33L532.51,150.11L537.52,151.54L537.51,151.34L538.04,147.77L537.90,147.38L540.00,146.42L540.02,146.18L538.11,145.97L536.52,146.07L536.13,145.87L535.80,145.51L535.63,145.29Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M833.06,114.62L834.34,117.97L833.14,118.02L837.42,124.03L839.27,125.43L849.88,143.27L850.67,141.09L854.15,143.48L853.86,142.31L847.74,136.98L846.35,132.41L849.10,132.38L833.06,114.62Z M512.35,111.64L512.19,111.62L512.07,111.80L511.00,112.74L509.70,113.81L509.47,114.11L509.09,114.40L515.87,114.74L517.36,114.77L517.45,114.75L517.32,114.58L517.19,113.82L517.42,113.12L513.08,111.69L513.10,112.22L511.51,112.64L512.12,111.96L512.35,111.64Z M35.73,67.87L35.42,67.74L20.71,79.82L26.84,76.80L26.34,78.51L30.83,78.31L36.12,81.89L36.89,80.54L39.54,79.88L41.29,78.10L43.85,78.43L48.16,75.79L47.23,74.02L43.80,73.48L40.71,75.55L38.75,75.00L41.49,71.72L37.57,69.75L35.73,67.87Z M48.09,59.97L45.36,60.09L43.21,61.70L49.85,61.03L48.09,59.97Z M582.05,54.91L578.79,54.93L575.65,59.99L579.81,60.50L580.57,62.06L585.09,62.68L590.53,62.49L584.17,59.11L584.68,55.22L582.05,54.91Z M780.97,49.02L780.13,49.51L786.25,50.63L790.59,49.62L780.97,49.02Z M764.59,47.74L760.90,46.72L759.83,49.40L763.64,50.64L766.79,50.17L773.27,50.57L770.44,48.78L773.83,49.74L776.84,48.42L766.70,46.88L764.59,47.74Z M605.46,46.60L605.88,44.69L599.66,45.83L591.84,46.44L584.51,49.10L580.83,49.71L581.49,50.64L579.18,53.10L585.67,54.74L589.00,50.94L594.21,48.86L605.46,46.60Z M529.41,65.32L529.40,66.09L526.27,66.78L525.80,67.54L525.45,67.62L525.31,67.66L524.91,69.66L527.08,74.27L529.61,76.83L529.46,79.90L531.33,84.16L534.39,85.69L534.33,88.51L527.51,94.27L528.46,94.16L530.91,95.39L528.71,97.47L528.62,97.70L527.53,100.16L528.30,103.24L527.94,104.06L527.95,104.14L528.25,104.15L529.33,105.33L529.15,105.96L530.75,108.59L530.71,108.75L531.11,109.04L534.42,110.28L538.20,110.66L538.31,111.83L541.58,116.66L542.59,119.04L542.32,122.33L542.35,122.42L542.40,122.42L547.47,121.58L549.43,125.35L553.82,128.45L554.97,128.23L560.48,129.92L560.97,129.46L566.49,132.23L565.49,133.08L566.69,135.65L563.85,137.15L562.61,139.75L563.31,139.46L561.82,141.71L563.95,143.26L559.25,146.44L569.25,152.49L569.57,152.68L571.38,152.27L574.18,153.39L586.27,156.02L588.54,158.05L588.60,158.10L588.92,158.17L593.07,160.51L594.68,158.26L594.37,158.05L590.79,154.04L587.91,149.14L593.53,142.56L593.46,142.40L589.53,137.60L586.82,137.31L584.64,134.58L585.70,128.25L589.07,130.07L588.72,127.74L594.52,123.97L597.30,123.76L607.61,127.63L610.73,125.97L614.35,125.97L616.94,127.40L622.70,126.67L621.06,124.50L619.62,119.44L622.05,118.98L619.55,118.20L619.01,115.89L625.66,115.15L635.03,113.01L636.03,112.04L639.86,111.55L643.58,112.75L644.77,115.24L651.12,116.08L651.98,117.75L654.29,117.69L659.59,114.46L659.34,115.98L663.64,118.27L673.03,126.86L680.84,126.55L688.43,130.80L691.28,131.37L692.24,130.41L694.79,132.59L694.95,132.81L695.22,132.84L695.36,132.79L695.42,132.68L696.04,132.53L696.18,132.54L696.19,132.54L698.99,131.46L701.05,129.28L708.08,127.38L713.36,129.56L721.71,129.87L722.71,129.37L720.44,126.02L721.73,122.41L731.61,125.11L733.18,127.62L738.98,129.05L745.18,128.50L752.43,131.98L757.25,132.35L761.66,131.63L765.64,128.93L773.17,130.07L773.41,130.25L774.12,130.55L777.21,131.32L779.92,129.41L779.00,128.24L779.09,124.13L779.99,122.85L777.60,118.76L781.27,117.70L790.99,119.20L796.35,123.51L803.95,130.95L810.18,132.41L816.53,137.66L822.46,136.24L826.78,141.83L826.72,146.88L823.00,147.15L825.69,154.32L824.97,155.70L824.86,155.81L825.05,156.03L825.59,156.55L825.72,156.64L825.80,156.55L831.98,155.24L836.00,152.30L838.98,142.70L839.27,133.12L836.18,127.76L834.92,124.06L835.38,123.03L831.40,119.21L832.11,118.35L825.31,115.02L823.86,117.41L817.04,114.06L812.52,113.48L815.05,109.31L815.88,106.00L818.30,103.19L818.10,101.20L821.16,98.07L827.04,97.93L828.59,98.64L833.90,97.93L835.94,98.36L836.40,96.77L839.61,97.46L843.24,99.70L848.26,98.55L847.99,96.56L849.44,90.59L854.21,89.83L857.00,90.07L857.64,91.73L860.39,93.94L863.85,90.22L862.21,87.78L864.02,87.32L867.66,92.69L864.19,98.87L864.52,99.93L860.47,103.41L861.41,106.90L864.09,111.41L878.95,126.30L880.05,121.72L879.23,120.62L879.27,115.93L880.80,113.93L882.92,113.41L879.78,110.91L879.65,108.35L871.23,96.98L871.34,95.88L877.09,95.44L878.03,96.51L881.38,94.09L884.80,94.59L888.19,96.13L887.87,94.32L890.56,90.46L895.12,88.44L895.60,87.44L901.63,88.41L895.88,84.43L894.38,79.82L879.68,67.74L866.25,64.96L853.26,64.35L854.26,65.79L858.34,67.55L858.06,68.22L851.21,66.87L848.53,65.49L837.73,65.53L835.01,66.54L829.11,65.06L826.75,62.86L821.17,61.57L816.05,61.40L806.92,61.73L804.21,60.57L794.84,57.81L792.55,57.72L790.03,58.90L784.47,56.84L774.07,57.36L776.61,60.36L767.75,59.87L765.10,60.56L760.18,58.94L759.85,62.44L755.88,61.33L749.92,58.47L747.07,55.04L737.27,53.74L735.32,55.90L724.25,55.09L723.37,54.09L718.76,53.85L712.51,54.34L711.57,53.75L703.14,53.49L703.93,54.49L700.37,55.30L697.58,54.84L700.11,53.79L708.07,49.24L699.48,45.37L690.25,44.71L686.07,43.45L680.07,42.80L676.77,43.97L677.29,45.79L675.81,47.18L672.88,46.59L667.65,47.47L667.20,46.95L655.78,48.40L651.20,49.70L649.13,52.01L651.28,53.22L638.43,54.16L643.42,57.77L647.86,59.23L651.11,63.03L649.28,63.81L648.80,61.99L646.84,61.69L647.91,59.70L635.78,57.57L631.76,58.71L632.20,59.92L639.57,61.68L631.43,60.89L629.22,58.85L628.80,64.14L631.69,67.25L635.38,66.98L639.79,67.98L641.66,69.94L640.50,71.41L636.87,67.75L632.82,68.44L634.82,71.45L633.70,73.82L628.31,75.76L629.94,72.00L625.24,62.21L622.25,60.33L622.42,56.70L614.72,55.85L613.16,60.06L611.34,62.22L618.91,67.94L618.86,69.77L614.84,68.07L605.20,65.65L599.51,65.12L598.04,65.71L600.44,67.73L596.82,69.38L595.70,67.68L592.68,68.78L587.06,69.59L585.09,67.79L581.38,68.50L575.62,70.53L570.99,74.02L569.17,74.34L564.37,72.34L568.03,70.82L565.66,69.27L559.68,68.88L561.90,69.96L563.73,76.88L562.12,75.91L556.43,76.84L555.36,80.03L546.31,80.22L550.55,83.34L549.78,83.51L542.27,80.66L540.82,78.79L541.11,77.05L538.14,75.91L536.39,74.09L542.76,75.67L550.56,76.69L556.15,74.07L554.72,71.61L540.09,66.85L531.89,64.81L529.84,65.36L529.41,65.32Z M674.35,38.52L671.80,38.22L670.68,40.91L673.36,41.43L681.52,40.49L680.31,39.65L674.35,38.52Z M661.00,36.22L655.56,36.38L653.43,37.55L659.82,39.15L666.91,39.65L667.00,37.18L661.00,36.22Z M656.13,33.97L649.24,34.18L648.14,35.95L653.46,36.60L659.74,36.02L656.13,33.97Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M551.58,311.96L551.12,312.13L548.92,313.10L548.82,313.11L548.70,313.19L547.43,315.99L546.58,316.89L546.78,317.73L547.06,317.86L547.11,317.67L549.17,318.13L550.39,316.76L551.74,316.71L551.82,316.72L551.94,316.71L552.75,316.24L552.63,313.73L551.60,312.02L551.70,311.96L551.58,311.96Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M431.71,209.72L431.72,209.12L431.32,209.12L431.47,210.94L428.28,212.02L425.00,211.44L422.55,214.70L420.08,219.50L415.97,223.16L413.36,230.60L406.20,231.53L406.18,231.68L405.85,233.55L406.00,233.73L406.31,231.86L421.40,224.18L421.62,216.01L423.76,215.09L431.61,215.09L431.68,211.05L431.69,210.45L431.71,209.72Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M572.41,193.05L572.02,193.47L566.70,195.82L569.58,198.89L564.95,203.01L561.01,203.02L560.75,205.29L560.69,207.41L562.08,207.76L568.74,217.62L570.20,221.22L578.27,235.57L581.57,238.45L584.47,244.21L587.94,249.35L587.99,249.63L588.97,246.09L598.49,246.55L602.17,246.25L606.46,241.71L614.55,240.34L615.26,240.23L615.67,240.06L622.73,237.18L624.66,233.38L625.37,229.44L624.01,227.33L623.74,226.92L623.57,227.21L615.74,226.10L612.43,221.98L612.28,221.23L612.18,221.23L611.49,221.04L611.62,220.55L611.49,220.24L611.26,220.08L610.00,219.82L609.80,219.43L609.54,219.14L606.57,212.09L603.03,209.22L601.49,206.27L601.28,205.93L599.00,205.97L598.70,205.63L595.97,204.02L595.39,203.94L594.88,204.06L583.97,198.91L580.57,196.30L573.08,193.17L572.41,193.05Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M532.89,229.46L532.97,231.25L533.20,236.62L530.92,236.64L530.22,237.98L530.24,238.43L530.30,240.03L530.68,251.96L527.57,253.97L525.94,256.16L525.58,260.53L524.44,262.19L527.81,268.76L527.71,269.15L527.94,269.59L530.20,273.07L530.16,274.79L531.51,277.11L531.81,277.20L531.81,277.20L531.85,277.10L533.71,274.13L536.77,270.93L539.48,274.28L543.76,274.84L551.17,272.51L553.49,273.15L556.81,267.98L558.98,266.74L562.28,274.36L562.28,274.36L562.28,274.36L562.28,274.17L563.66,269.29L564.73,269.00L569.00,258.17L569.20,257.21L569.06,256.18L570.18,247.31L571.56,246.99L574.90,243.78L574.78,243.54L570.89,239.88L570.17,234.63L568.85,230.28L568.76,229.46L552.36,229.46L549.03,229.46L534.05,229.46L532.89,229.46Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M531.81,277.20L531.81,277.20L531.96,277.25L535.06,281.17L538.74,284.46L541.80,289.63L542.02,289.91L542.13,290.16L546.78,292.13L549.65,292.70L552.60,295.54L552.67,295.69L552.76,295.50L556.07,295.27L559.31,294.30L561.61,293.92L562.32,293.08L562.93,292.37L563.55,291.65L565.68,289.19L566.24,288.54L566.19,288.48L559.35,280.21L559.13,279.76L562.28,274.51L562.28,274.36L562.28,274.36L562.28,274.36L558.98,266.74L556.81,267.98L553.49,273.15L551.17,272.51L543.76,274.84L539.48,274.28L536.77,270.93L533.71,274.13L531.85,277.10L531.81,277.20Z " data-iso="SDS" data-name="S. Sudan" data-pop="8260490.0"/><path d="M419.97,255.20L416.66,250.75L413.27,248.62L408.07,249.06L407.11,251.54L407.00,251.92L405.09,255.83L406.80,259.24L406.87,259.60L414.26,259.79L415.17,260.51L409.14,260.54L406.22,261.48L406.24,261.78L406.25,263.19L406.24,263.85L406.34,264.01L409.02,263.72L411.00,262.85L414.47,262.87L415.49,262.87L416.48,262.91L419.14,263.94L422.44,263.79L422.65,263.84L422.67,263.57L422.67,261.91L420.31,255.81L420.03,255.23L419.97,255.20Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M416.74,276.05L419.54,281.94L421.99,283.35L422.11,283.49L425.82,278.47L425.91,277.96L425.92,277.85L425.68,277.81L424.48,274.63L420.96,272.46L419.37,272.80L416.68,275.83L416.74,276.05Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M184.36,256.60L182.14,258.47L181.94,259.07L182.30,259.26L185.54,260.69L187.60,261.12L188.72,260.33L188.80,260.28L189.00,258.52L187.97,258.17L184.50,256.65L184.42,256.64L184.36,256.60Z " data-iso="SLV" data-name="El Salvador" data-pop="7185218.0"/><path d="M607.59,267.95L595.55,270.87L593.84,270.90L590.82,267.62L590.20,267.07L589.95,267.55L589.63,268.17L589.27,268.86L589.23,269.00L590.34,273.26L591.20,274.65L604.13,279.59L605.18,279.59L605.61,278.79L607.96,274.40L607.89,272.53L607.69,267.94L607.59,267.95Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M586.02,313.79L591.70,305.93L594.36,303.19L599.63,299.32L602.15,296.42L607.48,288.53L613.23,275.62L613.87,271.53L613.26,265.34L608.07,267.89L607.69,267.94L607.89,272.53L607.96,274.40L605.61,278.79L605.18,279.59L604.45,280.44L596.00,290.66L590.51,291.57L586.81,293.76L586.72,293.95L586.34,294.58L583.97,298.00L584.01,311.26L585.71,314.21L586.02,313.79Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M509.85,143.82L509.85,143.90L510.27,145.69L511.05,146.12L510.38,147.43L510.42,147.56L510.52,147.55L510.88,148.92L511.46,152.09L511.30,152.27L511.30,152.32L512.74,153.58L513.06,153.77L514.72,154.68L514.72,154.77L515.06,154.67L515.40,153.46L516.65,153.84L518.24,156.71L518.31,156.83L518.47,156.85L518.80,156.76L520.42,156.57L520.49,156.60L520.71,156.54L520.68,154.72L521.34,154.57L520.81,149.85L520.91,149.78L520.86,149.75L518.08,148.22L516.25,146.07L513.68,143.40L513.50,143.20L513.40,143.14L511.33,143.27L510.50,143.62L509.91,143.82L509.85,143.82Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M290.88,288.51L288.60,286.77L282.02,286.75L281.32,288.41L281.29,288.34L279.00,290.94L279.87,296.12L280.79,296.10L283.14,301.10L283.26,301.22L283.35,301.25L285.10,299.26L286.67,299.44L288.89,299.84L289.03,299.85L289.07,299.81L289.69,290.25L290.64,289.02L290.88,288.51Z " data-iso="SUR" data-name="Suriname" data-pop="481267.0"/><path d="M518.65,132.82L516.27,131.68L512.81,131.77L508.91,131.38L508.62,131.33L508.55,131.34L506.72,132.88L506.07,133.35L503.83,134.23L503.77,134.50L503.76,134.53L503.56,135.04L503.58,135.23L504.28,136.44L504.45,136.56L504.53,136.54L508.83,137.32L513.84,134.67L517.90,135.21L517.95,135.17L517.93,134.60L518.38,133.99L518.49,133.54L518.80,132.99L518.83,132.85L518.65,132.82Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M503.07,141.75L502.55,141.05L502.37,140.57L501.85,140.55L501.70,140.62L498.46,141.54L497.70,142.18L495.45,141.77L495.33,141.75L495.29,141.96L494.54,142.46L495.17,143.65L495.57,145.03L495.36,145.21L495.19,145.28L500.80,144.16L500.74,142.87L502.85,141.74L503.10,141.83L503.07,141.75Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M505.89,67.58L505.58,67.59L497.30,71.05L496.72,73.33L492.53,76.50L491.37,81.56L487.10,85.42L487.86,90.45L489.77,91.63L489.08,95.67L486.54,99.17L486.29,99.00L489.66,106.20L491.04,107.50L491.34,110.96L494.98,110.81L494.68,109.60L498.92,108.66L500.07,103.20L498.52,97.82L505.40,96.89L500.91,93.74L500.70,87.92L508.94,82.62L509.07,80.41L511.47,77.39L515.18,77.58L515.81,77.51L514.36,75.72L514.90,74.39L512.66,70.33L506.55,67.75L505.89,67.58Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M552.93,401.12L550.68,405.68L552.70,405.93L553.19,404.20L553.28,404.25L553.34,403.10L553.21,402.24L553.28,402.00L553.07,401.13L553.01,401.08L552.93,401.12Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M265.70,243.57L265.80,243.65L265.99,243.73L266.04,243.64L266.05,243.55L265.71,243.55L265.70,243.57Z " data-iso="SXM" data-name="Sint Maarten" data-pop="37429.0"/><path d="M579.41,174.73L571.15,176.69L567.69,175.90L565.62,176.83L563.23,176.35L561.46,179.44L561.33,179.68L561.22,180.67L561.68,181.21L561.89,183.25L562.20,184.05L563.11,183.88L563.62,186.83L562.45,188.23L562.33,188.35L562.30,188.57L562.55,189.42L562.46,189.59L562.37,190.69L562.35,190.86L562.67,190.93L564.51,192.20L565.52,192.36L570.14,189.06L570.84,188.57L571.61,188.06L577.15,181.69L577.17,177.29L579.61,175.21L579.61,175.16L579.41,174.73Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M528.76,237.58L512.50,228.24L505.60,224.26L503.72,225.28L502.63,225.87L503.02,227.94L505.21,236.97L504.67,247.71L501.38,251.86L498.84,257.65L499.17,259.18L499.67,259.95L500.20,260.78L500.61,261.42L501.16,261.43L503.04,263.49L505.64,272.41L501.30,272.51L500.59,273.91L505.36,281.00L505.20,281.29L505.53,281.32L509.54,280.89L511.86,279.64L515.84,276.23L521.40,274.56L524.19,270.51L527.58,269.12L527.71,269.15L527.81,268.76L524.44,262.19L525.58,260.53L525.94,256.16L527.57,253.97L530.68,251.96L530.30,240.03L530.24,238.43L528.76,237.58Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M459.52,268.92L459.23,269.02L459.03,268.89L458.04,268.61L457.34,268.45L457.53,268.66L459.16,274.59L459.38,284.08L461.21,286.41L461.59,286.20L462.55,285.95L461.69,273.98L459.89,271.05L460.23,269.27L460.31,268.88L459.52,268.92Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M760.37,273.02L761.21,278.67L764.59,282.78L765.11,284.05L765.94,285.15L768.94,286.14L768.72,287.55L772.08,285.86L771.11,285.03L764.97,277.18L762.91,275.20L762.08,271.29L764.00,264.01L763.63,260.83L766.53,260.16L773.14,266.34L773.20,266.33L770.64,259.77L774.02,256.63L779.02,256.92L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.18,235.26L754.12,239.26L753.29,242.03L758.35,249.87L758.38,253.10L757.33,253.82L760.36,258.32L763.00,266.07L760.70,271.75L760.37,273.02Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M658.98,165.45L658.34,165.32L658.46,165.44L658.98,165.45Z M652.75,174.94L652.79,175.05L660.29,170.46L662.21,171.36L663.88,176.11L668.98,173.86L673.19,174.69L673.24,174.72L673.30,174.66L672.06,170.53L668.91,169.80L667.73,166.98L667.67,166.79L667.50,166.76L663.89,167.66L661.48,166.32L655.24,166.52L654.89,164.94L659.37,164.04L659.35,163.98L659.18,163.99L657.66,161.58L649.92,167.53L652.38,169.58L652.80,174.67L652.75,174.94Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M615.97,160.12L615.85,160.11L614.62,160.30L610.28,156.63L605.80,158.49L606.30,159.38L609.40,157.39L612.41,160.83L610.47,162.52L608.01,161.66L608.37,165.20L611.71,168.88L612.67,174.07L612.76,174.32L619.14,171.29L622.10,171.65L628.32,173.96L631.75,176.85L633.99,176.83L635.00,180.36L635.10,180.50L635.33,180.46L638.31,182.04L640.42,181.12L640.35,179.69L644.00,177.91L644.26,175.34L648.91,174.32L649.05,174.30L648.93,173.91L648.91,172.22L645.75,171.12L635.28,164.70L631.34,160.37L627.55,159.84L626.75,157.87L622.30,156.59L618.96,160.33L616.73,160.16L615.97,160.12Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M839.33,341.21L838.80,341.52L839.53,341.82L839.97,341.42L840.11,340.98L839.33,341.21Z M841.66,340.09L842.30,340.73L842.12,340.97L841.92,342.13L842.39,341.74L848.51,338.81L848.14,337.85L843.18,338.78L842.00,339.79L841.66,340.09Z " data-iso="TLS" data-name="East Timor" data-pop="1131612.0"/><path d="M270.15,271.96L270.07,269.46L268.34,269.94L267.39,272.19L270.15,271.96Z " data-iso="TTO" data-name="Trinidad and Tobago" data-pop="1310000.0"/><path d="M482.28,175.78L481.43,179.85L481.69,182.42L479.43,186.92L485.45,199.02L485.65,199.87L486.00,199.68L487.66,197.87L487.29,195.43L491.28,192.01L491.19,189.25L490.88,189.10L488.06,187.53L487.25,185.07L489.82,181.86L489.64,176.00L487.36,176.03L485.99,174.64L482.99,175.56L482.28,175.78Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M561.46,179.44L563.23,176.35L565.62,176.83L567.69,175.90L571.15,176.69L579.41,174.73L579.61,175.16L579.88,175.09L580.58,174.26L583.81,174.75L586.41,174.96L586.52,175.04L586.52,174.99L583.27,166.99L585.23,166.07L585.33,166.08L585.22,165.95L585.16,165.89L585.04,165.73L583.61,164.68L582.63,164.75L580.67,161.04L580.61,160.88L580.60,160.82L575.85,159.73L574.92,159.42L574.70,159.76L570.38,161.33L567.66,161.20L559.89,159.75L556.72,157.61L549.44,158.40L544.84,160.96L539.89,160.90L542.24,162.20L539.99,163.44L533.53,163.40L532.06,166.73L534.07,166.39L533.09,169.96L536.87,174.97L542.40,178.21L548.00,176.26L552.44,179.01L554.99,178.48L556.58,176.97L559.10,176.86L561.61,179.14L561.46,179.44Z M531.90,158.72L532.16,158.79L532.09,160.42L532.24,161.28L531.44,162.24L531.54,162.39L533.61,162.59L537.72,161.01L536.56,158.23L536.59,157.82L535.08,157.90L531.89,158.62L531.90,158.72Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M822.04,227.22L821.11,217.77L820.08,218.55L818.79,225.32L819.82,227.19L822.04,227.22Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M551.70,311.96L551.60,312.02L552.63,313.73L552.75,316.24L551.94,316.71L551.82,316.72L551.76,316.81L551.39,320.97L551.15,321.65L549.18,324.06L548.21,324.04L548.21,324.21L548.00,325.94L550.26,332.85L552.07,337.09L552.16,337.41L552.23,337.67L555.16,339.95L555.38,339.95L558.56,341.66L558.73,341.75L558.78,341.72L562.03,342.07L563.02,343.00L564.75,349.39L564.77,349.51L565.45,349.50L571.68,349.90L575.62,348.92L581.79,345.53L581.76,345.45L578.45,338.31L579.32,333.23L577.30,330.76L578.41,325.21L578.47,324.91L573.74,320.71L562.41,311.73L562.18,311.73L561.84,311.73L553.61,311.73L553.06,311.73L551.73,311.95L551.70,311.96Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M562.17,311.12L562.30,307.53L565.44,302.29L565.18,299.52L562.81,294.27L562.32,293.08L561.61,293.92L559.31,294.30L556.07,295.27L552.76,295.50L552.67,295.69L552.84,295.79L552.36,299.39L553.74,300.05L553.03,302.14L549.90,305.75L548.83,313.00L548.82,313.11L548.92,313.10L551.12,312.13L551.58,311.96L551.70,311.96L551.73,311.95L553.06,311.73L553.61,311.73L561.84,311.73L562.18,311.73L562.17,311.12Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M542.35,122.42L541.84,122.39L538.38,124.55L530.17,123.61L520.82,124.39L520.80,124.41L520.97,124.65L521.52,128.34L519.68,132.89L518.94,132.84L518.83,132.85L518.80,132.99L518.49,133.54L518.38,133.99L517.93,134.60L517.95,135.17L518.21,135.14L518.60,135.69L519.08,135.87L520.09,136.72L520.15,136.77L520.24,136.71L523.72,136.91L525.75,137.57L530.14,135.72L530.26,135.68L530.30,135.56L533.47,135.13L537.24,136.71L539.94,140.84L535.93,145.39L535.80,145.51L536.13,145.87L536.52,146.07L538.11,145.97L540.02,146.18L540.04,145.89L542.47,141.64L549.28,142.96L547.73,145.67L555.19,147.79L558.69,146.87L558.20,145.49L554.56,144.63L554.75,142.03L562.52,139.79L562.61,139.75L563.85,137.15L566.69,135.65L565.49,133.08L566.49,132.23L560.97,129.46L560.48,129.92L554.97,128.23L553.82,128.45L549.43,125.35L547.47,121.58L542.40,122.42L542.35,122.42Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M287.45,416.29L287.37,416.43L286.89,417.74L286.86,420.71L286.97,424.50L287.13,424.84L287.23,429.68L289.24,431.71L298.02,433.34L301.68,429.20L301.81,429.07L300.79,424.61L299.76,423.01L290.07,416.29L287.66,416.55L287.45,416.29Z " data-iso="URY" data-name="Uruguay" data-pop="3494382.0"/><path d="M123.46,133.61L121.67,138.77L121.94,136.10L117.03,135.59L115.56,142.06L114.93,142.60L108.12,154.12L106.92,157.27L103.72,168.73L106.11,175.77L105.28,177.95L107.22,182.45L106.88,184.62L114.23,188.84L114.33,191.56L114.32,191.58L121.23,190.97L122.24,192.20L130.86,195.93L139.18,195.91L139.54,194.70L144.81,194.33L148.15,198.59L151.58,204.28L154.17,201.58L157.81,201.62L162.02,213.64L167.27,215.21L167.34,214.97L167.88,208.47L170.17,206.73L175.66,204.00L176.57,201.76L177.91,202.32L184.62,202.28L186.51,201.60L188.05,203.59L191.59,202.64L192.36,200.94L190.56,200.19L198.25,198.67L198.42,199.64L202.55,198.91L205.37,201.42L210.24,200.96L212.33,204.10L211.26,208.44L213.21,214.55L214.81,217.35L216.61,217.84L218.28,214.60L218.62,210.74L217.55,202.64L217.37,197.55L221.65,191.98L232.68,184.15L235.44,182.76L237.21,180.24L235.79,179.34L238.22,178.73L238.94,170.20L240.08,172.07L244.92,167.17L247.30,163.66L247.19,162.38L251.33,160.32L259.98,158.74L257.42,156.53L258.76,154.37L266.40,149.55L271.16,147.70L271.06,146.61L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.46,133.61Z M110.86,108.09L109.96,109.90L111.35,113.24L112.30,111.88L110.86,108.09Z M64.85,103.16L60.76,103.77L58.58,106.15L64.06,104.74L64.85,103.16Z M36.47,84.32L35.28,85.29L39.17,86.17L42.11,85.36L36.47,84.32Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.56,112.38L117.79,111.19L117.89,110.82L118.74,109.77L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L128.73,65.69L125.16,64.32L116.41,64.16L101.37,61.54L99.09,62.00L98.35,60.67L93.61,62.10L87.58,62.90L82.39,64.08L74.68,67.17L67.41,68.04L66.40,70.59L67.55,73.49L71.60,73.74L73.15,75.60L69.98,74.06L69.75,76.03L67.80,76.77L65.50,75.12L62.95,75.18L51.66,77.97L54.76,81.71L59.48,81.84L66.13,80.33L63.29,83.75L53.29,85.52L49.96,86.99L42.63,91.14L43.87,93.12L42.36,95.03L42.70,96.65L46.28,98.93L44.48,100.56L47.39,99.70L50.90,99.97L51.02,101.24L53.50,99.78L55.12,100.92L46.52,106.40L39.78,109.89L38.66,109.33L33.97,110.58L33.79,111.91L36.39,110.47L41.28,109.78L52.71,105.84L55.17,104.40L66.13,100.09L65.43,98.89L76.74,93.06L80.70,91.80L82.61,92.89L73.14,96.73L73.85,98.49L83.72,95.15L85.08,93.25L87.62,92.06L95.02,95.84L96.55,95.70L109.25,101.42L108.70,99.67L110.99,99.13L110.02,101.28L111.96,101.45L113.05,99.80L114.77,101.21L114.60,103.80L113.15,105.32L115.77,108.53L114.90,113.28L114.95,113.35Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M660.36,165.21L659.49,164.51L659.82,164.91L660.36,165.21Z M615.97,160.12L616.73,160.16L618.96,160.33L622.30,156.59L626.75,157.87L627.55,159.84L631.34,160.37L635.28,164.70L645.75,171.12L648.91,172.22L648.93,173.91L649.05,174.30L649.91,174.22L650.63,174.35L651.77,174.63L652.71,174.84L652.75,174.94L652.80,174.67L652.38,169.58L649.92,167.53L657.66,161.58L659.18,163.99L659.35,163.98L659.42,163.92L664.98,161.88L659.49,160.72L657.37,157.98L657.54,156.76L657.47,156.83L657.27,156.97L652.97,159.96L651.40,162.49L646.47,160.63L645.16,157.73L643.77,157.69L643.23,154.61L639.16,151.63L638.01,152.21L631.19,152.42L627.87,149.39L613.16,147.11L615.80,159.30L615.97,160.12Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M238.88,265.78L236.69,266.71L233.81,270.68L234.85,278.56L234.55,281.53L241.70,283.38L243.66,286.29L249.77,286.64L248.35,291.49L249.79,296.29L249.09,298.55L251.11,303.55L251.17,303.79L251.96,304.61L255.49,305.68L261.95,300.22L260.00,298.96L259.95,293.96L263.68,295.32L267.74,292.84L270.41,289.62L270.32,289.58L269.69,288.74L270.56,283.98L271.82,282.83L270.65,281.24L273.42,278.69L272.95,277.62L272.50,277.38L269.18,277.44L270.69,274.72L266.59,273.07L264.38,270.54L260.46,270.80L258.35,272.08L254.62,270.74L248.33,270.67L247.68,268.28L243.97,267.14L242.99,264.65L242.70,266.96L237.94,269.65L239.05,274.77L237.61,275.84L236.36,274.03L237.14,266.62L238.78,265.95L238.88,265.78Z " data-iso="VEN" data-name="Venezuela" data-pop="26814843.0"/><path d="M765.33,228.09L765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L786.11,255.80L786.67,264.35L782.48,266.42L778.21,270.97L778.51,271.22L779.85,273.09L779.88,276.72L783.86,274.59L783.52,271.64L785.04,272.94L791.90,267.66L792.62,261.86L791.87,258.64L789.70,253.19L786.08,249.52L778.04,240.33L780.38,233.99L780.00,233.18L783.41,231.25L783.55,231.21L779.46,229.45L779.07,226.65L772.96,225.50L770.61,227.51L765.45,227.96L765.33,228.09Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M561.58,192.06L560.51,194.67L561.67,195.36L561.79,195.37L561.81,195.07L562.01,194.34L561.86,193.55L561.89,192.64L561.77,192.08L561.58,192.06Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/><path d="M615.26,240.23L614.55,240.34L606.46,241.71L602.17,246.25L598.49,246.55L588.97,246.09L587.99,249.63L588.18,250.85L587.78,253.71L588.68,254.77L592.36,263.11L598.08,260.29L601.29,259.75L606.37,257.95L607.45,256.49L616.86,252.20L617.77,249.28L619.27,248.64L618.24,246.42L618.01,246.31L615.42,240.58L615.26,240.23Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M546.08,387.55L545.37,387.62L542.51,389.35L538.96,392.53L538.08,394.91L535.11,396.87L534.06,399.81L530.29,400.31L526.45,398.80L523.20,403.52L519.06,403.32L518.49,397.74L517.57,396.94L517.43,396.83L517.37,398.34L516.85,410.04L514.34,411.80L509.30,410.93L508.23,408.53L506.34,410.64L506.43,410.73L509.61,419.28L511.05,421.88L509.86,426.26L512.38,431.30L515.75,432.81L520.99,431.33L534.67,429.13L545.73,420.37L550.30,413.38L554.18,409.14L555.41,405.11L555.59,404.28L555.26,404.29L553.99,404.33L553.54,404.23L553.28,404.25L553.19,404.20L552.70,405.93L550.68,405.68L552.93,401.12L553.01,401.08L552.97,400.82L553.43,396.34L551.84,388.49L551.84,388.30L551.57,388.10L546.99,387.38L546.12,387.55L546.08,387.55Z M542.01,410.64L544.35,412.34L542.42,415.98L540.16,417.92L537.90,415.40L538.50,413.66L542.01,410.64Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M558.56,341.66L555.38,339.95L555.16,339.95L552.23,337.67L552.16,337.41L551.62,337.51L544.85,341.28L545.51,343.27L544.74,349.94L546.61,352.27L548.87,351.58L548.74,355.92L542.27,351.98L540.85,349.52L539.49,350.94L532.20,348.77L531.22,347.01L531.11,346.99L531.17,347.46L530.56,354.60L524.85,354.60L524.58,365.18L528.07,370.62L528.66,371.22L529.32,371.07L532.79,370.78L533.86,371.20L534.35,371.77L534.93,371.95L539.69,372.36L541.66,369.86L549.84,364.06L550.29,364.06L550.26,363.57L551.99,360.88L553.92,360.24L558.41,358.48L559.08,358.23L558.93,357.97L557.79,356.57L559.39,353.01L559.74,346.92L560.27,346.67L558.74,341.85L558.73,341.75L558.56,341.66Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M552.28,387.93L557.05,380.46L557.89,369.82L556.98,367.45L550.27,364.63L550.29,364.06L549.84,364.06L541.66,369.86L539.69,372.36L534.93,371.95L534.35,371.77L534.28,371.94L536.63,377.42L540.09,381.40L542.01,385.09L545.17,386.18L545.94,387.42L546.08,387.55L546.12,387.55L546.99,387.38L551.57,388.10L551.84,388.30L552.28,387.93Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/><path d="M793.38,236.65L788.34,237.46L787.64,241.88L788.74,242.48L792.70,241.29L793.38,236.65Z M773.41,130.25L773.41,130.73L775.15,137.67L779.73,136.62L787.86,141.22L784.88,140.91L781.31,141.52L778.38,145.48L775.31,145.81L773.73,147.99L770.70,147.39L770.13,150.86L767.87,154.96L765.65,156.09L758.36,156.68L754.98,158.52L737.42,155.69L730.76,154.91L722.78,149.71L719.90,148.35L713.74,146.97L708.90,145.25L709.06,143.21L707.08,140.06L697.47,134.65L696.27,132.70L696.18,132.54L696.04,132.53L695.42,132.68L695.36,132.79L695.22,132.84L694.95,132.81L694.67,132.74L691.51,135.87L692.84,139.18L685.83,140.19L685.68,144.73L686.69,146.66L684.24,145.87L680.10,147.07L683.92,153.19L683.68,156.97L683.63,157.04L683.75,157.25L676.57,161.21L674.48,163.57L670.22,163.07L667.90,166.75L667.67,166.79L667.73,166.98L668.91,169.80L672.06,170.53L673.30,174.66L673.24,174.72L673.10,174.75L672.28,174.70L671.81,174.99L672.36,175.44L672.41,175.47L672.57,175.42L676.65,176.98L678.38,179.81L679.87,180.29L680.00,180.35L680.36,180.52L681.66,180.90L682.13,181.02L682.93,181.00L683.13,180.94L683.14,180.96L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.28,185.83L687.46,185.74L690.08,183.81L690.33,181.16L694.21,181.82L696.47,180.26L700.12,181.44L706.68,179.76L706.94,178.72L713.29,177.63L716.76,178.88L717.18,181.47L718.63,183.28L719.27,186.64L721.00,188.11L724.66,188.77L730.41,191.10L733.38,191.78L734.58,191.08L739.71,194.52L741.01,194.39L743.88,191.54L746.58,193.56L750.07,200.49L748.70,207.13L748.68,207.13L748.80,207.22L751.06,209.42L752.09,212.98L750.05,220.50L750.77,222.67L754.35,223.21L759.14,230.31L762.90,230.95L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.45,227.96L770.61,227.51L772.96,225.50L779.07,226.65L779.46,229.45L783.55,231.21L783.82,231.15L788.33,230.62L790.88,235.68L790.66,233.54L795.30,229.99L797.29,230.25L799.66,228.75L799.67,228.74L799.67,228.67L799.69,228.58L799.78,228.56L799.86,228.64L798.69,226.17L799.00,226.07L800.79,227.54L801.06,227.61L801.27,227.47L801.34,227.42L801.79,227.50L801.97,227.32L805.02,226.87L809.96,223.29L813.30,220.03L813.63,218.21L815.44,217.35L813.91,215.17L814.12,212.25L816.13,210.92L816.69,208.11L818.64,206.83L818.36,201.16L816.05,199.88L816.58,197.39L811.93,193.56L815.48,194.16L811.53,191.12L811.16,189.85L806.74,184.71L803.91,183.27L806.89,176.99L810.82,175.74L810.60,174.11L803.51,173.32L802.58,175.00L800.01,174.37L798.98,171.82L796.13,171.32L794.13,167.92L797.84,166.94L797.81,165.71L801.14,161.62L804.86,163.55L803.73,167.02L804.98,167.61L811.54,164.79L811.59,164.81L816.97,159.29L820.11,159.89L818.93,158.07L821.66,156.93L822.34,154.95L824.72,155.69L824.86,155.81L824.97,155.70L825.69,154.32L823.00,147.15L826.72,146.88L826.78,141.83L822.46,136.24L816.53,137.66L810.18,132.41L803.95,130.95L796.35,123.51L790.99,119.20L781.27,117.70L777.60,118.76L779.99,122.85L779.09,124.13L779.00,128.24L779.92,129.41L777.21,131.32L774.12,130.55L773.41,130.25Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 1000 525" height="525px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 1000 525" width="1000px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="525.010727376" padding="0.03" w="1000"><proj flip="auto" id="naturalearth" lon0="0"/><bbox h="463.56" w="884.64" x="95.31" y="-3.13"/></view></views></metadata><g class="" id="countries"><path d="M687.20,185.87L688.68,188.96L687.36,191.79L689.20,195.61L690.07,195.53L697.12,200.63L699.84,199.56L705.90,203.27L710.26,206.83L714.66,207.55L721.73,209.91L723.60,207.40L725.44,206.87L729.91,208.10L733.01,208.00L734.28,205.51L737.93,203.26L741.81,202.63L743.27,206.36L748.57,207.11L748.70,207.13L750.07,200.49L746.58,193.56L743.88,191.54L741.01,194.39L739.71,194.52L734.58,191.08L733.38,191.78L730.41,191.10L724.66,188.77L721.00,188.11L719.27,186.64L718.63,183.28L717.18,181.47L716.76,178.88L713.29,177.63L706.94,178.72L706.68,179.76L700.12,181.44L696.47,180.26L694.21,181.82L690.33,181.16L690.08,183.81L687.46,185.74L687.20,185.87Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M673.19,174.69L668.98,173.86L663.88,176.11L662.21,171.36L660.29,170.46L652.79,175.05L652.75,174.94L652.71,174.84L651.77,174.63L650.63,174.35L649.91,174.22L649.05,174.30L648.91,174.32L644.26,175.34L644.00,177.91L640.35,179.69L640.42,181.12L638.31,182.04L635.33,180.46L635.10,180.50L635.20,180.74L634.87,185.17L633.83,185.97L636.20,194.72L638.92,195.72L638.00,200.23L637.37,201.20L638.56,201.59L647.26,202.88L653.15,201.28L653.07,197.80L654.76,196.02L660.96,193.73L661.41,189.57L662.92,188.58L662.88,186.49L665.15,181.07L664.06,179.36L672.13,175.61L672.41,175.47L672.36,175.44L671.81,174.99L672.28,174.70L673.10,174.75L673.24,174.72L673.19,174.69Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M497.63,329.25L496.11,331.69L497.04,332.99L498.63,339.18L497.68,340.32L500.01,347.19L499.22,352.05L495.96,356.17L493.42,368.46L493.29,369.82L497.44,368.81L500.20,370.39L513.52,370.35L514.79,371.67L522.50,372.51L527.70,371.43L528.66,371.22L528.07,370.62L524.58,365.18L524.85,354.60L530.56,354.60L531.17,347.46L531.11,346.99L530.99,347.06L526.02,348.16L526.03,345.29L524.59,341.97L524.60,334.27L520.99,334.14L520.98,332.92L518.09,333.28L516.45,336.73L511.64,337.08L508.18,329.22L497.82,329.09L497.63,329.25Z M497.85,324.70L497.78,324.65L495.73,324.64L495.49,325.17L494.60,326.02L494.66,326.13L495.08,327.17L495.17,327.68L495.14,328.62L495.18,328.72L496.02,328.57L497.10,325.06L497.81,324.76L497.85,324.70Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M513.96,155.76L513.08,155.56L512.83,155.48L512.15,158.18L512.51,158.22L512.54,162.01L512.78,163.15L514.52,165.54L514.56,165.86L515.39,165.00L516.33,164.41L517.00,162.07L517.01,161.80L516.98,161.72L515.37,159.41L515.57,158.20L515.60,158.16L515.64,158.00L515.40,157.10L514.87,156.61L514.12,155.85L514.01,155.77L513.96,155.76Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M462.37,155.84L462.36,155.56L461.96,155.46L461.65,155.50L461.57,155.60L461.53,155.76L462.01,156.09L462.27,155.95L462.35,155.92L462.37,155.84Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M625.07,214.89L620.77,221.26L614.05,222.37L612.37,221.05L612.28,221.23L612.43,221.98L615.74,226.10L623.57,227.21L623.74,226.92L623.71,226.39L624.12,222.47L624.73,219.14L626.46,218.74L626.40,218.60L626.14,216.62L625.91,216.33L625.57,216.35L625.43,216.19L625.08,214.85L625.07,214.89Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M274.97,495.77L276.60,500.53L276.92,501.45L277.52,503.23L277.59,503.17L284.17,503.64L286.19,502.51L280.14,500.52L275.17,495.92L274.97,495.77Z M255.24,389.81L255.88,390.45L255.32,394.16L252.16,396.31L253.36,405.13L251.10,409.45L250.29,412.92L250.30,418.86L251.52,423.92L253.48,427.42L254.06,430.80L252.33,439.05L252.72,442.16L254.46,446.97L253.55,448.64L253.46,454.29L255.17,458.76L257.26,467.03L259.01,467.24L258.49,469.14L259.72,476.54L259.17,479.63L260.04,480.52L258.61,486.36L260.61,489.21L262.73,489.02L265.42,493.51L270.67,493.57L275.12,494.76L275.20,494.59L271.15,490.21L274.10,486.18L273.87,484.39L277.18,478.22L270.65,472.91L271.13,471.24L275.36,467.37L274.89,464.93L276.69,462.35L274.83,460.96L278.54,461.45L277.66,459.00L274.30,458.96L272.96,454.35L276.92,455.57L280.82,454.38L280.03,447.62L286.37,447.33L292.58,443.42L293.53,438.41L289.69,433.20L287.37,431.63L286.65,428.78L286.96,424.83L286.97,424.50L286.86,420.71L286.89,417.74L287.37,416.43L287.45,416.29L287.56,416.12L291.72,409.70L297.17,405.26L296.51,400.33L294.42,399.71L294.19,399.71L294.32,401.25L291.71,406.32L289.38,406.58L282.89,405.53L285.20,399.79L284.41,398.13L274.81,393.53L271.64,391.10L268.77,387.80L268.68,387.70L268.63,387.64L265.50,386.87L263.71,389.59L261.37,387.23L256.43,387.64L255.32,389.64L255.24,389.81Z " data-iso="ARG" data-name="Argentina" data-pop="40913584.0"/><path d="M584.92,160.23L584.86,160.28L582.78,160.51L580.75,160.85L580.61,160.88L580.67,161.04L582.63,164.75L583.61,164.68L585.04,165.73L585.16,165.89L585.44,165.83L587.24,166.63L588.15,166.45L589.32,168.56L589.47,168.83L589.63,168.87L590.03,168.71L590.53,168.73L590.47,168.41L589.31,166.27L587.57,164.98L585.01,160.39L584.92,160.23Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M645.61,483.58L643.96,485.63L646.97,485.59L649.11,484.12L645.61,483.58Z " data-iso="ATF" data-name="Fr. S. and Antarctic Lands" data-pop="140.0"/><path d="M869.03,454.28L867.11,457.98L866.20,461.88L868.01,463.94L873.54,460.93L877.95,454.85L877.34,454.26L869.03,454.28Z M896.50,350.86L895.13,346.40L891.73,352.28L892.09,353.81L888.73,365.59L886.03,370.41L881.28,370.10L871.45,361.76L873.34,357.95L873.60,355.69L877.20,352.27L874.52,352.53L870.58,350.97L865.97,349.97L862.45,348.09L864.33,351.46L858.58,352.34L855.95,355.12L852.99,359.58L853.53,361.22L849.19,360.87L845.35,357.42L841.60,359.10L838.71,362.33L837.37,365.75L836.05,366.54L833.49,370.41L832.12,366.89L829.29,370.05L829.11,372.39L825.49,377.24L822.39,379.11L818.26,379.66L817.00,380.62L808.17,383.38L803.66,386.22L801.99,388.39L801.31,386.64L797.88,394.95L798.54,402.27L796.87,399.79L796.41,403.24L797.74,412.53L796.93,417.63L797.53,421.71L794.30,428.70L793.38,428.25L796.04,433.54L800.74,433.53L807.01,429.90L811.72,429.37L816.77,429.95L822.70,425.98L827.51,423.73L829.33,423.92L836.45,421.74L844.61,421.71L848.36,423.47L851.81,429.66L851.62,432.08L857.77,428.93L857.19,432.74L854.83,434.44L857.32,434.10L858.99,431.63L860.20,432.73L858.98,435.89L861.37,434.83L860.80,443.96L863.44,445.72L866.25,445.95L868.27,447.27L873.72,443.97L876.10,446.93L883.53,443.73L887.13,443.51L889.68,441.04L892.49,436.57L897.79,430.58L907.35,420.77L912.90,411.49L913.58,405.52L914.57,402.32L914.43,396.93L911.04,392.09L911.05,388.87L908.65,388.44L908.40,383.72L907.45,380.20L901.93,376.38L896.50,350.86Z " data-iso="AUS" data-name="Australia" data-pop="21262641.0"/><path d="M503.69,134.42L498.28,133.16L497.63,134.24L495.25,133.94L495.18,133.91L495.15,133.98L493.25,138.40L490.97,137.60L488.55,138.59L483.74,138.21L483.67,138.24L483.76,138.29L483.96,138.44L483.92,138.70L483.72,139.13L483.75,139.18L483.81,139.43L483.86,139.52L483.93,139.81L483.89,139.87L484.00,139.87L486.02,140.13L486.32,140.43L486.32,140.55L486.40,140.58L491.01,139.79L490.99,140.30L494.75,141.63L495.33,141.75L495.45,141.77L497.70,142.18L498.46,141.54L501.70,140.62L501.85,140.55L502.26,140.17L502.66,138.79L503.29,138.20L504.31,136.71L504.45,136.56L504.28,136.44L503.58,135.23L503.56,135.04L503.76,134.53L503.77,134.50L503.69,134.42Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M585.16,165.89L585.22,165.95L585.33,166.08L585.40,166.15L587.58,168.38L588.90,168.73L589.47,168.83L589.32,168.56L588.15,166.45L587.24,166.63L585.44,165.83L585.16,165.89Z M588.60,158.10L588.56,158.22L589.66,160.24L589.38,160.95L585.46,159.76L584.92,160.23L585.01,160.39L587.57,164.98L589.31,166.27L590.47,168.41L590.53,168.73L590.71,168.74L594.38,165.96L595.48,166.97L597.61,170.41L597.33,169.06L598.49,164.14L600.76,163.83L594.98,158.47L594.68,158.26L593.07,160.51L588.92,158.17L588.60,158.10Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M551.74,316.71L550.39,316.76L549.17,318.13L547.11,317.67L547.06,317.86L547.06,318.00L547.70,319.05L547.66,321.31L548.14,323.50L548.21,324.04L549.18,324.06L551.15,321.65L551.39,320.97L551.76,316.81L551.82,316.72L551.74,316.71Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M466.20,124.98L465.49,125.28L464.33,125.86L469.37,129.83L470.68,129.17L473.03,131.23L473.25,131.24L473.32,131.18L473.05,130.30L473.41,129.35L474.06,129.21L474.08,129.22L474.09,129.16L474.35,127.58L473.72,127.11L473.68,127.05L473.15,127.04L473.41,127.04L473.24,126.85L472.88,126.95L472.87,126.97L469.97,124.74L468.39,125.34L466.53,124.89L466.20,124.98Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M468.38,266.04L465.12,264.34L464.94,265.29L464.87,265.65L464.79,265.86L463.62,267.36L460.39,268.89L460.31,268.88L460.23,269.27L459.89,271.05L461.69,273.98L462.55,285.95L463.15,285.80L464.59,285.56L465.89,285.41L466.08,275.84L467.11,275.34L469.17,270.88L468.45,266.60L468.57,266.37L468.38,266.04Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M457.57,254.60L455.23,254.38L447.61,259.35L447.44,260.70L444.84,260.61L444.00,263.52L441.33,265.90L440.64,270.71L440.59,270.91L440.78,271.15L444.24,273.70L445.90,272.73L449.20,274.38L449.26,274.29L449.23,274.10L448.71,270.62L449.10,268.87L456.63,268.26L457.34,268.45L458.04,268.61L459.03,268.89L459.23,269.02L459.52,268.92L460.31,268.88L460.39,268.89L463.62,267.36L464.79,265.86L464.87,265.65L464.73,265.48L462.34,263.01L460.91,261.70L458.17,255.03L458.21,254.86L457.57,254.60Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M726.22,229.39L730.13,226.20L732.77,226.58L736.66,233.79L736.71,233.78L737.27,232.07L736.83,229.66L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.22,229.39Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M520.91,149.78L520.81,149.85L521.34,154.57L520.68,154.72L520.71,156.54L520.49,156.60L520.97,157.12L522.54,158.72L522.42,159.11L522.43,160.00L522.40,160.07L522.71,160.11L529.40,160.32L531.49,159.89L531.55,158.62L531.90,158.72L531.89,158.62L535.08,157.90L536.59,157.82L536.48,157.54L534.92,156.05L535.59,155.20L537.55,152.39L537.52,151.54L532.51,150.11L531.53,150.33L521.12,149.93L520.91,149.78Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M509.42,155.72L509.47,155.71L509.34,154.27L509.83,154.06L511.22,152.27L511.30,152.27L511.46,152.09L510.88,148.92L510.52,147.55L510.42,147.56L510.24,147.57L502.45,146.84L501.35,147.92L509.17,155.63L509.42,155.72Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M530.63,108.74L528.70,109.88L528.02,109.79L526.96,110.30L526.90,110.34L526.91,110.49L527.26,111.89L525.16,113.14L524.81,114.90L519.71,116.23L519.51,116.16L519.95,117.31L520.98,120.49L519.42,121.88L520.58,124.07L520.80,124.41L520.82,124.39L530.17,123.61L538.38,124.55L541.84,122.39L542.35,122.42L542.32,122.33L542.59,119.04L541.58,116.66L538.31,111.83L538.20,110.66L534.42,110.28L531.11,109.04L530.71,108.75L530.63,108.74Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M189.39,242.10L188.69,242.20L186.49,244.15L186.45,244.46L186.31,245.33L185.40,251.36L185.76,251.32L186.43,251.36L186.40,251.12L188.51,248.70L189.23,245.53L189.18,242.51L189.39,242.10Z " data-iso="BLZ" data-name="Belize" data-pop="307899.0"/><path d="M281.67,380.22L279.82,369.76L279.62,366.36L274.12,366.30L272.73,362.27L273.30,360.39L272.46,357.43L262.11,352.70L260.16,352.59L257.64,349.98L256.61,342.84L253.02,343.51L246.52,347.79L244.37,347.26L244.01,347.27L244.44,348.05L247.11,352.82L246.23,357.04L246.98,358.79L245.99,360.32L246.09,370.73L246.09,370.74L246.18,371.14L249.71,381.45L251.61,384.87L253.18,389.81L254.75,389.93L255.24,389.81L255.32,389.64L256.43,387.64L261.37,387.23L263.71,389.59L265.50,386.87L268.63,387.64L268.68,387.70L268.73,387.52L270.39,378.41L275.58,377.16L278.35,377.12L281.47,379.68L281.47,380.27L281.67,380.22Z " data-iso="BOL" data-name="Bolivia" data-pop="9775246.0"/><path d="M304.39,308.97L301.25,309.13L301.40,314.21L305.81,313.20L308.20,309.21L304.39,308.97Z M270.32,289.58L270.41,289.62L267.74,292.84L263.68,295.32L259.95,293.96L260.00,298.96L261.95,300.22L255.49,305.68L251.96,304.61L251.17,303.79L250.59,303.95L249.73,300.71L246.98,302.01L242.01,302.05L242.40,304.37L241.30,308.09L243.38,312.42L241.85,323.15L241.80,323.28L241.79,323.51L238.70,323.69L233.45,326.25L229.77,335.14L233.75,341.76L235.82,343.88L240.52,343.24L240.76,347.48L243.72,347.28L244.01,347.27L244.37,347.26L246.52,347.79L253.02,343.51L256.61,342.84L257.64,349.98L260.16,352.59L262.11,352.70L272.46,357.43L273.30,360.39L272.73,362.27L274.12,366.30L279.62,366.36L279.82,369.76L281.67,380.22L281.47,380.27L281.56,380.53L282.79,387.25L290.25,390.79L290.63,392.54L294.70,394.21L294.15,399.19L294.19,399.71L294.42,399.71L296.51,400.33L297.17,405.26L291.72,409.70L287.56,416.12L287.45,416.29L287.66,416.55L290.07,416.29L299.76,423.01L300.79,424.61L301.81,429.07L302.93,427.84L304.84,423.22L308.42,418.84L310.30,413.32L313.09,408.69L312.00,402.20L317.57,394.44L323.33,391.27L327.46,390.42L327.38,389.54L330.76,390.24L331.84,387.97L333.89,386.85L333.83,384.12L337.15,377.09L336.89,374.80L338.48,371.45L338.50,362.67L337.95,356.70L342.64,349.78L342.93,348.35L348.15,342.23L349.99,338.18L349.77,330.98L347.97,326.47L342.95,325.69L337.21,320.26L334.26,318.37L327.21,318.12L322.22,317.42L319.90,319.36L320.12,315.48L317.27,312.99L309.31,310.67L305.11,316.52L305.38,314.34L300.64,312.53L300.48,311.50L296.48,314.01L297.99,310.87L302.34,305.17L300.07,296.44L298.56,293.04L298.26,293.65L294.32,300.26L291.75,299.91L289.11,299.89L289.03,299.85L288.89,299.84L286.67,299.44L285.10,299.26L283.35,301.25L283.26,301.22L283.13,301.27L280.39,301.34L276.98,303.57L273.65,302.02L272.94,295.34L273.89,294.11L270.60,289.51L270.32,289.58Z " data-iso="BRA" data-name="Brazil" data-pop="198739269.0"/><path d="M812.15,290.66L812.47,292.48L813.15,292.51L812.15,290.66Z M812.20,290.43L812.03,290.22L811.57,290.49L809.58,291.76L809.23,291.75L810.87,293.70L811.63,292.61L812.15,290.66L812.20,290.43Z " data-iso="BRN" data-name="Brunei" data-pop="388190.0"/><path d="M730.00,208.60L728.59,207.63L725.08,206.80L722.27,209.81L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.00,208.60Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M534.22,371.75L530.88,372.78L528.13,372.51L522.05,373.61L521.11,378.76L520.80,386.86L517.74,388.76L517.43,396.74L517.43,396.83L517.57,396.94L518.49,397.74L519.06,403.32L523.20,403.52L526.45,398.80L530.29,400.31L534.06,399.81L535.11,396.87L538.08,394.91L538.96,392.53L542.51,389.35L545.37,387.62L546.08,387.55L545.94,387.42L545.17,386.18L542.01,385.09L540.09,381.40L536.63,377.42L534.28,371.94L534.35,371.77L534.22,371.75Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M527.58,269.12L524.19,270.51L521.40,274.56L515.84,276.23L511.86,279.64L509.54,280.89L505.53,281.32L505.20,281.29L504.89,281.88L503.32,284.74L502.60,288.53L502.90,291.49L507.33,299.71L507.48,300.05L507.69,299.56L508.66,295.79L510.90,295.24L514.78,295.62L514.95,295.73L514.91,295.02L516.33,290.69L525.10,292.96L536.22,289.19L541.13,289.59L542.02,289.91L541.80,289.63L538.74,284.46L535.06,281.17L531.96,277.25L531.81,277.20L531.51,277.11L530.16,274.79L530.20,273.07L527.94,269.59L527.71,269.15L527.58,269.12Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M288.51,143.77L290.25,144.79L287.60,144.99L287.43,143.78L290.29,140.55L290.48,142.51L288.51,143.77Z M250.30,146.95L254.39,144.43L265.45,138.43L269.12,135.62L277.77,132.36L282.03,132.74L282.70,133.78L279.35,138.79L279.10,142.33L288.14,146.07L283.62,147.65L274.71,151.80L272.62,151.28L273.60,148.64L278.70,145.91L279.53,144.16L271.19,146.59L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L250.30,146.95Z M114.91,127.43L118.59,128.40L119.01,130.87L121.27,134.15L118.30,134.79L117.64,133.26L114.17,131.65L115.69,130.85L114.91,127.43Z M308.97,124.35L303.83,130.21L306.97,129.76L308.13,132.20L311.97,131.99L312.79,134.91L310.69,136.35L313.16,137.90L311.17,141.28L308.83,139.77L309.54,137.26L305.06,138.45L302.03,138.00L295.44,138.08L295.16,136.81L303.45,127.07L307.48,124.24L308.97,124.35Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.34,112.76L115.65,113.20L115.01,113.43L114.95,113.35Z M251.80,79.21L252.86,78.63L257.31,80.90L260.71,83.80L255.32,84.01L248.15,85.72L246.95,84.11L243.65,84.53L246.03,83.01L250.64,77.43L251.80,79.21Z M279.01,69.75L279.50,71.49L278.15,72.68L274.17,72.98L274.58,71.19L279.01,69.75Z M230.41,65.74L232.45,66.65L229.94,69.33L225.36,67.89L227.68,65.96L230.41,65.74Z M203.00,134.43L202.99,134.44L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.51,133.00L122.99,129.14L120.68,130.41L118.87,127.96L115.29,126.48L115.26,124.12L116.62,121.08L114.67,118.17L114.56,115.04L118.21,111.64L118.99,109.62L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L129.17,65.77L135.60,67.80L140.28,66.75L146.54,66.37L146.70,67.06L161.61,63.89L163.21,66.27L168.70,66.55L173.45,65.22L180.75,67.56L186.71,67.87L188.51,69.80L185.48,70.33L187.37,71.63L190.78,71.70L196.30,70.87L200.21,73.41L199.94,74.98L202.66,70.63L201.03,69.89L210.47,70.54L212.98,70.38L223.94,70.84L227.19,69.11L230.71,70.01L228.63,72.10L237.67,68.84L235.94,67.81L239.19,66.23L234.18,65.26L233.92,63.69L235.65,61.47L240.31,59.01L244.14,60.90L244.44,63.57L241.07,65.67L246.17,66.34L244.61,69.95L249.23,66.88L250.74,68.57L248.89,70.23L249.58,73.24L254.19,70.59L257.76,66.99L260.61,65.12L267.06,67.32L263.21,73.59L253.59,76.06L249.63,75.32L250.80,76.53L246.22,78.92L240.88,77.72L242.13,78.94L246.48,79.69L240.50,83.15L234.43,84.50L232.11,84.13L233.40,86.44L229.09,87.08L226.42,88.37L218.97,94.40L215.88,99.06L219.80,100.19L218.97,105.21L222.56,105.09L241.81,112.35L239.20,119.12L241.64,125.14L243.44,125.79L248.20,121.90L248.43,113.60L250.67,112.98L257.83,109.24L258.89,108.02L260.03,103.71L258.36,99.17L261.31,97.42L263.14,90.09L265.25,87.85L272.00,89.18L274.99,88.09L278.40,92.08L283.00,92.61L281.56,95.77L279.77,96.11L278.59,100.07L283.76,101.06L283.91,102.55L290.67,99.25L293.76,95.20L297.06,100.36L295.48,101.08L299.68,110.14L298.82,112.38L306.23,113.76L299.03,116.76L298.52,117.69L306.29,115.40L306.30,116.92L309.17,117.35L309.00,121.94L306.19,123.85L300.56,125.18L296.82,127.94L290.74,129.28L289.19,128.68L279.51,128.62L276.52,129.66L274.67,131.89L267.56,135.71L263.77,135.00L261.29,140.79L255.94,142.84L251.05,146.37L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L203.00,134.43Z M197.98,56.99L202.27,55.82L204.95,57.68L209.17,55.85L210.26,59.46L212.67,59.03L213.46,55.49L217.64,55.23L218.92,56.87L217.62,60.95L223.03,64.34L222.42,65.53L219.80,65.13L216.99,68.02L214.51,68.27L208.74,66.35L200.10,68.67L192.14,69.25L190.68,66.93L186.15,66.67L184.98,65.26L187.19,64.14L198.15,63.33L189.53,62.91L188.07,61.05L192.88,60.06L186.29,59.76L191.73,56.29L199.72,54.72L197.98,56.99Z M279.17,53.91L284.80,54.90L285.30,56.26L281.66,56.10L276.05,55.02L276.23,53.86L279.17,53.91Z M258.27,61.65L262.56,61.40L263.77,59.95L263.25,58.09L266.26,54.83L272.31,53.69L274.61,53.79L275.91,56.47L272.89,59.00L279.70,57.67L280.92,56.71L285.64,57.04L288.30,58.61L285.22,61.00L290.83,59.67L293.79,60.31L296.31,62.14L299.50,63.10L297.40,64.81L299.17,65.36L297.11,68.16L299.35,70.54L305.25,71.89L309.66,73.75L309.00,75.93L307.47,75.64L303.99,79.31L293.07,76.13L295.39,80.61L295.99,80.12L299.35,83.84L297.75,86.66L288.60,83.96L292.50,87.62L292.50,89.97L286.20,88.25L280.43,85.03L282.17,84.51L278.65,81.37L269.73,82.43L267.11,81.23L269.74,79.52L277.52,78.78L278.80,76.26L282.81,74.65L285.31,71.78L283.91,68.59L277.92,67.76L279.86,66.52L277.25,63.95L267.94,64.84L257.47,64.35L257.68,63.28L252.12,63.10L251.77,61.50L256.86,61.72L251.93,60.43L256.34,55.49L259.69,54.08L266.97,53.46L263.71,55.05L260.80,59.02L262.46,60.50L258.27,61.65Z M233.93,53.07L238.97,54.58L237.02,55.69L237.60,58.30L232.47,60.37L225.16,56.62L226.67,55.62L228.18,56.54L229.51,54.55L233.93,53.07Z M249.67,52.45L255.35,53.29L249.09,56.52L245.39,57.09L243.23,58.64L241.38,56.44L242.83,54.19L246.03,52.67L249.67,52.45Z M190.26,52.59L194.11,52.15L198.36,54.35L184.13,58.10L181.99,59.81L174.29,61.32L173.96,59.68L171.22,58.32L180.22,53.41L179.86,51.92L190.26,52.59Z M244.84,45.97L241.80,49.71L237.15,50.11L237.77,48.47L234.58,48.36L236.65,46.09L238.83,47.47L240.09,45.51L244.84,45.97Z M220.72,47.10L224.16,47.20L223.11,49.81L217.25,50.18L204.98,51.68L205.21,50.60L212.36,49.52L208.25,49.73L206.58,48.85L203.50,50.07L198.21,49.49L200.17,48.25L207.79,45.86L212.97,48.16L217.76,48.62L220.93,45.02L220.72,47.10Z M253.27,44.75L259.59,45.43L260.16,47.11L262.85,48.21L269.42,48.43L273.92,47.78L280.89,48.69L282.17,49.33L279.48,51.04L274.37,51.38L272.84,50.39L271.20,51.30L264.83,51.52L254.41,51.06L255.33,48.22L249.66,46.53L247.42,45.05L253.27,44.75Z M208.50,43.52L205.87,45.23L200.49,46.14L202.02,45.10L191.30,47.21L190.47,46.28L200.70,43.68L208.50,43.52Z M221.52,41.54L221.17,42.57L216.20,43.57L216.04,41.97L221.52,41.54Z M253.02,40.40L254.10,41.83L249.57,42.33L248.87,41.11L251.15,39.74L253.02,40.40Z M239.78,38.36L245.43,39.89L245.53,41.90L240.37,41.11L235.06,41.10L238.11,39.78L235.68,39.63L239.78,38.36Z M268.67,33.83L273.79,35.58L278.42,38.44L272.00,39.08L268.02,41.30L262.42,41.31L258.43,39.36L262.08,38.70L256.41,37.37L255.92,36.28L264.40,33.36L268.67,33.83Z M318.66,29.50L324.60,29.69L322.10,30.26L330.56,30.49L333.67,31.14L323.11,32.97L320.21,34.05L310.41,36.44L296.03,37.86L300.05,38.57L292.29,38.97L299.24,40.17L290.54,41.96L283.44,43.84L288.26,44.69L285.67,46.01L280.92,45.84L271.85,46.42L262.99,45.95L270.67,42.10L270.98,41.46L280.39,38.76L278.16,35.82L282.70,35.97L286.76,37.50L285.02,35.93L298.96,34.48L296.21,33.88L291.98,34.73L282.57,35.31L273.50,34.36L274.22,32.63L270.62,32.52L279.02,31.56L284.47,31.68L286.35,30.76L295.96,32.12L294.59,30.16L305.54,30.40L306.23,29.43L318.66,29.50Z " data-iso="CAN" data-name="Canada" data-pop="33487208.0"/><path d="M483.18,137.98L481.47,137.63L480.38,137.95L478.66,138.08L478.43,138.00L478.10,138.16L474.37,143.06L475.70,142.04L476.92,143.72L476.97,143.84L477.07,143.92L480.85,142.17L482.52,144.12L483.60,142.07L486.21,141.00L486.32,140.55L486.32,140.43L486.02,140.13L484.00,139.87L483.89,139.87L483.68,139.85L483.64,139.86L483.61,139.73L483.61,139.47L483.72,139.13L483.92,138.70L483.96,138.44L483.76,138.29L483.67,138.24L483.18,137.98Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M277.52,503.23L276.92,501.45L276.60,500.53L274.97,495.77L274.87,495.70L272.69,495.21L271.00,497.99L272.41,499.97L275.59,502.23L269.54,501.86L277.13,503.23L277.52,503.23Z M255.15,483.71L253.52,482.28L252.70,484.45L255.39,486.70L255.15,483.71Z M250.75,463.37L251.29,461.92L248.62,458.60L248.91,462.80L250.75,463.37Z M246.09,370.74L245.88,370.98L245.38,372.47L245.30,372.84L243.64,373.75L243.83,373.93L245.93,385.04L245.96,392.80L246.63,398.26L246.05,410.84L246.70,416.13L246.03,416.80L248.26,425.18L247.72,426.74L246.22,441.56L247.78,451.35L247.92,454.58L250.71,457.82L251.72,456.98L252.97,462.31L253.01,466.28L254.96,467.22L253.91,472.68L252.33,471.73L249.81,472.29L254.46,479.62L254.04,479.77L258.98,489.91L255.31,489.02L261.21,493.68L263.34,492.64L261.46,495.80L267.25,495.61L264.14,497.95L269.92,498.90L269.35,496.17L273.51,494.44L275.12,494.76L270.67,493.57L265.42,493.51L262.73,489.02L260.61,489.21L258.61,486.36L260.04,480.52L259.17,479.63L259.72,476.54L258.49,469.14L259.01,467.24L257.26,467.03L255.17,458.76L253.46,454.29L253.55,448.64L254.46,446.97L252.72,442.16L252.33,439.05L254.06,430.80L253.48,427.42L251.52,423.92L250.30,418.86L250.29,412.92L251.10,409.45L253.36,405.13L252.16,396.31L255.32,394.16L255.88,390.45L255.24,389.81L254.75,389.93L253.18,389.81L251.61,384.87L249.71,381.45L246.18,371.14L246.09,370.74Z " data-iso="CHL" data-name="Chile" data-pop="16601707.0"/><path d="M447.64,289.77L447.54,289.89L447.95,289.98L448.03,289.84L447.64,289.77Z M433.01,271.85L432.93,271.99L433.64,275.72L433.10,276.77L431.60,281.01L431.43,281.16L431.49,281.20L432.02,285.59L433.25,285.89L434.28,292.62L434.65,292.53L440.40,289.98L445.62,289.51L448.22,289.76L448.24,289.83L448.95,289.13L447.57,284.82L449.55,279.29L449.29,274.47L449.26,274.29L449.20,274.38L445.90,272.73L444.24,273.70L440.78,271.15L440.59,270.91L440.49,270.86L438.39,271.50L438.33,269.85L433.10,271.85L433.01,271.85Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M505.36,281.00L500.59,273.91L501.30,272.51L505.64,272.41L503.04,263.49L501.16,261.43L500.61,261.42L500.93,263.09L502.20,266.25L499.60,269.31L498.18,273.70L495.70,277.46L494.53,281.05L491.68,284.92L489.25,283.60L485.27,287.02L483.93,291.17L483.97,291.19L486.26,294.08L488.24,297.16L487.85,299.09L487.79,299.93L488.00,300.25L488.34,300.41L491.79,300.41L492.50,300.41L492.54,300.18L493.21,299.93L498.06,300.09L498.49,300.21L498.57,300.44L499.31,300.44L502.53,300.30L507.34,302.00L507.48,300.08L507.48,300.05L507.33,299.71L502.90,291.49L502.60,288.53L503.32,284.74L504.89,281.88L505.20,281.29L505.36,281.00Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M541.13,289.59L536.22,289.19L525.10,292.96L516.33,290.69L514.91,295.02L514.95,295.73L514.99,296.36L512.25,309.14L507.58,315.93L503.52,324.95L502.23,325.48L497.90,324.58L497.85,324.70L497.81,324.76L497.10,325.06L496.02,328.57L495.18,328.72L495.27,328.89L495.49,329.20L497.62,328.99L497.82,329.09L508.18,329.22L511.64,337.08L516.45,336.73L518.09,333.28L520.98,332.92L520.99,334.14L524.60,334.27L524.59,341.97L526.03,345.29L526.02,348.16L530.99,347.06L531.11,346.99L531.22,347.01L532.20,348.77L539.49,350.94L540.85,349.52L542.27,351.98L548.74,355.92L548.87,351.58L546.61,352.27L544.74,349.94L545.51,343.27L544.85,341.28L551.62,337.51L552.16,337.41L552.07,337.09L550.26,332.85L548.00,325.94L548.21,324.21L548.21,324.04L548.14,323.50L547.66,321.31L547.70,319.05L547.06,318.00L547.06,317.86L546.78,317.73L546.58,316.89L547.43,315.99L548.70,313.19L548.82,313.11L548.83,313.00L549.90,305.75L553.03,302.14L553.74,300.05L552.36,299.39L552.84,295.79L552.67,295.69L552.60,295.54L549.65,292.70L546.78,292.13L542.13,290.16L542.02,289.91L541.13,289.59Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M514.78,295.62L510.90,295.24L508.66,295.79L507.69,299.56L507.48,300.05L507.48,300.08L507.34,302.00L502.53,300.30L499.31,300.44L498.57,300.44L498.55,300.68L501.49,303.43L500.40,307.47L500.97,309.12L501.36,316.56L500.72,317.04L497.03,315.05L493.35,317.42L494.35,320.12L491.87,322.14L492.59,322.90L493.86,324.45L493.99,325.13L494.55,325.94L494.60,326.02L495.49,325.17L495.73,324.64L497.78,324.65L497.85,324.70L497.90,324.58L502.23,325.48L503.52,324.95L507.58,315.93L512.25,309.14L514.99,296.36L514.95,295.73L514.78,295.62Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M219.59,277.23L219.94,279.82L217.71,282.34L218.00,282.67L219.25,286.75L219.18,291.75L219.84,294.18L215.98,299.19L214.11,302.71L214.20,302.96L220.44,307.27L224.65,308.29L225.21,308.53L225.39,308.30L234.18,316.82L236.75,316.09L241.39,317.80L240.03,321.96L241.64,323.01L241.80,323.28L241.85,323.15L243.38,312.42L241.30,308.09L242.40,304.37L242.01,302.05L246.98,302.01L249.73,300.71L250.59,303.95L251.17,303.79L251.11,303.55L249.09,298.55L249.79,296.29L248.35,291.49L249.77,286.64L243.66,286.29L241.70,283.38L234.55,281.53L234.85,278.56L233.81,270.68L236.69,266.71L238.88,265.78L239.00,265.58L239.17,264.08L236.34,265.07L232.63,267.80L229.90,267.91L229.33,269.53L226.97,269.32L225.01,273.40L220.84,279.06L219.67,277.31L219.59,277.23Z " data-iso="COL" data-name="Colombia" data-pop="45644023.0"/><path d="M194.42,268.71L193.99,271.01L196.39,272.02L202.35,278.93L202.54,279.33L203.14,276.18L202.59,275.12L203.82,273.95L203.69,273.81L202.21,272.29L201.32,270.77L200.91,269.30L200.84,269.16L199.94,269.81L197.83,268.70L194.43,268.64L194.42,268.71Z " data-iso="CRI" data-name="Costa Rica" data-pop="4253877.0"/><path d="M211.35,225.27L204.42,227.06L202.60,229.34L211.44,227.32L210.88,228.73L214.78,229.22L220.34,232.84L223.96,234.32L222.89,237.12L232.71,236.34L228.73,232.64L225.26,231.39L220.41,228.13L211.35,225.27Z " data-iso="CUB" data-name="Cuba" data-pop="11451652.0"/><path d="M556.06,182.22L554.62,181.52L553.10,181.32L552.69,182.15L552.52,182.11L554.59,182.22L555.37,182.66L556.30,182.49L556.06,182.22Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M552.34,182.07L552.08,183.78L552.64,183.98L556.37,182.56L556.30,182.49L555.37,182.66L554.59,182.22L552.52,182.11L552.34,182.07Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M497.36,126.74L491.40,128.28L490.71,129.01L492.33,131.96L495.04,133.74L495.18,133.91L495.25,133.94L497.63,134.24L498.28,133.16L503.69,134.42L503.77,134.50L503.83,134.23L506.07,133.35L506.72,132.88L508.55,131.34L508.62,131.33L508.60,131.23L507.65,129.98L503.35,128.20L502.75,129.24L498.64,126.60L497.62,126.67L497.39,126.68L497.36,126.74Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M494.56,115.84L493.98,115.52L494.63,116.42L494.95,116.38L495.07,116.39L495.01,116.23L495.04,116.12L494.56,115.84Z M480.33,113.28L479.37,117.83L476.49,118.24L476.62,118.39L473.46,123.58L474.15,124.51L473.82,126.52L473.68,127.05L473.72,127.11L474.35,127.58L474.09,129.16L474.08,129.22L474.06,129.31L474.07,129.52L474.77,131.33L474.76,131.53L474.86,131.51L479.71,133.50L478.29,137.95L478.43,138.00L478.66,138.08L480.38,137.95L481.47,137.63L483.18,137.98L483.67,138.24L483.74,138.21L488.55,138.59L490.97,137.60L493.25,138.40L495.15,133.98L495.18,133.91L495.04,133.74L492.33,131.96L490.71,129.01L491.40,128.28L497.36,126.74L497.39,126.68L497.40,126.63L496.60,123.34L496.94,122.48L495.22,116.87L495.20,116.86L491.81,114.56L490.61,114.37L483.11,113.23L483.09,113.17L481.64,113.10L480.89,112.93L480.28,112.90L480.33,113.28Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M589.93,266.84L590.21,265.39L590.60,264.60L589.67,262.92L589.62,262.75L588.59,263.77L588.30,263.94L587.48,263.51L587.39,263.61L587.11,264.12L585.82,268.93L586.06,269.02L589.03,268.87L589.27,268.86L589.63,268.17L589.95,267.55L590.20,267.07L589.93,266.84Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M490.30,109.94L489.31,108.83L487.06,110.05L488.67,113.34L490.30,109.94Z M480.28,112.90L480.89,112.93L481.64,113.10L483.09,113.17L482.99,112.82L485.66,107.48L484.15,105.89L480.24,112.63L480.28,112.90Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M239.58,243.78L248.94,243.00L250.05,241.61L246.70,239.45L245.55,237.80L240.19,237.58L240.05,237.64L238.98,241.61L239.42,243.66L239.58,243.78Z " data-iso="DOM" data-name="Dominican Rep." data-pop="9650054.0"/><path d="M480.99,175.87L468.45,175.92L460.36,177.54L451.69,182.42L451.10,182.35L453.81,193.18L447.44,194.56L445.81,197.41L441.91,200.48L438.33,201.38L431.81,205.40L431.74,208.24L431.72,209.12L431.71,209.72L431.69,210.45L432.25,210.85L438.90,215.62L439.46,216.02L442.43,218.18L443.10,218.69L444.01,219.37L467.25,237.38L469.41,239.91L470.37,239.70L471.03,239.55L478.70,234.94L480.17,233.49L491.99,225.09L493.52,224.00L493.22,223.36L489.59,220.28L485.77,214.83L485.37,200.05L485.65,199.87L485.45,199.02L479.43,186.92L481.69,182.42L481.43,179.85L482.28,175.78L480.99,175.87Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M214.29,303.53L210.39,305.35L210.58,306.69L208.07,311.63L208.13,316.54L209.86,317.82L211.51,317.02L209.85,320.20L209.78,320.25L209.46,323.17L214.94,324.44L217.12,319.03L220.97,317.30L224.35,313.62L225.32,311.55L225.03,308.66L225.21,308.53L224.65,308.29L220.44,307.27L214.20,302.96L214.29,303.53Z " data-iso="ECU" data-name="Ecuador" data-pop="14573101.0"/><path d="M558.10,196.00L553.33,196.73L548.91,194.93L544.24,197.36L537.70,195.74L531.71,195.18L531.46,194.74L530.52,200.22L531.53,203.63L532.86,228.66L532.89,229.46L534.05,229.46L549.03,229.46L552.36,229.46L568.76,229.46L568.75,229.39L565.00,226.05L565.01,222.49L563.10,220.56L558.84,212.74L557.27,208.25L554.75,205.05L553.51,200.96L556.19,205.84L557.86,207.71L560.68,202.73L560.83,202.57L559.88,200.00L559.42,199.09L558.65,197.11L558.34,196.35L558.21,196.04L558.16,195.94L558.10,196.00Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M569.20,257.21L569.26,257.20L572.35,257.61L573.27,255.08L575.23,256.61L579.04,256.34L582.20,257.61L587.11,263.24L587.39,263.61L587.48,263.51L588.30,263.94L588.59,263.77L589.62,262.75L589.50,262.33L581.66,254.97L578.10,252.64L575.94,245.85L574.90,243.78L571.56,246.99L570.18,247.31L569.06,256.18L569.20,257.21Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M432.78,157.92L437.71,157.89L437.87,165.05L436.30,165.97L436.21,174.91L436.88,174.80L442.14,178.29L444.95,176.56L449.50,176.57L454.85,173.51L457.99,169.02L457.33,165.27L459.58,161.90L466.04,158.54L466.67,156.40L466.59,156.18L464.78,156.48L464.24,156.32L462.78,156.09L462.35,155.92L462.27,155.95L462.01,156.09L461.53,155.76L461.57,155.60L461.34,155.26L456.71,154.78L452.52,152.72L452.42,152.74L441.18,151.88L432.67,152.98L431.80,153.55L432.57,157.97L432.78,157.92Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M520.00,103.00L521.93,102.37L523.78,103.01L527.89,104.15L527.95,104.14L527.94,104.06L528.30,103.24L527.53,100.16L528.62,97.70L528.60,97.75L522.09,97.58L517.29,98.64L520.00,102.87L520.00,103.00Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M569.20,257.21L569.00,258.17L564.73,269.00L563.66,269.29L562.28,274.17L562.28,274.36L562.28,274.51L559.13,279.76L559.35,280.21L566.19,288.48L566.24,288.54L566.23,288.66L568.48,292.07L572.12,292.96L575.02,295.13L579.37,295.81L583.25,292.90L586.27,293.95L586.72,293.95L586.81,293.76L590.51,291.57L596.00,290.66L604.45,280.44L605.18,279.59L604.13,279.59L591.20,274.65L590.34,273.26L589.23,269.00L589.27,268.86L589.03,268.87L586.06,269.02L585.82,268.93L587.11,264.12L587.39,263.61L587.11,263.24L582.20,257.61L579.04,256.34L575.23,256.61L573.27,255.08L572.35,257.61L569.26,257.20L569.20,257.21Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M505.89,67.58L506.55,67.75L512.66,70.33L514.90,74.39L514.36,75.72L515.81,77.51L516.00,77.49L518.56,78.32L518.80,79.58L512.51,85.36L510.65,85.70L511.14,92.58L515.81,96.62L516.85,96.06L527.43,94.28L527.51,94.27L534.33,88.51L534.39,85.69L531.33,84.16L529.46,79.90L529.61,76.83L527.08,74.27L524.91,69.66L525.31,67.66L525.45,67.62L525.26,67.50L525.46,65.66L522.31,64.48L516.25,68.92L511.81,68.68L508.12,66.87L506.00,67.48L505.89,67.58Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M299.63,491.04L298.34,493.29L299.19,494.60L301.58,493.08L299.63,491.04Z " data-iso="FLK" data-name="Falkland Is." data-pop="3140.0"/><path d="M290.64,289.02L289.69,290.25L289.07,299.81L289.03,299.85L289.11,299.89L291.75,299.91L294.32,300.26L298.26,293.65L298.25,293.52L294.92,289.32L290.86,288.83L290.64,289.02Z M484.19,154.85L481.69,156.93L483.72,159.63L484.19,154.85Z M464.12,125.96L462.69,126.22L461.74,128.63L458.05,130.67L457.10,132.07L452.52,130.73L453.63,134.35L444.67,134.70L446.40,137.11L452.12,138.99L453.71,142.35L454.08,148.27L452.98,152.61L452.52,152.72L456.71,154.78L461.34,155.26L461.57,155.60L461.65,155.50L461.96,155.46L462.36,155.56L462.37,155.84L462.35,155.92L462.78,156.09L464.24,156.32L464.78,156.48L466.59,156.18L466.55,156.07L466.10,154.74L469.21,152.38L473.46,153.53L475.98,153.46L477.87,151.70L478.19,151.57L478.29,151.43L478.35,151.47L478.36,151.51L478.51,151.45L478.13,150.17L476.99,149.64L476.76,144.04L476.97,143.84L476.92,143.72L475.70,142.04L474.37,143.06L478.10,138.16L478.43,138.00L478.29,137.95L479.71,133.50L474.86,131.51L474.76,131.53L474.58,131.45L474.15,131.42L474.03,131.53L473.34,131.35L473.25,131.24L473.03,131.23L470.68,129.17L469.37,129.83L464.33,125.86L464.12,125.96Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M498.49,300.21L498.06,300.09L493.21,299.93L492.54,300.18L492.50,300.41L492.51,301.24L492.53,304.58L487.15,304.47L487.10,304.61L487.78,307.99L485.16,310.61L487.40,316.78L491.57,321.81L491.87,322.14L494.35,320.12L493.35,317.42L497.03,315.05L500.72,317.04L501.36,316.56L500.97,309.12L500.40,307.47L501.49,303.43L498.55,300.68L498.57,300.44L498.49,300.21Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M558.61,196.04L558.60,195.79L558.90,194.99L558.67,195.36L558.16,195.94L558.21,196.04L558.34,196.35L558.61,196.04Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M438.65,112.27L436.41,114.22L436.86,115.23L441.16,115.65L441.42,115.75L441.52,111.85L438.75,112.39L438.65,112.27Z M449.60,100.88L443.67,102.35L444.26,102.89L443.03,111.27L444.96,108.95L444.30,112.62L448.55,112.70L449.44,117.61L446.66,119.64L446.30,121.81L443.48,123.17L448.72,124.85L442.50,128.96L447.61,128.81L453.74,126.55L459.39,126.59L461.22,125.66L460.96,123.29L461.95,120.19L456.77,117.00L457.14,115.68L450.35,107.61L452.75,103.86L446.91,103.97L449.60,100.88Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M588.54,158.05L586.27,156.02L574.18,153.39L571.38,152.27L569.57,152.68L570.23,153.06L573.13,154.77L573.99,155.09L575.36,158.76L574.92,159.42L575.85,159.73L580.60,160.82L580.61,160.88L580.75,160.85L582.78,160.51L584.86,160.28L584.92,160.23L585.46,159.76L589.38,160.95L589.66,160.24L588.56,158.22L588.60,158.10L588.54,158.05Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M456.63,268.26L449.10,268.87L448.71,270.62L449.23,274.10L449.26,274.29L449.29,274.47L449.55,279.29L447.57,284.82L448.95,289.13L448.24,289.83L448.03,289.84L447.95,289.98L448.05,290.01L451.38,291.15L460.48,287.41L460.96,286.55L461.21,286.41L459.38,284.08L459.16,274.59L457.53,268.66L457.34,268.45L456.63,268.26Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M422.44,263.79L419.14,263.94L416.48,262.91L415.49,262.87L415.48,263.16L414.24,266.53L412.21,267.41L411.38,269.07L411.35,269.45L413.24,271.55L414.02,271.98L416.65,275.73L416.68,275.83L419.37,272.80L420.96,272.46L424.48,274.63L425.68,277.81L425.92,277.85L426.07,277.84L428.27,278.35L428.71,280.64L431.32,281.06L431.43,281.16L431.60,281.01L433.10,276.77L433.64,275.72L432.93,271.99L433.01,271.85L433.06,271.61L430.51,265.56L423.03,265.27L422.56,263.93L422.65,263.84L422.44,263.79Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M406.96,260.07L407.50,260.48L406.21,261.17L406.22,261.48L409.14,260.54L415.17,260.51L414.26,259.79L406.87,259.60L406.96,260.07Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M415.49,262.87L414.47,262.87L411.00,262.85L409.02,263.72L406.34,264.01L407.17,264.55L408.07,265.58L410.22,267.08L411.23,268.82L411.38,269.07L412.21,267.41L414.24,266.53L415.48,263.16L415.49,262.87Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M492.50,300.41L491.79,300.41L488.34,300.41L488.00,300.25L487.79,299.93L487.72,300.77L487.12,302.65L486.85,303.03L487.17,304.39L487.15,304.47L492.53,304.58L492.51,301.24L492.50,300.41Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M531.90,158.72L531.55,158.62L531.49,159.89L529.40,160.32L522.71,160.11L522.40,160.07L522.24,160.07L519.29,161.44L517.39,161.78L517.01,161.80L517.00,162.07L516.33,164.41L515.39,165.00L514.56,165.86L514.86,166.11L519.12,170.82L518.47,172.58L522.49,177.10L523.83,175.50L524.15,172.12L525.72,172.39L522.19,168.79L523.13,168.58L521.83,163.06L523.94,164.51L526.63,163.97L524.97,162.16L531.35,162.09L531.44,162.24L532.24,161.28L532.09,160.42L532.16,158.79L531.90,158.72Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M334.97,64.84L331.60,63.72L332.21,66.91L334.97,64.84Z M398.22,28.32L382.74,28.46L366.78,29.83L374.42,30.02L367.46,31.19L365.37,32.18L355.11,30.70L352.60,31.60L350.92,31.04L339.51,32.57L332.67,32.49L331.60,33.70L319.49,35.30L323.12,36.44L319.44,38.46L311.45,39.55L302.11,41.29L308.25,43.24L314.97,42.98L314.31,43.56L303.68,44.31L309.21,45.56L308.53,47.08L318.17,46.66L319.58,46.29L329.40,48.64L328.49,49.07L332.50,51.41L332.14,55.85L333.65,55.90L330.70,60.42L332.98,60.54L335.54,59.04L339.43,61.33L337.80,63.16L331.70,62.70L340.39,65.20L338.01,67.05L332.74,68.87L331.83,74.26L328.63,76.42L334.70,74.26L329.66,76.98L334.01,79.40L334.63,80.99L333.09,88.23L336.38,93.40L342.24,92.46L342.54,94.26L346.50,96.04L348.61,95.82L351.97,90.57L352.38,87.63L357.33,84.65L359.55,81.66L357.96,80.44L360.38,78.39L364.22,78.07L367.36,75.82L367.54,77.56L373.30,76.04L381.44,70.76L381.57,69.84L385.24,70.24L389.50,69.63L397.58,67.62L400.88,65.92L405.83,64.29L394.87,64.07L390.37,63.29L392.18,61.70L398.62,60.89L401.52,61.25L403.58,63.32L407.70,62.90L407.77,61.07L400.31,57.57L397.20,56.63L400.49,56.02L404.81,57.77L407.42,57.55L407.76,56.04L403.81,54.65L403.43,53.59L407.60,55.02L411.48,54.37L411.96,53.35L408.05,52.32L414.16,52.14L410.82,49.87L414.69,49.42L413.66,46.65L415.26,44.89L410.91,42.37L413.01,40.34L417.55,38.63L415.76,36.42L422.43,36.12L427.78,34.17L433.36,32.77L425.89,32.17L421.28,33.12L416.65,32.80L410.48,34.36L414.43,32.49L413.80,31.61L409.38,32.38L406.49,31.78L397.64,31.41L409.31,31.12L412.37,30.00L405.37,29.32L393.68,29.35L405.39,29.05L398.22,28.32Z " data-iso="GRL" data-name="Greenland" data-pop="57600.0"/><path d="M185.81,244.46L180.80,245.16L180.14,247.47L181.54,250.71L177.84,250.71L175.69,256.17L176.84,257.31L178.79,258.39L180.44,258.38L180.82,258.48L181.94,259.07L182.14,258.47L184.36,256.60L184.42,256.64L184.51,256.48L185.13,255.73L188.39,251.94L187.37,251.14L187.50,251.50L187.26,251.81L186.59,251.43L186.43,251.36L185.76,251.32L185.40,251.36L186.31,245.33L186.45,244.46L185.81,244.46Z " data-iso="GTM" data-name="Guatemala" data-pop="13276517.0"/><path d="M281.26,288.28L280.90,285.76L278.98,283.92L277.01,284.93L277.48,283.02L276.55,280.53L273.06,277.68L272.95,277.62L273.42,278.69L270.65,281.24L271.82,282.83L270.56,283.98L269.69,288.74L270.32,289.58L270.60,289.51L273.89,294.11L272.94,295.34L273.65,302.02L276.98,303.57L280.39,301.34L283.13,301.27L283.26,301.22L283.14,301.10L280.79,296.10L279.87,296.12L279.00,290.94L281.29,288.34L281.26,288.28Z " data-iso="GUY" data-name="Guyana" data-pop="772298.0"/><path d="M801.79,227.50L801.34,227.42L801.27,227.47L801.06,227.61L801.05,227.71L800.76,227.91L801.80,227.52L801.79,227.50Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M188.39,251.94L185.13,255.73L184.51,256.48L184.42,256.64L184.50,256.65L187.97,258.17L189.00,258.52L188.80,260.28L188.93,260.36L189.44,260.33L189.78,260.44L190.17,261.40L190.12,261.78L192.15,260.58L192.23,258.97L202.43,254.63L203.59,254.57L203.40,254.40L195.96,250.96L192.44,251.82L188.68,252.04L188.39,251.94Z " data-iso="HND" data-name="Honduras" data-pop="7792854.0"/><path d="M509.68,156.17L509.56,156.00L509.44,155.85L509.42,155.72L509.17,155.63L507.35,154.69L505.89,154.07L509.14,155.84L509.68,156.17Z M503.10,141.83L502.85,141.74L500.74,142.87L500.80,144.16L495.19,145.28L495.03,145.40L503.46,152.24L504.92,152.77L506.80,154.30L501.35,147.92L502.45,146.84L510.24,147.57L510.42,147.56L510.38,147.43L511.05,146.12L510.27,145.69L509.85,143.90L509.85,143.82L509.84,143.82L507.29,144.39L506.85,144.32L503.26,141.88L503.10,141.83Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M239.42,243.66L238.98,241.61L240.05,237.64L239.87,237.71L235.03,237.62L237.14,238.63L237.65,241.80L231.35,242.19L233.20,243.36L239.19,243.37L239.42,243.66Z " data-iso="HTI" data-name="Haiti" data-pop="9035536.0"/><path d="M517.90,135.21L513.84,134.67L508.83,137.32L504.53,136.54L504.45,136.56L504.31,136.71L503.29,138.20L502.66,138.79L502.26,140.17L501.85,140.55L502.37,140.57L502.55,141.05L503.07,141.75L503.10,141.83L503.26,141.88L506.85,144.32L507.29,144.39L509.84,143.82L509.85,143.82L509.91,143.82L510.50,143.62L511.33,143.27L513.40,143.14L513.50,143.20L513.60,143.11L515.66,142.73L517.90,138.31L520.09,136.85L520.15,136.77L520.09,136.72L519.08,135.87L518.60,135.69L518.21,135.14L517.95,135.17L517.90,135.21Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M826.42,341.63L823.39,341.87L826.55,344.59L828.61,344.26L826.42,341.63Z M841.55,340.18L840.96,340.52L840.75,340.71L840.52,340.85L840.11,340.98L839.97,341.42L839.53,341.82L838.80,341.52L838.61,341.63L837.56,344.15L839.72,344.40L841.68,342.32L841.92,342.13L842.12,340.97L842.30,340.73L841.66,340.09L841.55,340.18Z M835.18,338.91L835.95,337.90L830.86,338.69L828.60,337.58L826.00,339.21L835.18,338.91Z M788.37,329.60L784.39,329.27L782.40,332.37L795.61,336.11L797.85,337.26L805.96,337.75L809.92,339.47L808.64,335.41L805.38,335.50L804.10,332.89L797.89,332.78L792.02,332.18L788.37,329.60Z M857.84,318.38L855.70,318.29L852.01,319.66L858.07,320.03L860.96,321.93L861.13,320.77L857.84,318.38Z M784.78,314.11L783.37,313.60L781.95,315.45L783.95,315.94L784.56,318.24L785.72,316.95L784.78,314.11Z M890.95,340.72L891.51,332.58L891.44,331.76L892.48,317.47L891.79,317.46L882.80,313.45L878.37,316.27L875.11,320.20L871.49,315.99L871.30,311.73L866.14,309.42L862.74,311.13L865.78,316.16L870.04,317.52L865.79,317.74L867.21,322.25L869.87,320.58L870.62,321.63L883.04,327.67L884.35,332.92L885.66,335.25L884.78,337.41L888.43,336.80L890.81,340.60L890.95,340.72Z M842.96,304.60L842.85,302.53L837.99,304.84L831.20,303.41L828.06,305.68L827.22,310.88L826.36,311.39L824.36,320.59L826.45,322.56L826.36,323.95L830.82,317.69L830.50,320.85L833.40,325.46L836.42,323.83L834.62,320.92L833.58,314.20L838.36,311.59L836.80,310.85L831.40,312.93L828.62,311.25L829.67,306.27L841.55,306.47L842.96,304.60Z M851.74,305.12L851.20,306.40L855.36,307.38L853.23,303.15L851.74,305.12Z M820.28,293.44L820.64,293.86L821.20,293.68L821.18,293.55L821.07,293.21L820.64,293.28L820.34,293.27L820.28,293.44Z M795.05,301.29L793.70,306.25L796.95,312.70L797.61,317.75L799.75,319.12L802.13,318.47L810.55,320.58L811.03,322.83L816.18,319.31L817.20,316.36L816.52,314.27L820.32,310.13L820.34,306.94L823.66,303.44L819.93,295.07L820.09,293.29L820.11,293.26L814.27,293.18L811.78,301.39L808.37,303.65L804.63,302.59L798.91,305.02L797.13,303.74L795.82,300.91L795.05,301.29Z M754.97,289.48L751.17,288.18L751.00,289.29L759.29,300.00L762.42,302.82L767.11,311.10L768.75,315.06L773.26,322.32L777.61,326.29L783.63,328.42L784.02,324.41L782.40,316.57L781.14,316.79L778.69,311.80L776.77,310.21L777.50,307.12L775.63,306.40L771.64,302.36L765.75,297.48L757.92,289.46L754.97,289.48Z " data-iso="IDN" data-name="Indonesia" data-pop="240271522.0"/><path d="M696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.42,208.23L720.71,207.55L721.44,207.86L722.00,210.17L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.27,208.75L732.81,207.55L734.17,205.62L741.74,202.68L743.77,206.42L746.47,207.03L746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.11,229.67L723.54,230.75L723.48,228.95L719.95,232.19L718.71,236.44L716.41,237.00L711.79,243.55L708.26,247.04L707.84,249.23L705.64,249.66L702.75,251.71L703.45,260.41L702.73,271.28L701.36,271.34L700.44,274.82L694.31,278.13L692.13,274.39L689.15,266.35L687.15,263.26L684.94,256.67L681.59,250.77L677.69,237.23L676.30,228.87L675.69,231.13L673.40,233.50L671.41,233.97L666.25,229.48L665.87,227.95L668.95,227.39L669.65,225.53L667.54,226.66L662.43,223.24L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.08,186.00L689.65,191.47L687.25,191.54L689.17,195.53L696.63,199.84L696.76,200.10Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M438.78,112.12L435.89,112.09L435.92,114.24L431.49,117.20L432.16,118.42L429.89,123.45L432.64,124.48L440.32,121.58L441.51,119.04L441.27,115.77L441.16,115.65L436.86,115.23L436.41,114.22L438.65,112.27L438.78,112.12Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M585.33,166.08L585.23,166.07L583.27,166.99L586.52,174.99L586.52,175.04L586.53,175.07L588.96,179.13L591.25,179.78L591.50,182.27L590.16,186.58L598.05,194.24L597.97,197.09L600.99,200.83L601.12,200.78L605.38,199.98L610.68,208.21L617.70,212.47L621.33,213.07L623.39,211.56L628.38,214.50L641.77,217.97L641.93,217.94L642.14,214.48L644.83,212.76L645.65,210.57L643.99,207.88L641.18,205.92L638.05,201.90L637.37,201.20L637.43,201.11L638.00,200.23L638.92,195.72L636.20,194.72L633.83,185.97L634.87,185.17L635.20,180.74L635.10,180.50L635.00,180.36L633.99,176.83L631.75,176.85L628.32,173.96L622.10,171.65L619.14,171.29L612.76,174.32L612.97,174.90L608.22,176.91L602.57,175.02L597.64,170.57L597.61,170.41L595.48,166.97L594.38,165.96L590.71,168.74L590.53,168.73L590.03,168.71L589.63,168.87L589.47,168.83L588.90,168.73L587.58,168.38L585.40,166.15L585.33,166.08Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M586.41,174.96L583.81,174.75L580.58,174.26L579.88,175.09L579.61,175.16L579.61,175.21L577.17,177.29L577.15,181.69L571.61,188.06L570.84,188.57L571.14,189.36L572.02,191.73L572.80,192.62L572.41,193.05L573.08,193.17L580.57,196.30L583.97,198.91L594.88,204.06L595.39,203.94L595.80,203.35L596.84,200.69L597.88,200.34L599.30,200.75L599.30,200.65L600.42,200.85L600.72,200.91L600.99,200.83L597.97,197.09L598.05,194.24L590.16,186.58L591.50,182.27L591.25,179.78L588.96,179.13L586.53,175.07L586.52,175.04L586.41,174.96Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M420.20,76.19L418.00,75.41L413.91,77.43L408.55,76.80L407.68,77.98L405.28,77.76L403.75,75.57L399.55,78.10L404.71,78.63L404.41,79.88L400.77,80.58L404.03,81.55L401.92,83.59L405.73,83.35L407.91,84.58L411.65,85.06L421.85,81.86L424.54,79.92L422.07,76.75L420.20,76.19Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M562.37,190.69L562.46,189.59L562.55,189.42L562.30,188.57L562.33,188.35L562.26,188.41L561.35,189.48L561.12,189.63L560.24,189.61L560.18,190.02L559.65,192.79L559.38,193.87L558.91,194.97L558.90,194.99L558.60,195.79L558.61,196.04L558.34,196.35L558.65,197.11L559.42,199.09L559.88,200.00L560.83,202.57L561.01,202.29L561.28,199.99L561.29,198.81L561.76,195.93L561.79,195.37L561.67,195.36L560.51,194.67L561.58,192.06L561.77,192.08L561.75,191.27L561.85,191.05L562.19,190.88L562.35,190.86L562.37,190.69Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M502.23,171.18L493.41,172.19L493.56,173.15L500.85,176.65L502.23,171.18Z M484.86,161.69L483.83,160.55L480.93,161.60L481.60,167.66L485.00,167.13L484.86,161.69Z M486.32,140.55L486.21,141.00L483.60,142.07L482.52,144.12L480.85,142.17L477.07,143.92L476.97,143.84L476.76,144.04L476.99,149.64L478.13,150.17L478.51,151.45L479.18,151.32L481.99,149.13L486.20,151.15L487.08,154.28L494.60,160.40L502.23,164.86L503.91,168.61L502.71,172.19L503.66,172.18L506.40,167.04L504.98,164.34L505.92,163.00L509.81,165.47L508.52,162.49L502.51,159.44L503.26,158.37L497.47,155.91L491.86,149.11L491.59,145.53L495.74,144.89L495.57,145.03L495.17,143.65L494.54,142.46L495.29,141.96L495.33,141.75L494.75,141.63L490.99,140.30L491.01,139.79L486.40,140.58L486.32,140.55Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M222.90,242.16L220.36,242.20L220.60,243.63L225.87,244.11L222.90,242.16Z " data-iso="JAM" data-name="Jamaica" data-pop="2825928.0"/><path d="M572.80,192.62L572.02,191.73L571.14,189.36L570.84,188.57L570.14,189.06L565.52,192.36L564.51,192.20L562.67,190.93L562.35,190.86L562.19,190.88L561.85,191.05L561.75,191.27L561.77,192.08L561.89,192.64L561.86,193.55L562.01,194.34L561.81,195.07L561.79,195.37L561.76,195.93L561.29,198.81L561.28,199.99L561.01,202.29L561.06,202.54L561.01,203.02L564.95,203.01L569.58,198.89L566.70,195.82L572.02,193.47L572.41,193.05L572.80,192.62Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M840.52,187.74L837.01,188.75L840.26,191.27L840.34,195.63L842.45,196.53L843.87,194.68L842.19,187.92L840.52,187.74Z M848.90,185.39L845.15,186.00L844.00,188.41L849.72,188.66L848.90,185.39Z M857.15,159.94L855.79,165.26L856.35,165.35L857.33,171.94L853.83,176.37L851.66,180.27L843.55,180.72L839.70,184.90L839.27,186.40L843.04,186.89L842.77,185.50L851.47,184.10L853.88,188.16L855.00,182.51L859.57,184.17L859.97,182.41L863.07,182.19L864.15,183.08L865.15,179.69L864.42,178.92L862.02,171.44L862.47,166.22L857.15,159.94Z M859.17,150.21L851.09,145.30L850.57,145.68L853.87,152.81L851.04,155.65L854.00,159.76L852.78,156.52L856.65,155.65L861.70,157.58L862.48,154.26L864.46,154.16L864.53,152.52L859.17,150.21Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M682.93,181.00L682.13,181.02L681.66,180.90L680.36,180.52L680.00,180.35L680.21,180.67L680.52,181.16L681.08,182.02L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L682.93,181.00Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M593.35,142.23L598.56,139.73L603.14,140.23L604.35,142.91L603.82,145.08L605.19,145.93L600.22,145.84L597.77,149.37L601.46,153.55L605.24,154.85L605.65,158.12L605.80,158.49L610.28,156.63L614.62,160.30L615.85,160.11L615.97,160.12L615.80,159.30L613.16,147.11L627.87,149.39L631.19,152.42L638.01,152.21L639.16,151.63L643.23,154.61L643.77,157.69L645.16,157.73L646.47,160.63L651.40,162.49L652.97,159.96L657.27,156.97L657.47,156.83L657.28,156.67L657.88,155.11L664.08,155.22L664.08,154.15L679.79,155.00L683.12,156.63L683.63,157.04L683.68,156.97L683.92,153.19L680.10,147.07L684.24,145.87L686.69,146.66L685.68,144.73L685.83,140.19L692.84,139.18L691.51,135.87L694.67,132.74L694.95,132.81L694.79,132.59L692.24,130.41L691.28,131.37L688.43,130.80L680.84,126.55L673.03,126.86L663.64,118.27L659.34,115.98L659.59,114.46L654.29,117.69L651.98,117.75L651.12,116.08L644.77,115.24L643.58,112.75L639.86,111.55L636.03,112.04L635.03,113.01L625.66,115.15L619.01,115.89L619.55,118.20L622.05,118.98L619.62,119.44L621.06,124.50L622.70,126.67L616.94,127.40L614.35,125.97L610.73,125.97L607.61,127.63L597.30,123.76L594.52,123.97L588.72,127.74L589.07,130.07L585.70,128.25L584.64,134.58L586.82,137.31L589.53,137.60L593.46,142.40L593.35,142.23Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M566.24,288.54L565.68,289.19L563.55,291.65L562.93,292.37L562.32,293.08L562.81,294.27L565.18,299.52L565.44,302.29L562.30,307.53L562.17,311.12L562.18,311.73L562.41,311.73L573.74,320.71L578.47,324.91L578.49,324.81L581.55,318.93L582.95,317.22L585.26,314.82L585.71,314.21L584.01,311.26L583.97,298.00L586.34,294.58L586.72,293.95L586.27,293.95L583.25,292.90L579.37,295.81L575.02,295.13L572.12,292.96L568.48,292.07L566.23,288.66L566.24,288.54Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M683.12,156.63L679.79,155.00L664.08,154.15L664.08,155.22L657.88,155.11L657.28,156.67L657.47,156.83L657.54,156.76L657.37,157.98L659.49,160.72L664.98,161.88L659.42,163.92L659.35,163.98L659.37,164.04L654.89,164.94L655.24,166.52L661.48,166.32L663.89,167.66L667.50,166.76L667.67,166.79L667.90,166.75L670.22,163.07L674.48,163.57L676.57,161.21L683.75,157.25L683.63,157.04L683.12,156.63Z M660.36,165.21L659.82,164.91L659.49,164.51L660.36,165.21Z M658.98,165.45L658.46,165.44L658.34,165.32L658.98,165.45Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.02,256.92L774.02,256.63L770.64,259.77L773.20,266.33L773.19,266.21L774.14,269.17L775.63,268.65L775.83,270.62L777.67,270.50L778.21,270.97L782.48,266.42L786.67,264.35L786.11,255.80L786.04,255.60Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M821.46,172.85L821.85,175.70L824.59,179.97L824.32,181.95L826.42,184.48L832.65,182.07L831.56,177.75L826.57,171.34L825.18,169.74L821.85,171.11L821.46,172.75L821.46,172.85Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M518.24,156.71L516.65,153.84L515.40,153.46L515.06,154.67L514.72,154.77L514.36,154.88L513.92,155.01L513.86,155.11L514.02,155.73L514.01,155.77L514.12,155.85L514.87,156.61L515.40,157.10L515.64,158.00L515.60,158.16L515.64,158.19L516.15,157.46L518.31,156.83L518.31,156.83L518.24,156.71Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M599.30,200.75L597.88,200.34L596.84,200.69L595.80,203.35L595.39,203.94L595.97,204.02L598.70,205.63L599.00,205.97L601.28,205.93L601.09,205.61L599.43,202.07L599.96,202.23L599.30,200.89L599.30,200.75Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L770.83,243.29L770.82,243.31L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.56,228.43Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M562.45,188.23L563.62,186.83L563.11,183.88L562.20,184.05L562.23,184.35L561.39,185.42L561.36,186.20L560.34,189.33L560.24,189.61L561.12,189.63L561.35,189.48L562.26,188.41L562.33,188.35L562.45,188.23Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M431.32,281.06L428.71,280.64L428.27,278.35L426.07,277.84L425.92,277.85L425.91,277.96L425.82,278.47L422.11,283.49L422.77,284.27L424.32,285.62L429.40,290.11L433.93,292.56L434.28,292.62L433.25,285.89L432.02,285.59L431.49,281.20L431.43,281.16L431.32,281.06Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M531.34,194.53L522.48,190.20L516.57,192.71L515.70,198.93L514.00,199.73L508.63,196.80L504.99,196.14L502.61,192.93L498.06,190.65L491.64,189.48L491.19,189.25L491.28,192.01L487.29,195.43L487.66,197.87L486.00,199.68L485.65,199.87L485.37,200.05L485.77,214.83L489.59,220.28L493.22,223.36L493.52,224.00L495.10,224.41L498.46,225.43L499.28,226.21L502.63,225.87L502.63,225.87L503.72,225.28L505.60,224.26L512.50,228.24L528.76,237.58L530.24,238.43L530.22,237.98L530.92,236.64L533.20,236.62L532.97,231.25L532.89,229.46L532.86,228.66L531.53,203.63L530.52,200.22L531.46,194.74L531.34,194.53Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M483.93,139.81L483.86,139.52L483.81,139.43L483.75,139.18L483.72,139.13L483.61,139.47L483.61,139.73L483.64,139.86L483.68,139.85L483.89,139.87L483.93,139.81Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M703.29,273.11L702.93,279.41L704.86,286.69L709.23,284.90L709.61,282.13L706.66,276.25L703.29,273.11Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M512.19,111.62L512.35,111.64L512.51,111.40L512.65,110.94L512.45,111.23L512.19,111.62Z M512.32,109.15L512.42,109.85L512.96,111.42L513.08,111.67L513.08,111.69L517.42,113.12L517.19,113.82L517.32,114.58L517.45,114.75L517.58,114.62L519.34,115.47L519.48,116.09L519.51,116.16L519.71,116.23L524.81,114.90L525.16,113.14L527.26,111.89L526.91,110.49L526.90,110.34L526.76,110.32L524.27,108.87L514.85,107.86L512.28,108.99L512.32,109.15Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M474.06,129.21L473.41,129.35L473.05,130.30L473.32,131.18L473.25,131.24L473.34,131.35L474.03,131.53L474.15,131.42L474.58,131.45L474.76,131.53L474.77,131.33L474.07,129.52L474.06,129.31L474.08,129.22L474.06,129.21Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M527.89,104.15L523.78,103.01L521.93,102.37L520.00,103.00L519.98,103.29L518.66,105.99L513.46,103.99L512.13,108.36L512.28,108.99L514.85,107.86L524.27,108.87L526.76,110.32L526.90,110.34L526.96,110.30L528.02,109.79L528.70,109.88L530.63,108.74L530.71,108.75L530.75,108.59L529.15,105.96L529.33,105.33L528.25,104.15L527.95,104.14L527.89,104.15Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M799.69,228.74L799.73,228.72L799.86,228.65L799.86,228.65L799.78,228.56L799.69,228.58L799.67,228.67L799.67,228.74L799.69,228.74Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M266.06,243.42L266.02,243.39L265.90,243.38L265.74,243.47L265.71,243.55L266.05,243.55L266.06,243.42Z " data-iso="MAF" data-name="St. Martin" data-pop="29820.0"/><path d="M406.20,231.53L413.36,230.60L415.97,223.16L420.08,219.50L422.55,214.70L425.00,211.44L428.28,212.02L431.47,210.94L431.32,209.12L431.72,209.12L431.74,208.24L431.81,205.40L438.33,201.38L441.91,200.48L445.81,197.41L447.44,194.56L453.81,193.18L451.10,182.35L450.51,182.28L444.98,182.14L441.56,179.63L440.39,179.90L437.86,185.84L433.29,188.56L429.12,194.54L429.00,200.30L425.91,204.51L421.94,207.42L419.06,208.19L417.32,211.94L414.33,214.49L412.00,220.54L409.79,222.82L406.47,229.81L406.20,231.53Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M478.36,151.51L478.35,151.47L478.29,151.43L478.19,151.57L478.36,151.51Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M535.93,145.39L539.94,140.84L537.24,136.71L533.47,135.13L530.30,135.56L530.26,135.68L530.52,135.66L534.78,140.15L535.07,140.80L535.63,145.29L535.80,145.51L535.93,145.39Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M609.34,352.57L608.38,351.31L606.35,356.12L604.35,356.80L603.81,360.49L592.91,366.81L591.36,370.33L591.34,373.54L592.31,377.63L591.82,380.20L588.19,390.04L588.97,392.35L588.61,395.33L589.45,397.62L593.67,399.66L600.61,392.72L607.50,373.71L609.36,363.37L611.21,361.53L610.98,358.32L609.34,352.57Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M114.30,192.26L115.52,197.80L115.30,199.20L117.88,203.95L117.94,208.21L115.54,208.45L118.78,212.48L122.32,215.39L121.72,219.24L125.87,223.68L126.65,226.27L128.60,224.13L125.55,221.04L125.89,219.15L125.02,214.62L121.91,205.01L119.42,198.87L120.05,193.86L124.81,196.45L124.21,197.84L128.76,208.62L129.08,210.90L131.54,213.80L130.64,214.96L136.03,222.21L139.55,232.61L137.77,235.24L143.31,242.63L147.51,243.90L150.61,246.66L157.26,249.87L164.02,252.06L168.47,249.46L171.18,250.77L175.61,256.09L175.69,256.17L177.84,250.71L181.54,250.71L180.14,247.47L180.80,245.16L185.81,244.46L186.45,244.46L186.49,244.15L188.69,242.20L189.39,242.10L189.47,241.95L190.55,242.82L195.36,232.50L193.40,231.34L184.46,233.00L182.41,238.95L179.34,242.20L178.59,241.51L170.26,243.17L165.58,238.98L163.35,232.66L162.80,227.20L164.56,220.86L167.06,215.96L167.27,215.21L162.02,213.64L157.81,201.62L154.17,201.58L151.58,204.28L148.15,198.59L144.81,194.33L139.54,194.70L139.18,195.91L130.86,195.93L122.24,192.20L121.23,190.97L114.32,191.58L114.30,192.26Z " data-iso="MEX" data-name="Mexico" data-pop="111211789.0"/><path d="M520.42,156.57L518.80,156.76L518.47,156.85L518.31,156.83L518.31,156.83L516.15,157.46L515.64,158.19L515.60,158.16L515.57,158.20L515.37,159.41L516.98,161.72L517.01,161.80L517.39,161.78L519.29,161.44L522.24,160.07L522.40,160.07L522.43,160.00L522.42,159.11L522.54,158.72L520.97,157.12L520.49,156.60L520.42,156.57Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M469.41,239.91L467.25,237.38L444.01,219.37L443.10,218.69L442.05,218.69L437.87,219.51L440.73,252.77L429.54,252.77L428.79,252.32L423.94,253.75L421.92,252.71L420.57,255.46L420.03,255.23L420.31,255.81L422.67,261.91L422.67,263.57L422.65,263.84L422.56,263.93L423.03,265.27L430.51,265.56L433.06,271.61L433.01,271.85L433.10,271.85L438.33,269.85L438.39,271.50L440.49,270.86L440.59,270.91L440.64,270.71L441.33,265.90L444.00,263.52L444.84,260.61L447.44,260.70L447.61,259.35L455.23,254.38L457.57,254.60L458.21,254.86L458.25,254.68L461.52,253.57L468.29,252.82L470.11,249.68L470.38,240.33L470.37,239.70L469.41,239.91Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.83,229.66L737.27,232.07L736.71,233.78L736.92,234.05L739.19,235.27L745.27,245.34L744.79,250.51L746.11,249.13L746.25,251.31L753.39,247.16L755.96,253.00L756.32,255.05L760.51,268.00L760.56,271.80L760.70,271.75L763.00,266.07L760.36,258.32L757.33,253.82L758.38,253.10L758.35,249.87L753.29,242.03L754.12,239.26L760.18,235.26L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L762.90,230.95L759.14,230.31L754.35,223.21L750.77,222.67L750.05,220.50L752.09,212.98L751.06,209.42L748.80,207.22L748.67,207.12L748.15,206.60L747.79,206.60L746.65,206.97L746.58,207.10Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M511.22,152.27L509.83,154.06L509.34,154.27L509.47,155.71L509.42,155.72L509.44,155.85L509.56,156.00L509.68,156.17L509.79,156.19L510.02,156.37L510.79,156.82L511.69,157.89L512.15,158.18L512.83,155.48L513.08,155.56L513.96,155.76L514.01,155.77L514.02,155.73L513.86,155.11L513.92,155.01L514.36,154.88L514.72,154.77L514.72,154.68L513.06,153.77L512.74,153.58L511.30,152.32L511.30,152.27L511.22,152.27Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M773.17,130.07L765.64,128.93L761.66,131.63L757.25,132.35L752.43,131.98L745.18,128.50L738.98,129.05L733.18,127.62L731.61,125.11L721.73,122.41L720.44,126.02L722.71,129.37L721.71,129.87L713.36,129.56L708.08,127.38L701.05,129.28L698.99,131.46L696.19,132.54L696.18,132.54L696.27,132.70L697.47,134.65L707.08,140.06L709.06,143.21L708.90,145.25L713.74,146.97L719.90,148.35L722.78,149.71L730.76,154.91L737.42,155.69L754.98,158.52L758.36,156.68L765.65,156.09L767.87,154.96L770.13,150.86L770.70,147.39L773.73,147.99L775.31,145.81L778.38,145.48L781.31,141.52L784.88,140.91L787.86,141.22L779.73,136.62L775.15,137.67L773.41,130.73L773.41,130.25L773.17,130.07Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M555.60,404.22L554.92,401.25L558.88,397.88L562.97,395.99L564.33,391.11L562.79,379.43L568.51,374.36L571.65,370.97L575.93,369.07L578.97,366.90L581.86,361.51L581.37,354.54L581.94,345.90L581.79,345.53L575.62,348.92L571.68,349.90L565.45,349.50L564.77,349.51L564.36,349.50L562.86,351.78L565.35,357.81L566.70,365.19L565.00,368.23L562.46,366.22L562.01,364.73L562.48,359.64L559.95,359.73L559.20,358.33L559.08,358.23L558.41,358.48L553.92,360.24L551.99,360.88L550.26,363.57L550.29,364.06L550.27,364.63L556.98,367.45L557.89,369.82L557.05,380.46L552.28,387.93L551.84,388.30L551.84,388.49L553.43,396.34L552.97,400.82L553.01,401.08L553.07,401.13L553.28,402.00L553.21,402.24L553.34,403.10L553.28,404.25L553.54,404.23L553.99,404.33L555.26,404.29L555.59,404.28L555.60,404.22Z M563.97,351.42L563.86,351.05L563.97,351.03L563.97,351.42Z M563.74,351.07L563.44,351.09L563.48,350.96L563.74,351.07Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M443.10,218.69L442.43,218.18L439.46,216.02L438.90,215.62L432.25,210.85L431.69,210.45L431.68,211.05L431.61,215.09L423.76,215.09L421.62,216.01L421.40,224.18L406.31,231.86L406.00,233.73L406.18,232.89L407.86,234.28L408.81,244.20L407.15,249.94L407.11,251.54L408.07,249.06L413.27,248.62L416.66,250.75L419.97,255.20L420.03,255.23L420.57,255.46L421.92,252.71L423.94,253.75L428.79,252.32L429.54,252.77L440.73,252.77L437.87,219.51L442.05,218.69L443.10,218.69Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M563.97,351.42L563.97,351.03L563.86,351.05L563.97,351.42Z M563.74,351.07L563.48,350.96L563.44,351.09L563.74,351.07Z M558.73,341.75L558.74,341.85L560.27,346.67L559.74,346.92L559.39,353.01L557.79,356.57L558.93,357.97L559.08,358.23L559.20,358.33L559.95,359.73L562.48,359.64L562.01,364.73L562.46,366.22L565.00,368.23L566.70,365.19L565.35,357.81L562.86,351.78L564.36,349.50L564.77,349.51L564.75,349.39L563.02,343.00L562.03,342.07L558.78,341.72L558.73,341.75Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M820.68,292.97L820.51,292.93L820.37,292.98L820.39,293.14L820.34,293.27L820.64,293.28L821.07,293.21L820.68,292.97Z M766.08,285.57L768.15,293.99L772.72,300.13L776.49,302.63L779.26,303.20L776.97,298.25L776.59,292.47L775.63,289.36L772.62,286.00L772.08,285.86L768.72,287.55L768.94,286.14L765.94,285.15L766.08,285.57Z M813.15,292.51L812.47,292.48L812.15,290.66L811.63,292.61L810.87,293.70L809.23,291.75L809.20,291.75L806.54,296.22L802.23,297.96L800.77,303.17L796.03,301.41L795.82,300.91L797.13,303.74L798.91,305.02L804.63,302.59L808.37,303.65L811.78,301.39L814.27,293.18L820.11,293.26L820.20,293.16L823.22,292.23L825.10,288.99L817.31,283.33L813.22,290.54L813.15,292.51Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M527.70,371.43L522.50,372.51L514.79,371.67L513.52,370.35L500.20,370.39L497.44,368.81L493.29,369.82L493.21,370.60L493.34,372.51L499.72,386.02L500.73,387.54L501.41,396.01L503.22,406.22L506.02,410.35L506.34,410.64L508.23,408.53L509.30,410.93L514.34,411.80L516.85,410.04L517.37,398.34L517.43,396.83L517.43,396.74L517.74,388.76L520.80,386.86L521.11,378.76L522.05,373.61L528.13,372.51L530.88,372.78L534.22,371.75L534.35,371.77L533.86,371.20L532.79,370.78L529.32,371.07L528.66,371.22L527.70,371.43Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M954.59,380.56L954.78,382.66L956.45,385.15L960.81,388.02L954.59,380.56Z " data-iso="NCL" data-name="New Caledonia" data-pop="227436.0"/><path d="M502.63,225.87L499.28,226.21L498.46,225.43L495.10,224.41L493.52,224.00L491.99,225.09L480.17,233.49L478.70,234.94L471.03,239.55L470.37,239.70L470.38,240.33L470.11,249.68L468.29,252.82L461.52,253.57L458.25,254.68L458.21,254.86L458.17,255.03L460.91,261.70L462.34,263.01L464.73,265.48L464.87,265.65L464.94,265.29L465.12,264.34L468.38,266.04L468.57,266.37L468.75,266.24L470.24,260.07L474.35,258.58L477.83,260.40L481.39,260.50L484.35,262.03L487.00,262.38L489.61,260.52L495.85,261.01L498.63,259.19L499.17,259.18L498.84,257.65L501.38,251.86L504.67,247.71L505.21,236.97L503.02,227.94L502.63,225.87L502.63,225.87Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M468.57,266.37L468.45,266.60L469.17,270.88L467.11,275.34L466.08,275.84L465.89,285.41L466.09,285.39L470.26,285.26L474.78,291.56L476.90,292.54L483.89,291.17L483.93,291.17L485.27,287.02L489.25,283.60L491.68,284.92L494.53,281.05L495.70,277.46L498.18,273.70L499.60,269.31L502.20,266.25L500.93,263.09L500.61,261.42L500.20,260.78L499.67,259.95L499.17,259.18L498.63,259.19L495.85,261.01L489.61,260.52L487.00,262.38L484.35,262.03L481.39,260.50L477.83,260.40L474.35,258.58L470.24,260.07L468.75,266.24L468.57,266.37Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M190.10,261.88L191.38,264.40L192.39,266.22L194.43,268.54L194.43,268.64L197.83,268.70L199.94,269.81L200.84,269.16L200.62,269.10L201.81,261.91L202.47,258.14L203.49,254.70L203.59,254.57L202.43,254.63L192.23,258.97L192.15,260.58L190.12,261.78L190.10,261.88Z " data-iso="NIC" data-name="Nicaragua" data-pop="5891199.0"/><path d="M468.58,124.95L468.30,124.83L467.96,124.97L466.73,124.84L466.53,124.89L468.39,125.34L468.58,124.95Z M472.87,126.97L473.02,127.02L473.15,127.04L473.68,127.05L473.82,126.52L474.15,124.51L473.46,123.58L476.62,118.39L476.25,118.33L470.99,119.48L467.80,124.79L468.65,124.81L469.97,124.74L472.87,126.97L472.87,126.97Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M486.54,99.17L489.08,95.67L489.77,91.63L487.86,90.45L487.10,85.42L491.37,81.56L492.53,76.50L496.72,73.33L497.30,71.05L505.58,67.59L505.89,67.58L506.00,67.48L508.12,66.87L511.81,68.68L516.25,68.92L522.31,64.48L525.46,65.66L525.26,67.50L525.45,67.62L525.80,67.54L526.27,66.78L529.40,66.09L529.41,65.32L529.05,65.28L524.33,64.23L529.26,63.85L522.91,61.76L519.08,63.44L519.17,62.12L513.86,62.00L511.82,64.72L510.07,63.55L508.68,65.17L504.79,64.83L503.43,66.40L502.26,65.43L496.73,68.82L497.86,69.61L494.16,70.42L492.76,73.21L488.90,75.57L485.84,80.61L481.03,84.11L482.21,85.11L478.68,85.35L473.87,88.24L469.96,89.87L470.89,91.20L476.45,92.20L475.06,92.79L470.32,92.54L471.91,95.62L470.99,97.18L472.54,99.09L471.81,100.53L475.51,102.50L479.36,101.58L484.06,98.37L486.53,99.07L486.54,99.17Z M503.45,40.23L500.85,40.45L503.11,42.83L506.35,43.15L507.01,41.83L503.45,40.23Z M492.63,36.86L491.14,36.60L492.11,39.24L488.60,37.21L482.03,37.07L480.66,38.39L483.33,40.21L493.17,40.06L493.29,40.88L487.66,43.13L493.33,45.58L496.99,41.74L502.91,39.86L497.58,38.72L492.63,36.86Z M501.02,36.00L505.83,38.58L509.63,38.24L514.17,36.47L505.68,36.15L505.05,35.45L501.02,36.00Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M719.21,208.30L717.08,208.52L711.16,206.89L707.20,204.60L706.59,203.50L697.83,199.48L696.94,200.33L696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.21,208.30Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M947.57,456.03L947.20,453.69L932.56,464.24L927.79,465.97L918.08,472.60L921.50,473.96L925.44,474.66L936.25,466.16L941.27,465.28L949.83,457.67L951.52,455.11L947.57,456.03Z M961.00,433.35L960.63,440.55L961.66,441.06L958.12,445.86L953.63,449.25L955.89,451.31L955.21,453.28L952.29,456.58L954.55,456.50L962.48,450.31L964.62,448.20L968.22,446.30L970.30,442.78L966.24,444.28L961.55,440.18L962.28,439.36L962.67,433.79L961.00,433.35Z " data-iso="NZL" data-name="New Zealand" data-pop="4213418.0"/><path d="M623.74,226.92L624.01,227.33L625.37,229.44L624.66,233.38L622.73,237.18L615.67,240.06L615.26,240.23L615.42,240.58L618.01,246.31L618.24,246.42L619.27,248.64L619.89,248.37L624.32,247.51L626.62,244.21L628.93,243.84L637.79,227.62L636.54,227.07L626.87,219.69L626.46,218.74L624.73,219.14L624.12,222.47L623.71,226.39L623.74,226.92Z M625.08,214.85L625.43,216.19L625.57,216.35L625.91,216.33L625.91,216.12L626.06,214.68L625.27,214.33L625.08,214.85Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M679.87,180.29L678.38,179.81L676.65,176.98L672.57,175.42L672.41,175.47L672.13,175.61L664.06,179.36L665.15,181.07L662.88,186.49L662.92,188.58L661.41,189.57L660.96,193.73L654.76,196.02L653.07,197.80L653.15,201.28L647.26,202.88L638.56,201.59L637.37,201.20L638.05,201.90L641.18,205.92L643.99,207.88L645.65,210.57L644.83,212.76L642.14,214.48L641.93,217.94L641.88,218.00L655.91,216.51L659.57,221.64L662.27,222.99L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.08,182.02L680.52,181.16L680.21,180.67L680.00,180.35L679.87,180.29Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M203.82,273.95L202.59,275.12L203.14,276.18L202.54,279.33L202.62,279.23L204.58,278.76L209.20,282.35L211.26,281.37L210.01,278.82L214.39,276.02L217.26,278.23L217.63,282.24L217.71,282.34L219.94,279.82L219.59,277.23L218.64,276.41L213.68,273.98L205.18,276.24L204.01,274.14L203.82,273.95Z " data-iso="PAN" data-name="Panama" data-pop="3360474.0"/><path d="M241.64,323.01L240.03,321.96L241.39,317.80L236.75,316.09L234.18,316.82L225.39,308.30L225.21,308.53L225.03,308.66L225.32,311.55L224.35,313.62L220.97,317.30L217.12,319.03L214.94,324.44L209.46,323.17L209.78,320.25L209.24,320.63L207.24,325.57L208.30,328.27L207.55,329.78L210.82,331.90L214.46,337.47L218.95,346.86L219.37,348.47L224.43,356.44L224.29,358.65L228.32,363.23L235.78,367.54L243.39,373.50L243.64,373.75L245.30,372.84L245.38,372.47L245.88,370.98L246.09,370.74L246.09,370.73L245.99,360.32L246.98,358.79L246.23,357.04L247.11,352.82L244.44,348.05L244.01,347.27L243.72,347.28L240.76,347.48L240.52,343.24L235.82,343.88L233.75,341.76L229.77,335.14L233.45,326.25L238.70,323.69L241.79,323.51L241.80,323.28L241.64,323.01Z " data-iso="PER" data-name="Peru" data-pop="29546963.0"/><path d="M844.86,274.86L842.92,273.62L843.40,275.96L836.33,277.74L832.93,282.44L833.53,283.46L834.91,280.43L839.43,281.09L839.48,282.75L843.83,288.16L844.74,286.80L843.70,284.26L844.75,282.01L846.33,284.11L847.17,282.53L844.86,274.86Z M836.11,275.78L836.69,270.35L835.01,269.27L834.92,272.12L833.69,273.53L836.11,275.78Z M833.23,266.66L831.87,266.27L832.02,268.93L834.38,269.49L835.18,268.16L833.23,266.66Z M825.25,241.59L824.10,241.84L823.61,245.10L824.54,250.17L822.78,249.80L824.34,255.08L825.86,254.97L830.96,258.88L832.86,261.01L832.50,258.46L835.02,261.35L837.65,261.58L833.40,257.45L831.20,257.73L828.29,252.72L830.50,246.94L828.72,242.00L825.25,241.59Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M925.99,323.49L922.78,327.52L915.00,327.69L914.84,328.74L918.56,330.61L921.84,330.11L925.56,328.02L925.99,323.49Z M892.48,317.47L892.48,317.48L892.48,317.72L891.44,331.76L891.51,332.58L890.95,340.72L891.40,341.09L898.28,339.08L899.16,336.72L903.71,336.01L906.87,336.99L910.85,343.56L919.53,346.15L917.94,343.92L918.50,342.76L912.15,336.28L912.91,330.91L906.74,327.44L906.93,325.37L900.20,320.40L892.57,317.47L892.48,317.47Z M929.14,325.14L929.42,322.81L926.52,319.76L922.62,317.93L928.34,322.90L929.14,325.14Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M508.98,114.48L504.98,113.13L501.06,114.08L495.14,116.18L495.04,116.12L495.01,116.23L495.07,116.39L495.43,116.43L495.99,116.55L495.84,117.07L495.22,116.87L496.94,122.48L496.60,123.34L497.40,126.63L497.39,126.68L497.62,126.67L498.64,126.60L502.75,129.24L503.35,128.20L507.65,129.98L508.60,131.23L508.62,131.33L508.91,131.38L512.81,131.77L516.27,131.68L518.65,132.82L518.83,132.85L518.94,132.84L519.68,132.89L521.52,128.34L520.97,124.65L520.80,124.41L520.58,124.07L519.42,121.88L520.98,120.49L519.95,117.31L519.51,116.16L519.48,116.09L519.34,115.47L517.58,114.62L517.45,114.75L517.36,114.77L515.87,114.74L509.09,114.40L508.98,114.48Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M811.64,164.84L815.17,166.52L815.59,168.86L817.01,169.52L815.37,171.51L821.42,172.72L821.46,172.75L821.85,171.11L825.18,169.74L824.96,169.54L821.47,167.65L821.07,165.61L825.38,161.51L824.11,159.15L825.63,156.73L825.72,156.64L825.59,156.55L825.05,156.03L824.86,155.81L824.72,155.69L822.34,154.95L821.66,156.93L818.93,158.07L820.11,159.89L816.97,159.29L811.59,164.81L811.64,164.84Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M432.48,158.31L430.95,167.00L432.30,171.31L431.61,175.44L435.96,174.95L436.21,174.91L436.30,165.97L437.87,165.05L437.71,157.89L432.78,157.92L432.48,158.31Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M281.47,379.68L278.35,377.12L275.58,377.16L270.39,378.41L268.73,387.52L268.68,387.70L268.77,387.80L271.64,391.10L274.81,393.53L284.41,398.13L285.20,399.79L282.89,405.53L289.38,406.58L291.71,406.32L294.32,401.25L294.19,399.71L294.15,399.19L294.70,394.21L290.63,392.54L290.25,390.79L282.79,387.25L281.56,380.53L281.47,380.27L281.47,379.68Z " data-iso="PRY" data-name="Paraguay" data-pop="6995655.0"/><path d="M611.63,219.94L610.65,214.52L609.43,217.23L609.88,219.21L609.80,219.43L610.00,219.82L611.26,220.08L611.63,219.94Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M535.63,145.29L535.07,140.80L534.78,140.15L530.52,135.66L530.26,135.68L530.14,135.72L525.75,137.57L523.72,136.91L520.24,136.71L520.15,136.77L520.09,136.85L517.90,138.31L515.66,142.73L513.60,143.11L513.50,143.20L513.68,143.40L516.25,146.07L518.08,148.22L520.86,149.75L520.91,149.78L521.12,149.93L531.53,150.33L532.51,150.11L537.52,151.54L537.51,151.34L538.04,147.77L537.90,147.38L540.00,146.42L540.02,146.18L538.11,145.97L536.52,146.07L536.13,145.87L535.80,145.51L535.63,145.29Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M833.06,114.62L834.34,117.97L833.14,118.02L837.42,124.03L839.27,125.43L849.88,143.27L850.67,141.09L854.15,143.48L853.86,142.31L847.74,136.98L846.35,132.41L849.10,132.38L833.06,114.62Z M512.35,111.64L512.19,111.62L512.07,111.80L511.00,112.74L509.70,113.81L509.47,114.11L509.09,114.40L515.87,114.74L517.36,114.77L517.45,114.75L517.32,114.58L517.19,113.82L517.42,113.12L513.08,111.69L513.10,112.22L511.51,112.64L512.12,111.96L512.35,111.64Z M35.73,67.87L35.42,67.74L20.71,79.82L26.84,76.80L26.34,78.51L30.83,78.31L36.12,81.89L36.89,80.54L39.54,79.88L41.29,78.10L43.85,78.43L48.16,75.79L47.23,74.02L43.80,73.48L40.71,75.55L38.75,75.00L41.49,71.72L37.57,69.75L35.73,67.87Z M48.09,59.97L45.36,60.09L43.21,61.70L49.85,61.03L48.09,59.97Z M582.05,54.91L578.79,54.93L575.65,59.99L579.81,60.50L580.57,62.06L585.09,62.68L590.53,62.49L584.17,59.11L584.68,55.22L582.05,54.91Z M780.97,49.02L780.13,49.51L786.25,50.63L790.59,49.62L780.97,49.02Z M764.59,47.74L760.90,46.72L759.83,49.40L763.64,50.64L766.79,50.17L773.27,50.57L770.44,48.78L773.83,49.74L776.84,48.42L766.70,46.88L764.59,47.74Z M605.46,46.60L605.88,44.69L599.66,45.83L591.84,46.44L584.51,49.10L580.83,49.71L581.49,50.64L579.18,53.10L585.67,54.74L589.00,50.94L594.21,48.86L605.46,46.60Z M529.41,65.32L529.40,66.09L526.27,66.78L525.80,67.54L525.45,67.62L525.31,67.66L524.91,69.66L527.08,74.27L529.61,76.83L529.46,79.90L531.33,84.16L534.39,85.69L534.33,88.51L527.51,94.27L528.46,94.16L530.91,95.39L528.71,97.47L528.62,97.70L527.53,100.16L528.30,103.24L527.94,104.06L527.95,104.14L528.25,104.15L529.33,105.33L529.15,105.96L530.75,108.59L530.71,108.75L531.11,109.04L534.42,110.28L538.20,110.66L538.31,111.83L541.58,116.66L542.59,119.04L542.32,122.33L542.35,122.42L542.40,122.42L547.47,121.58L549.43,125.35L553.82,128.45L554.97,128.23L560.48,129.92L560.97,129.46L566.49,132.23L565.49,133.08L566.69,135.65L563.85,137.15L562.61,139.75L563.31,139.46L561.82,141.71L563.95,143.26L559.25,146.44L569.25,152.49L569.57,152.68L571.38,152.27L574.18,153.39L586.27,156.02L588.54,158.05L588.60,158.10L588.92,158.17L593.07,160.51L594.68,158.26L594.37,158.05L590.79,154.04L587.91,149.14L593.53,142.56L593.46,142.40L589.53,137.60L586.82,137.31L584.64,134.58L585.70,128.25L589.07,130.07L588.72,127.74L594.52,123.97L597.30,123.76L607.61,127.63L610.73,125.97L614.35,125.97L616.94,127.40L622.70,126.67L621.06,124.50L619.62,119.44L622.05,118.98L619.55,118.20L619.01,115.89L625.66,115.15L635.03,113.01L636.03,112.04L639.86,111.55L643.58,112.75L644.77,115.24L651.12,116.08L651.98,117.75L654.29,117.69L659.59,114.46L659.34,115.98L663.64,118.27L673.03,126.86L680.84,126.55L688.43,130.80L691.28,131.37L692.24,130.41L694.79,132.59L694.95,132.81L695.22,132.84L695.36,132.79L695.42,132.68L696.04,132.53L696.18,132.54L696.19,132.54L698.99,131.46L701.05,129.28L708.08,127.38L713.36,129.56L721.71,129.87L722.71,129.37L720.44,126.02L721.73,122.41L731.61,125.11L733.18,127.62L738.98,129.05L745.18,128.50L752.43,131.98L757.25,132.35L761.66,131.63L765.64,128.93L773.17,130.07L773.41,130.25L774.12,130.55L777.21,131.32L779.92,129.41L779.00,128.24L779.09,124.13L779.99,122.85L777.60,118.76L781.27,117.70L790.99,119.20L796.35,123.51L803.95,130.95L810.18,132.41L816.53,137.66L822.46,136.24L826.78,141.83L826.72,146.88L823.00,147.15L825.69,154.32L824.97,155.70L824.86,155.81L825.05,156.03L825.59,156.55L825.72,156.64L825.80,156.55L831.98,155.24L836.00,152.30L838.98,142.70L839.27,133.12L836.18,127.76L834.92,124.06L835.38,123.03L831.40,119.21L832.11,118.35L825.31,115.02L823.86,117.41L817.04,114.06L812.52,113.48L815.05,109.31L815.88,106.00L818.30,103.19L818.10,101.20L821.16,98.07L827.04,97.93L828.59,98.64L833.90,97.93L835.94,98.36L836.40,96.77L839.61,97.46L843.24,99.70L848.26,98.55L847.99,96.56L849.44,90.59L854.21,89.83L857.00,90.07L857.64,91.73L860.39,93.94L863.85,90.22L862.21,87.78L864.02,87.32L867.66,92.69L864.19,98.87L864.52,99.93L860.47,103.41L861.41,106.90L864.09,111.41L878.95,126.30L880.05,121.72L879.23,120.62L879.27,115.93L880.80,113.93L882.92,113.41L879.78,110.91L879.65,108.35L871.23,96.98L871.34,95.88L877.09,95.44L878.03,96.51L881.38,94.09L884.80,94.59L888.19,96.13L887.87,94.32L890.56,90.46L895.12,88.44L895.60,87.44L901.63,88.41L895.88,84.43L894.38,79.82L879.68,67.74L866.25,64.96L853.26,64.35L854.26,65.79L858.34,67.55L858.06,68.22L851.21,66.87L848.53,65.49L837.73,65.53L835.01,66.54L829.11,65.06L826.75,62.86L821.17,61.57L816.05,61.40L806.92,61.73L804.21,60.57L794.84,57.81L792.55,57.72L790.03,58.90L784.47,56.84L774.07,57.36L776.61,60.36L767.75,59.87L765.10,60.56L760.18,58.94L759.85,62.44L755.88,61.33L749.92,58.47L747.07,55.04L737.27,53.74L735.32,55.90L724.25,55.09L723.37,54.09L718.76,53.85L712.51,54.34L711.57,53.75L703.14,53.49L703.93,54.49L700.37,55.30L697.58,54.84L700.11,53.79L708.07,49.24L699.48,45.37L690.25,44.71L686.07,43.45L680.07,42.80L676.77,43.97L677.29,45.79L675.81,47.18L672.88,46.59L667.65,47.47L667.20,46.95L655.78,48.40L651.20,49.70L649.13,52.01L651.28,53.22L638.43,54.16L643.42,57.77L647.86,59.23L651.11,63.03L649.28,63.81L648.80,61.99L646.84,61.69L647.91,59.70L635.78,57.57L631.76,58.71L632.20,59.92L639.57,61.68L631.43,60.89L629.22,58.85L628.80,64.14L631.69,67.25L635.38,66.98L639.79,67.98L641.66,69.94L640.50,71.41L636.87,67.75L632.82,68.44L634.82,71.45L633.70,73.82L628.31,75.76L629.94,72.00L625.24,62.21L622.25,60.33L622.42,56.70L614.72,55.85L613.16,60.06L611.34,62.22L618.91,67.94L618.86,69.77L614.84,68.07L605.20,65.65L599.51,65.12L598.04,65.71L600.44,67.73L596.82,69.38L595.70,67.68L592.68,68.78L587.06,69.59L585.09,67.79L581.38,68.50L575.62,70.53L570.99,74.02L569.17,74.34L564.37,72.34L568.03,70.82L565.66,69.27L559.68,68.88L561.90,69.96L563.73,76.88L562.12,75.91L556.43,76.84L555.36,80.03L546.31,80.22L550.55,83.34L549.78,83.51L542.27,80.66L540.82,78.79L541.11,77.05L538.14,75.91L536.39,74.09L542.76,75.67L550.56,76.69L556.15,74.07L554.72,71.61L540.09,66.85L531.89,64.81L529.84,65.36L529.41,65.32Z M674.35,38.52L671.80,38.22L670.68,40.91L673.36,41.43L681.52,40.49L680.31,39.65L674.35,38.52Z M661.00,36.22L655.56,36.38L653.43,37.55L659.82,39.15L666.91,39.65L667.00,37.18L661.00,36.22Z M656.13,33.97L649.24,34.18L648.14,35.95L653.46,36.60L659.74,36.02L656.13,33.97Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M551.58,311.96L551.12,312.13L548.92,313.10L548.82,313.11L548.70,313.19L547.43,315.99L546.58,316.89L546.78,317.73L547.06,317.86L547.11,317.67L549.17,318.13L550.39,316.76L551.74,316.71L551.82,316.72L551.94,316.71L552.75,316.24L552.63,313.73L551.60,312.02L551.70,311.96L551.58,311.96Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M431.71,209.72L431.72,209.12L431.32,209.12L431.47,210.94L428.28,212.02L425.00,211.44L422.55,214.70L420.08,219.50L415.97,223.16L413.36,230.60L406.20,231.53L406.18,231.68L405.85,233.55L406.00,233.73L406.31,231.86L421.40,224.18L421.62,216.01L423.76,215.09L431.61,215.09L431.68,211.05L431.69,210.45L431.71,209.72Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M572.41,193.05L572.02,193.47L566.70,195.82L569.58,198.89L564.95,203.01L561.01,203.02L560.75,205.29L560.69,207.41L562.08,207.76L568.74,217.62L570.20,221.22L578.27,235.57L581.57,238.45L584.47,244.21L587.94,249.35L587.99,249.63L588.97,246.09L598.49,246.55L602.17,246.25L606.46,241.71L614.55,240.34L615.26,240.23L615.67,240.06L622.73,237.18L624.66,233.38L625.37,229.44L624.01,227.33L623.74,226.92L623.57,227.21L615.74,226.10L612.43,221.98L612.28,221.23L612.18,221.23L611.49,221.04L611.62,220.55L611.49,220.24L611.26,220.08L610.00,219.82L609.80,219.43L609.54,219.14L606.57,212.09L603.03,209.22L601.49,206.27L601.28,205.93L599.00,205.97L598.70,205.63L595.97,204.02L595.39,203.94L594.88,204.06L583.97,198.91L580.57,196.30L573.08,193.17L572.41,193.05Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M532.89,229.46L532.97,231.25L533.20,236.62L530.92,236.64L530.22,237.98L530.24,238.43L530.30,240.03L530.68,251.96L527.57,253.97L525.94,256.16L525.58,260.53L524.44,262.19L527.81,268.76L527.71,269.15L527.94,269.59L530.20,273.07L530.16,274.79L531.51,277.11L531.81,277.20L531.81,277.20L531.85,277.10L533.71,274.13L536.77,270.93L539.48,274.28L543.76,274.84L551.17,272.51L553.49,273.15L556.81,267.98L558.98,266.74L562.28,274.36L562.28,274.36L562.28,274.36L562.28,274.17L563.66,269.29L564.73,269.00L569.00,258.17L569.20,257.21L569.06,256.18L570.18,247.31L571.56,246.99L574.90,243.78L574.78,243.54L570.89,239.88L570.17,234.63L568.85,230.28L568.76,229.46L552.36,229.46L549.03,229.46L534.05,229.46L532.89,229.46Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M531.81,277.20L531.81,277.20L531.96,277.25L535.06,281.17L538.74,284.46L541.80,289.63L542.02,289.91L542.13,290.16L546.78,292.13L549.65,292.70L552.60,295.54L552.67,295.69L552.76,295.50L556.07,295.27L559.31,294.30L561.61,293.92L562.32,293.08L562.93,292.37L563.55,291.65L565.68,289.19L566.24,288.54L566.19,288.48L559.35,280.21L559.13,279.76L562.28,274.51L562.28,274.36L562.28,274.36L562.28,274.36L558.98,266.74L556.81,267.98L553.49,273.15L551.17,272.51L543.76,274.84L539.48,274.28L536.77,270.93L533.71,274.13L531.85,277.10L531.81,277.20Z " data-iso="SSD" data-name="S. Sudan" data-pop="8260490.0"/><path d="M419.97,255.20L416.66,250.75L413.27,248.62L408.07,249.06L407.11,251.54L407.00,251.92L405.09,255.83L406.80,259.24L406.87,259.60L414.26,259.79L415.17,260.51L409.14,260.54L406.22,261.48L406.24,261.78L406.25,263.19L406.24,263.85L406.34,264.01L409.02,263.72L411.00,262.85L414.47,262.87L415.49,262.87L416.48,262.91L419.14,263.94L422.44,263.79L422.65,263.84L422.67,263.57L422.67,261.91L420.31,255.81L420.03,255.23L419.97,255.20Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M416.74,276.05L419.54,281.94L421.99,283.35L422.11,283.49L425.82,278.47L425.91,277.96L425.92,277.85L425.68,277.81L424.48,274.63L420.96,272.46L419.37,272.80L416.68,275.83L416.74,276.05Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M184.36,256.60L182.14,258.47L181.94,259.07L182.30,259.26L185.54,260.69L187.60,261.12L188.72,260.33L188.80,260.28L189.00,258.52L187.97,258.17L184.50,256.65L184.42,256.64L184.36,256.60Z " data-iso="SLV" data-name="El Salvador" data-pop="7185218.0"/><path d="M607.59,267.95L595.55,270.87L593.84,270.90L590.82,267.62L590.20,267.07L589.95,267.55L589.63,268.17L589.27,268.86L589.23,269.00L590.34,273.26L591.20,274.65L604.13,279.59L605.18,279.59L605.61,278.79L607.96,274.40L607.89,272.53L607.69,267.94L607.59,267.95Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M586.02,313.79L591.70,305.93L594.36,303.19L599.63,299.32L602.15,296.42L607.48,288.53L613.23,275.62L613.87,271.53L613.26,265.34L608.07,267.89L607.69,267.94L607.89,272.53L607.96,274.40L605.61,278.79L605.18,279.59L604.45,280.44L596.00,290.66L590.51,291.57L586.81,293.76L586.72,293.95L586.34,294.58L583.97,298.00L584.01,311.26L585.71,314.21L586.02,313.79Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M509.85,143.82L509.85,143.90L510.27,145.69L511.05,146.12L510.38,147.43L510.42,147.56L510.52,147.55L510.88,148.92L511.46,152.09L511.30,152.27L511.30,152.32L512.74,153.58L513.06,153.77L514.72,154.68L514.72,154.77L515.06,154.67L515.40,153.46L516.65,153.84L518.24,156.71L518.31,156.83L518.47,156.85L518.80,156.76L520.42,156.57L520.49,156.60L520.71,156.54L520.68,154.72L521.34,154.57L520.81,149.85L520.91,149.78L520.86,149.75L518.08,148.22L516.25,146.07L513.68,143.40L513.50,143.20L513.40,143.14L511.33,143.27L510.50,143.62L509.91,143.82L509.85,143.82Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M290.88,288.51L288.60,286.77L282.02,286.75L281.32,288.41L281.29,288.34L279.00,290.94L279.87,296.12L280.79,296.10L283.14,301.10L283.26,301.22L283.35,301.25L285.10,299.26L286.67,299.44L288.89,299.84L289.03,299.85L289.07,299.81L289.69,290.25L290.64,289.02L290.88,288.51Z " data-iso="SUR" data-name="Suriname" data-pop="481267.0"/><path d="M518.65,132.82L516.27,131.68L512.81,131.77L508.91,131.38L508.62,131.33L508.55,131.34L506.72,132.88L506.07,133.35L503.83,134.23L503.77,134.50L503.76,134.53L503.56,135.04L503.58,135.23L504.28,136.44L504.45,136.56L504.53,136.54L508.83,137.32L513.84,134.67L517.90,135.21L517.95,135.17L517.93,134.60L518.38,133.99L518.49,133.54L518.80,132.99L518.83,132.85L518.65,132.82Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M503.07,141.75L502.55,141.05L502.37,140.57L501.85,140.55L501.70,140.62L498.46,141.54L497.70,142.18L495.45,141.77L495.33,141.75L495.29,141.96L494.54,142.46L495.17,143.65L495.57,145.03L495.36,145.21L495.19,145.28L500.80,144.16L500.74,142.87L502.85,141.74L503.10,141.83L503.07,141.75Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M505.89,67.58L505.58,67.59L497.30,71.05L496.72,73.33L492.53,76.50L491.37,81.56L487.10,85.42L487.86,90.45L489.77,91.63L489.08,95.67L486.54,99.17L486.29,99.00L489.66,106.20L491.04,107.50L491.34,110.96L494.98,110.81L494.68,109.60L498.92,108.66L500.07,103.20L498.52,97.82L505.40,96.89L500.91,93.74L500.70,87.92L508.94,82.62L509.07,80.41L511.47,77.39L515.18,77.58L515.81,77.51L514.36,75.72L514.90,74.39L512.66,70.33L506.55,67.75L505.89,67.58Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M552.93,401.12L550.68,405.68L552.70,405.93L553.19,404.20L553.28,404.25L553.34,403.10L553.21,402.24L553.28,402.00L553.07,401.13L553.01,401.08L552.93,401.12Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M265.70,243.57L265.80,243.65L265.99,243.73L266.04,243.64L266.05,243.55L265.71,243.55L265.70,243.57Z " data-iso="SXM" data-name="Sint Maarten" data-pop="37429.0"/><path d="M579.41,174.73L571.15,176.69L567.69,175.90L565.62,176.83L563.23,176.35L561.46,179.44L561.33,179.68L561.22,180.67L561.68,181.21L561.89,183.25L562.20,184.05L563.11,183.88L563.62,186.83L562.45,188.23L562.33,188.35L562.30,188.57L562.55,189.42L562.46,189.59L562.37,190.69L562.35,190.86L562.67,190.93L564.51,192.20L565.52,192.36L570.14,189.06L570.84,188.57L571.61,188.06L577.15,181.69L577.17,177.29L579.61,175.21L579.61,175.16L579.41,174.73Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M528.76,237.58L512.50,228.24L505.60,224.26L503.72,225.28L502.63,225.87L503.02,227.94L505.21,236.97L504.67,247.71L501.38,251.86L498.84,257.65L499.17,259.18L499.67,259.95L500.20,260.78L500.61,261.42L501.16,261.43L503.04,263.49L505.64,272.41L501.30,272.51L500.59,273.91L505.36,281.00L505.20,281.29L505.53,281.32L509.54,280.89L511.86,279.64L515.84,276.23L521.40,274.56L524.19,270.51L527.58,269.12L527.71,269.15L527.81,268.76L524.44,262.19L525.58,260.53L525.94,256.16L527.57,253.97L530.68,251.96L530.30,240.03L530.24,238.43L528.76,237.58Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M459.52,268.92L459.23,269.02L459.03,268.89L458.04,268.61L457.34,268.45L457.53,268.66L459.16,274.59L459.38,284.08L461.21,286.41L461.59,286.20L462.55,285.95L461.69,273.98L459.89,271.05L460.23,269.27L460.31,268.88L459.52,268.92Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M760.37,273.02L761.21,278.67L764.59,282.78L765.11,284.05L765.94,285.15L768.94,286.14L768.72,287.55L772.08,285.86L771.11,285.03L764.97,277.18L762.91,275.20L762.08,271.29L764.00,264.01L763.63,260.83L766.53,260.16L773.14,266.34L773.20,266.33L770.64,259.77L774.02,256.63L779.02,256.92L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.18,235.26L754.12,239.26L753.29,242.03L758.35,249.87L758.38,253.10L757.33,253.82L760.36,258.32L763.00,266.07L760.70,271.75L760.37,273.02Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M658.98,165.45L658.34,165.32L658.46,165.44L658.98,165.45Z M652.75,174.94L652.79,175.05L660.29,170.46L662.21,171.36L663.88,176.11L668.98,173.86L673.19,174.69L673.24,174.72L673.30,174.66L672.06,170.53L668.91,169.80L667.73,166.98L667.67,166.79L667.50,166.76L663.89,167.66L661.48,166.32L655.24,166.52L654.89,164.94L659.37,164.04L659.35,163.98L659.18,163.99L657.66,161.58L649.92,167.53L652.38,169.58L652.80,174.67L652.75,174.94Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M615.97,160.12L615.85,160.11L614.62,160.30L610.28,156.63L605.80,158.49L606.30,159.38L609.40,157.39L612.41,160.83L610.47,162.52L608.01,161.66L608.37,165.20L611.71,168.88L612.67,174.07L612.76,174.32L619.14,171.29L622.10,171.65L628.32,173.96L631.75,176.85L633.99,176.83L635.00,180.36L635.10,180.50L635.33,180.46L638.31,182.04L640.42,181.12L640.35,179.69L644.00,177.91L644.26,175.34L648.91,174.32L649.05,174.30L648.93,173.91L648.91,172.22L645.75,171.12L635.28,164.70L631.34,160.37L627.55,159.84L626.75,157.87L622.30,156.59L618.96,160.33L616.73,160.16L615.97,160.12Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M839.33,341.21L838.80,341.52L839.53,341.82L839.97,341.42L840.11,340.98L839.33,341.21Z M841.66,340.09L842.30,340.73L842.12,340.97L841.92,342.13L842.39,341.74L848.51,338.81L848.14,337.85L843.18,338.78L842.00,339.79L841.66,340.09Z " data-iso="TLS" data-name="East Timor" data-pop="1131612.0"/><path d="M270.15,271.96L270.07,269.46L268.34,269.94L267.39,272.19L270.15,271.96Z " data-iso="TTO" data-name="Trinidad and Tobago" data-pop="1310000.0"/><path d="M482.28,175.78L481.43,179.85L481.69,182.42L479.43,186.92L485.45,199.02L485.65,199.87L486.00,199.68L487.66,197.87L487.29,195.43L491.28,192.01L491.19,189.25L490.88,189.10L488.06,187.53L487.25,185.07L489.82,181.86L489.64,176.00L487.36,176.03L485.99,174.64L482.99,175.56L482.28,175.78Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M561.46,179.44L563.23,176.35L565.62,176.83L567.69,175.90L571.15,176.69L579.41,174.73L579.61,175.16L579.88,175.09L580.58,174.26L583.81,174.75L586.41,174.96L586.52,175.04L586.52,174.99L583.27,166.99L585.23,166.07L585.33,166.08L585.22,165.95L585.16,165.89L585.04,165.73L583.61,164.68L582.63,164.75L580.67,161.04L580.61,160.88L580.60,160.82L575.85,159.73L574.92,159.42L574.70,159.76L570.38,161.33L567.66,161.20L559.89,159.75L556.72,157.61L549.44,158.40L544.84,160.96L539.89,160.90L542.24,162.20L539.99,163.44L533.53,163.40L532.06,166.73L534.07,166.39L533.09,169.96L536.87,174.97L542.40,178.21L548.00,176.26L552.44,179.01L554.99,178.48L556.58,176.97L559.10,176.86L561.61,179.14L561.46,179.44Z M531.90,158.72L532.16,158.79L532.09,160.42L532.24,161.28L531.44,162.24L531.54,162.39L533.61,162.59L537.72,161.01L536.56,158.23L536.59,157.82L535.08,157.90L531.89,158.62L531.90,158.72Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M822.04,227.22L821.11,217.77L820.08,218.55L818.79,225.32L819.82,227.19L822.04,227.22Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M551.70,311.96L551.60,312.02L552.63,313.73L552.75,316.24L551.94,316.71L551.82,316.72L551.76,316.81L551.39,320.97L551.15,321.65L549.18,324.06L548.21,324.04L548.21,324.21L548.00,325.94L550.26,332.85L552.07,337.09L552.16,337.41L552.23,337.67L555.16,339.95L555.38,339.95L558.56,341.66L558.73,341.75L558.78,341.72L562.03,342.07L563.02,343.00L564.75,349.39L564.77,349.51L565.45,349.50L571.68,349.90L575.62,348.92L581.79,345.53L581.76,345.45L578.45,338.31L579.32,333.23L577.30,330.76L578.41,325.21L578.47,324.91L573.74,320.71L562.41,311.73L562.18,311.73L561.84,311.73L553.61,311.73L553.06,311.73L551.73,311.95L551.70,311.96Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M562.17,311.12L562.30,307.53L565.44,302.29L565.18,299.52L562.81,294.27L562.32,293.08L561.61,293.92L559.31,294.30L556.07,295.27L552.76,295.50L552.67,295.69L552.84,295.79L552.36,299.39L553.74,300.05L553.03,302.14L549.90,305.75L548.83,313.00L548.82,313.11L548.92,313.10L551.12,312.13L551.58,311.96L551.70,311.96L551.73,311.95L553.06,311.73L553.61,311.73L561.84,311.73L562.18,311.73L562.17,311.12Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M542.35,122.42L541.84,122.39L538.38,124.55L530.17,123.61L520.82,124.39L520.80,124.41L520.97,124.65L521.52,128.34L519.68,132.89L518.94,132.84L518.83,132.85L518.80,132.99L518.49,133.54L518.38,133.99L517.93,134.60L517.95,135.17L518.21,135.14L518.60,135.69L519.08,135.87L520.09,136.72L520.15,136.77L520.24,136.71L523.72,136.91L525.75,137.57L530.14,135.72L530.26,135.68L530.30,135.56L533.47,135.13L537.24,136.71L539.94,140.84L535.93,145.39L535.80,145.51L536.13,145.87L536.52,146.07L538.11,145.97L540.02,146.18L540.04,145.89L542.47,141.64L549.28,142.96L547.73,145.67L555.19,147.79L558.69,146.87L558.20,145.49L554.56,144.63L554.75,142.03L562.52,139.79L562.61,139.75L563.85,137.15L566.69,135.65L565.49,133.08L566.49,132.23L560.97,129.46L560.48,129.92L554.97,128.23L553.82,128.45L549.43,125.35L547.47,121.58L542.40,122.42L542.35,122.42Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M287.45,416.29L287.37,416.43L286.89,417.74L286.86,420.71L286.97,424.50L287.13,424.84L287.23,429.68L289.24,431.71L298.02,433.34L301.68,429.20L301.81,429.07L300.79,424.61L299.76,423.01L290.07,416.29L287.66,416.55L287.45,416.29Z " data-iso="URY" data-name="Uruguay" data-pop="3494382.0"/><path d="M123.46,133.61L121.67,138.77L121.94,136.10L117.03,135.59L115.56,142.06L114.93,142.60L108.12,154.12L106.92,157.27L103.72,168.73L106.11,175.77L105.28,177.95L107.22,182.45L106.88,184.62L114.23,188.84L114.33,191.56L114.32,191.58L121.23,190.97L122.24,192.20L130.86,195.93L139.18,195.91L139.54,194.70L144.81,194.33L148.15,198.59L151.58,204.28L154.17,201.58L157.81,201.62L162.02,213.64L167.27,215.21L167.34,214.97L167.88,208.47L170.17,206.73L175.66,204.00L176.57,201.76L177.91,202.32L184.62,202.28L186.51,201.60L188.05,203.59L191.59,202.64L192.36,200.94L190.56,200.19L198.25,198.67L198.42,199.64L202.55,198.91L205.37,201.42L210.24,200.96L212.33,204.10L211.26,208.44L213.21,214.55L214.81,217.35L216.61,217.84L218.28,214.60L218.62,210.74L217.55,202.64L217.37,197.55L221.65,191.98L232.68,184.15L235.44,182.76L237.21,180.24L235.79,179.34L238.22,178.73L238.94,170.20L240.08,172.07L244.92,167.17L247.30,163.66L247.19,162.38L251.33,160.32L259.98,158.74L257.42,156.53L258.76,154.37L266.40,149.55L271.16,147.70L271.06,146.61L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.46,133.61Z M110.86,108.09L109.96,109.90L111.35,113.24L112.30,111.88L110.86,108.09Z M64.85,103.16L60.76,103.77L58.58,106.15L64.06,104.74L64.85,103.16Z M36.47,84.32L35.28,85.29L39.17,86.17L42.11,85.36L36.47,84.32Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.56,112.38L117.79,111.19L117.89,110.82L118.74,109.77L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L128.73,65.69L125.16,64.32L116.41,64.16L101.37,61.54L99.09,62.00L98.35,60.67L93.61,62.10L87.58,62.90L82.39,64.08L74.68,67.17L67.41,68.04L66.40,70.59L67.55,73.49L71.60,73.74L73.15,75.60L69.98,74.06L69.75,76.03L67.80,76.77L65.50,75.12L62.95,75.18L51.66,77.97L54.76,81.71L59.48,81.84L66.13,80.33L63.29,83.75L53.29,85.52L49.96,86.99L42.63,91.14L43.87,93.12L42.36,95.03L42.70,96.65L46.28,98.93L44.48,100.56L47.39,99.70L50.90,99.97L51.02,101.24L53.50,99.78L55.12,100.92L46.52,106.40L39.78,109.89L38.66,109.33L33.97,110.58L33.79,111.91L36.39,110.47L41.28,109.78L52.71,105.84L55.17,104.40L66.13,100.09L65.43,98.89L76.74,93.06L80.70,91.80L82.61,92.89L73.14,96.73L73.85,98.49L83.72,95.15L85.08,93.25L87.62,92.06L95.02,95.84L96.55,95.70L109.25,101.42L108.70,99.67L110.99,99.13L110.02,101.28L111.96,101.45L113.05,99.80L114.77,101.21L114.60,103.80L113.15,105.32L115.77,108.53L114.90,113.28L114.95,113.35Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M660.36,165.21L659.49,164.51L659.82,164.91L660.36,165.21Z M615.97,160.12L616.73,160.16L618.96,160.33L622.30,156.59L626.75,157.87L627.55,159.84L631.34,160.37L635.28,164.70L645.75,171.12L648.91,172.22L648.93,173.91L649.05,174.30L649.91,174.22L650.63,174.35L651.77,174.63L652.71,174.84L652.75,174.94L652.80,174.67L652.38,169.58L649.92,167.53L657.66,161.58L659.18,163.99L659.35,163.98L659.42,163.92L664.98,161.88L659.49,160.72L657.37,157.98L657.54,156.76L657.47,156.83L657.27,156.97L652.97,159.96L651.40,162.49L646.47,160.63L645.16,157.73L643.77,157.69L643.23,154.61L639.16,151.63L638.01,152.21L631.19,152.42L627.87,149.39L613.16,147.11L615.80,159.30L615.97,160.12Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M238.88,265.78L236.69,266.71L233.81,270.68L234.85,278.56L234.55,281.53L241.70,283.38L243.66,286.29L249.77,286.64L248.35,291.49L249.79,296.29L249.09,298.55L251.11,303.55L251.17,303.79L251.96,304.61L255.49,305.68L261.95,300.22L260.00,298.96L259.95,293.96L263.68,295.32L267.74,292.84L270.41,289.62L270.32,289.58L269.69,288.74L270.56,283.98L271.82,282.83L270.65,281.24L273.42,278.69L272.95,277.62L272.50,277.38L269.18,277.44L270.69,274.72L266.59,273.07L264.38,270.54L260.46,270.80L258.35,272.08L254.62,270.74L248.33,270.67L247.68,268.28L243.97,267.14L242.99,264.65L242.70,266.96L237.94,269.65L239.05,274.77L237.61,275.84L236.36,274.03L237.14,266.62L238.78,265.95L238.88,265.78Z " data-iso="VEN" data-name="Venezuela" data-pop="26814843.0"/><path d="M765.33,228.09L765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L786.11,255.80L786.67,264.35L782.48,266.42L778.21,270.97L778.51,271.22L779.85,273.09L779.88,276.72L783.86,274.59L783.52,271.64L785.04,272.94L791.90,267.66L792.62,261.86L791.87,258.64L789.70,253.19L786.08,249.52L778.04,240.33L780.38,233.99L780.00,233.18L783.41,231.25L783.55,231.21L779.46,229.45L779.07,226.65L772.96,225.50L770.61,227.51L765.45,227.96L765.33,228.09Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M561.58,192.06L560.51,194.67L561.67,195.36L561.79,195.37L561.81,195.07L562.01,194.34L561.86,193.55L561.89,192.64L561.77,192.08L561.58,192.06Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/><path d="M615.26,240.23L614.55,240.34L606.46,241.71L602.17,246.25L598.49,246.55L588.97,246.09L587.99,249.63L588.18,250.85L587.78,253.71L588.68,254.77L592.36,263.11L598.08,260.29L601.29,259.75L606.37,257.95L607.45,256.49L616.86,252.20L617.77,249.28L619.27,248.64L618.24,246.42L618.01,246.31L615.42,240.58L615.26,240.23Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M546.08,387.55L545.37,387.62L542.51,389.35L538.96,392.53L538.08,394.91L535.11,396.87L534.06,399.81L530.29,400.31L526.45,398.80L523.20,403.52L519.06,403.32L518.49,397.74L517.57,396.94L517.43,396.83L517.37,398.34L516.85,410.04L514.34,411.80L509.30,410.93L508.23,408.53L506.34,410.64L506.43,410.73L509.61,419.28L511.05,421.88L509.86,426.26L512.38,431.30L515.75,432.81L520.99,431.33L534.67,429.13L545.73,420.37L550.30,413.38L554.18,409.14L555.41,405.11L555.59,404.28L555.26,404.29L553.99,404.33L553.54,404.23L553.28,404.25L553.19,404.20L552.70,405.93L550.68,405.68L552.93,401.12L553.01,401.08L552.97,400.82L553.43,396.34L551.84,388.49L551.84,388.30L551.57,388.10L546.99,387.38L546.12,387.55L546.08,387.55Z M542.01,410.64L544.35,412.34L542.42,415.98L540.16,417.92L537.90,415.40L538.50,413.66L542.01,410.64Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M542.42,415.98L544.35,412.34L542.01,410.64L538.50,413.66L537.90,415.40L540.16,417.92L542.42,415.98Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M558.56,341.66L555.38,339.95L555.16,339.95L552.23,337.67L552.16,337.41L551.62,337.51L544.85,341.28L545.51,343.27L544.74,349.94L546.61,352.27L548.87,351.58L548.74,355.92L542.27,351.98L540.85,349.52L539.49,350.94L532.20,348.77L531.22,347.01L531.11,346.99L531.17,347.46L530.56,354.60L524.85,354.60L524.58,365.18L528.07,370.62L528.66,371.22L529.32,371.07L532.79,370.78L533.86,371.20L534.35,371.77L534.93,371.95L539.69,372.36L541.66,369.86L549.84,364.06L550.29,364.06L550.26,363.57L551.99,360.88L553.92,360.24L558.41,358.48L559.08,358.23L558.93,357.97L557.79,356.57L559.39,353.01L559.74,346.92L560.27,346.67L558.74,341.85L558.73,341.75L558.56,341.66Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M552.28,387.93L557.05,380.46L557.89,369.82L556.98,367.45L550.27,364.63L550.29,364.06L549.84,364.06L541.66,369.86L539.69,372.36L534.93,371.95L534.35,371.77L534.28,371.94L536.63,377.42L540.09,381.40L542.01,385.09L545.17,386.18L545.94,387.42L546.08,387.55L546.12,387.55L546.99,387.38L551.57,388.10L551.84,388.30L552.28,387.93Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/><path d="M793.38,236.65L788.34,237.46L787.64,241.88L788.74,242.48L792.70,241.29L793.38,236.65Z M773.41,130.25L773.41,130.73L775.15,137.67L779.73,136.62L787.86,141.22L784.88,140.91L781.31,141.52L778.38,145.48L775.31,145.81L773.73,147.99L770.70,147.39L770.13,150.86L767.87,154.96L765.65,156.09L758.36,156.68L754.98,158.52L737.42,155.69L730.76,154.91L722.78,149.71L719.90,148.35L713.74,146.97L708.90,145.25L709.06,143.21L707.08,140.06L697.47,134.65L696.27,132.70L696.18,132.54L696.04,132.53L695.42,132.68L695.36,132.79L695.22,132.84L694.95,132.81L694.67,132.74L691.51,135.87L692.84,139.18L685.83,140.19L685.68,144.73L686.69,146.66L684.24,145.87L680.10,147.07L683.92,153.19L683.68,156.97L683.63,157.04L683.75,157.25L676.57,161.21L674.48,163.57L670.22,163.07L667.90,166.75L667.67,166.79L667.73,166.98L668.91,169.80L672.06,170.53L673.30,174.66L673.24,174.72L673.10,174.75L672.28,174.70L671.81,174.99L672.36,175.44L672.41,175.47L672.57,175.42L676.65,176.98L678.38,179.81L679.87,180.29L680.00,180.35L680.36,180.52L681.66,180.90L682.13,181.02L682.93,181.00L683.13,180.94L683.14,180.96L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.28,185.83L687.46,185.74L690.08,183.81L690.33,181.16L694.21,181.82L696.47,180.26L700.12,181.44L706.68,179.76L706.94,178.72L713.29,177.63L716.76,178.88L717.18,181.47L718.63,183.28L719.27,186.64L721.00,188.11L724.66,188.77L730.41,191.10L733.38,191.78L734.58,191.08L739.71,194.52L741.01,194.39L743.88,191.54L746.58,193.56L750.07,200.49L748.70,207.13L748.68,207.13L748.80,207.22L751.06,209.42L752.09,212.98L750.05,220.50L750.77,222.67L754.35,223.21L759.14,230.31L762.90,230.95L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.45,227.96L770.61,227.51L772.96,225.50L779.07,226.65L779.46,229.45L783.55,231.21L783.82,231.15L788.33,230.62L790.88,235.68L790.66,233.54L795.30,229.99L797.29,230.25L799.66,228.75L799.67,228.74L799.67,228.67L799.69,228.58L799.78,228.56L799.86,228.64L798.69,226.17L799.00,226.07L800.79,227.54L801.06,227.61L801.27,227.47L801.34,227.42L801.79,227.50L801.97,227.32L805.02,226.87L809.96,223.29L813.30,220.03L813.63,218.21L815.44,217.35L813.91,215.17L814.12,212.25L816.13,210.92L816.69,208.11L818.64,206.83L818.36,201.16L816.05,199.88L816.58,197.39L811.93,193.56L815.48,194.16L811.53,191.12L811.16,189.85L806.74,184.71L803.91,183.27L806.89,176.99L810.82,175.74L810.60,174.11L803.51,173.32L802.58,175.00L800.01,174.37L798.98,171.82L796.13,171.32L794.13,167.92L797.84,166.94L797.81,165.71L801.14,161.62L804.86,163.55L803.73,167.02L804.98,167.61L811.54,164.79L811.59,164.81L816.97,159.29L820.11,159.89L818.93,158.07L821.66,156.93L822.34,154.95L824.72,155.69L824.86,155.81L824.97,155.70L825.69,154.32L823.00,147.15L826.72,146.88L826.78,141.83L822.46,136.24L816.53,137.66L810.18,132.41L803.95,130.95L796.35,123.51L790.99,119.20L781.27,117.70L777.60,118.76L779.99,122.85L779.09,124.13L779.00,128.24L779.92,129.41L777.21,131.32L774.12,130.55L773.41,130.25Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg>
diff --git a/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js b/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js
index 1df74622deb0c2a248268a9dd351a280682dcfb7..6e561a6ea58c8caefdbb5732ac3503c9219e88fa 100644
--- a/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js
+++ b/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js
@@ -144,10 +144,10 @@
             newRowId = 'row' + newRowId;
 
             $($.parseHTML(' <tr id="' + newRowId + '" class="addNewUserRow">\
-				<td><input id="useradd_login" placeholder="username" size="10" /></td>\
+				<td><input id="useradd_login" placeholder="username" size="10" maxlength="100" /></td>\
 				<td><input id="useradd_password" placeholder="password" size="10" /></td>\
-				<td><input id="useradd_email" placeholder="email@domain.com" size="15" /></td>\
-				<td><input id="useradd_alias" placeholder="alias" size="15" /></td>\
+				<td><input id="useradd_email" placeholder="email@domain.com" size="15" maxlength="100" /></td>\
+				<td><input id="useradd_alias" placeholder="alias" size="15" maxlength="45" /></td>\
 				<td>-</td>\
                 <td>-</td>\
 				<td><input type="submit" class="btn adduser"  value="' + _pk_translate('General_Save') + '" /></td>\
diff --git a/plugins/UsersManager/templates/userSettings.twig b/plugins/UsersManager/templates/userSettings.twig
index 2c802670d01f7469a26f362b27fb1d8c53d02948..53f46d20e6fb9a5b4d1787a7b5ec5bd5b68fac4b 100644
--- a/plugins/UsersManager/templates/userSettings.twig
+++ b/plugins/UsersManager/templates/userSettings.twig
@@ -22,12 +22,14 @@
 
         <div piwik-field uicontrol="text" name="alias"
              ng-model="personalSettings.alias"
+             maxlength="45"
              title="{{ 'UsersManager_Alias'|translate|e('html_attr') }}"
              value="{{ userAlias|raw }}">
         </div>
 
         <div piwik-field uicontrol="text" name="email"
              ng-model="personalSettings.email"
+             maxlength="100"
              title="{{ 'UsersManager_Email'|translate|e('html_attr') }}"
              value="{{ userEmail }}">
         </div>
diff --git a/plugins/Widgetize/Menu.php b/plugins/Widgetize/Menu.php
index 7ce5b188ba15a89250fce161c67cf62f1af95bf9..611292883c0d45763cf5dc44fcfb737d1d15c0d7 100644
--- a/plugins/Widgetize/Menu.php
+++ b/plugins/Widgetize/Menu.php
@@ -18,7 +18,7 @@ class Menu extends \Piwik\Plugin\Menu
         $tooltip   = Piwik::translate('Widgetize_TopLinkTooltip');
         $urlParams = $this->urlForAction('index', array('segment' => false));
 
-        $menu->addPlatformItem('General_Widgets', $urlParams, 5, $tooltip);
+        $menu->addPlatformItem('General_Widgets', $urlParams, 6, $tooltip);
     }
 
 }
diff --git a/plugins/Widgetize/tests/System/WidgetTest.php b/plugins/Widgetize/tests/System/WidgetTest.php
index ebc5a5a7bdb0f15555e74a4ee8b09af3c6074731..4596913d05d7db231e032bfee3923bae4ef83dfc 100644
--- a/plugins/Widgetize/tests/System/WidgetTest.php
+++ b/plugins/Widgetize/tests/System/WidgetTest.php
@@ -986,10 +986,10 @@ class WidgetTest extends SystemTestCase
                     ),
             ), array (
                 'name' => 'Latest Piwik Plugin Updates',
-                'uniqueId' => 'widgetCorePluginsAdmingetNewPlugins',
+                'uniqueId' => 'widgetMarketplacegetNewPlugins',
                 'parameters' =>
                     array (
-                        'module' => 'CorePluginsAdmin',
+                        'module' => 'Marketplace',
                         'action' => 'getNewPlugins',
                     ),
             ), array (
diff --git a/tests/PHPUnit/Integration/DependencyTest.php b/tests/PHPUnit/Integration/DependencyTest.php
index 0f0de5562cfcadf9c6d1a5c3bc61a25c303ee88f..8a6d98d2ceb2b377a5be670cc35cdadf6d63bebc 100644
--- a/tests/PHPUnit/Integration/DependencyTest.php
+++ b/tests/PHPUnit/Integration/DependencyTest.php
@@ -147,7 +147,7 @@ class DependencyTest extends IntegrationTestCase
 
     public function test_getMissingVersion_EmptyCurrentVersion_ShouldBeDeclaredAsMissing()
     {
-        $this->assertMissingVersion('', '5.5', array('>=5.5'));
+        $this->assertMissingVersion('', '>=5.5', array('>=5.5'));
     }
 
     public function test_getMissingVersion_EmptyRequiredVersion_ShouldBeIgnored()
@@ -248,6 +248,26 @@ class DependencyTest extends IntegrationTestCase
         $this->assertMissingVersion('6.4', '>=5.2,<=9.0', array());
     }
 
+    /**
+     * @dataProvider getHasDepenedencyToDisabledPluginProvider
+     */
+    public function test_hasDependencyToDisabledPlugin($expectedHasDependency, $requires)
+    {
+        $this->assertSame($expectedHasDependency, $this->dependency->hasDependencyToDisabledPlugin($requires));
+    }
+
+    public function getHasDepenedencyToDisabledPluginProvider()
+    {
+        return array(
+            array($expected = false, $requires = null),
+            array($expected = false, $requires = array()),
+            array($expected = false, $requires = array('php' => '<5.2', 'piwik' => '<2.0')),
+            array($expected = false, $requires = array('php' => '<5.2', 'piwik' => '<2.0', 'CoreHome' => '2.15.0')),
+            array($expected = false, $requires = array('CoreHome' => '<2.0', 'Actions' => '>=2.15.0')),
+            array($expected = true, $requires = array('php' => '<5.2', 'piwik' => '<2.0', 'FooBar' => '2.15.0')),
+        );
+    }
+
     private function missingPiwik($requiredVersion, $causedBy = null)
     {
         return $this->buildMissingDependecy('piwik', Version::VERSION, $requiredVersion, $causedBy);
diff --git a/tests/PHPUnit/Integration/Plugin/ManagerTest.php b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
index ff99dbe0b19c20388e768983a288d420e3557b5d..3c4252de77b46289ccfdf994639a35df38bc3d08 100644
--- a/tests/PHPUnit/Integration/Plugin/ManagerTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
@@ -127,14 +127,14 @@ class ManagerTest extends IntegrationTestCase
             array(true, 'pluginNameTest'),
             array(true, 'PluginNameTest'),
             array(true, 'PluginNameTest92323232eerwrwere938'),
+            array(true, 'a_ererer'),
+            array(true, 'a_'),
             array(false, ''),
             array(false, '0'),
             array(false, '0a'),
             array(false, 'a.'),
             array(false, 'a-'),
-            array(false, 'a_'),
             array(false, 'a-ererer'),
-            array(false, 'a_ererer'),
             array(false, '..'),
             array(false, '/'),
         );
diff --git a/tests/PHPUnit/Integration/ReleaseCheckListTest.php b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
index 8f50b1ee908dc28011819b057869c2abfee3cddd..459dca0029a733580aa144fd013817f58c8354a3 100644
--- a/tests/PHPUnit/Integration/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
@@ -455,8 +455,7 @@ class ReleaseCheckListTest extends \PHPUnit_Framework_TestCase
 
     public function test_piwikJs_minified_isUpToDate()
     {
-        shell_exec('unzip -n '. PIWIK_DOCUMENT_ROOT .'/tests/resources/yuicompressor/yuicompressor-2.4.7.zip.');
-        shell_exec("sed '/<DEBUG>/,/<\/DEBUG>/d' < ". PIWIK_DOCUMENT_ROOT ."/js/piwik.js | sed 's/eval/replacedEvilString/' | java -jar yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar --type js --line-break 1000 | sed 's/replacedEvilString/eval/' | sed 's/^[/][*]/\/*!/' > " . PIWIK_DOCUMENT_ROOT ."/piwik-minified.js");
+        shell_exec("sed '/<DEBUG>/,/<\/DEBUG>/d' < ". PIWIK_DOCUMENT_ROOT ."/js/piwik.js | sed 's/eval/replacedEvilString/' | java -jar ". PIWIK_DOCUMENT_ROOT ."/tests/resources/yuicompressor/yuicompressor-2.4.7.jar --type js --line-break 1000 | sed 's/replacedEvilString/eval/' | sed 's/^[/][*]/\/*!/' > " . PIWIK_DOCUMENT_ROOT ."/piwik-minified.js");
 
         $this->assertFileEquals(PIWIK_DOCUMENT_ROOT . '/piwik-minified.js',
             PIWIK_DOCUMENT_ROOT . '/piwik.js',
diff --git a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
index c8bce62d517200830163f3a45c93b07a22157315..a8787cc5ee4d3d1f1f983eebee7ebba30c1cbb33 100644
--- a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
+++ b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
@@ -179,7 +179,7 @@ class TrackerCodeGeneratorTest extends IntegrationTestCase
     
   })();
 &lt;/script&gt;
-&lt;script type='text/javascript' src=&quot;//localhost/piwik/piwik.js&quot;&gt;
+&lt;script type='text/javascript' src=&quot;//localhost/piwik/piwik.js&quot;&gt;&lt;/script&gt;
 &lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;//localhost/piwik/piwik.php?idsite=1&quot; style=&quot;border:0;&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/noscript&gt;
 &lt;!-- End Piwik Code --&gt;
 ";
diff --git a/tests/PHPUnit/System/BackwardsCompatibility1XTest.php b/tests/PHPUnit/System/BackwardsCompatibility1XTest.php
index 68de1b1e3c5024c8f82ecdbfc4b557a8a4d41819..337c0c2099d39e87d13aa32eb1742a505fd5db22 100644
--- a/tests/PHPUnit/System/BackwardsCompatibility1XTest.php
+++ b/tests/PHPUnit/System/BackwardsCompatibility1XTest.php
@@ -99,6 +99,12 @@ class BackwardsCompatibility1XTest extends SystemTestCase
             )
         );
 
+        /**
+         * When Piwik\Tests\System\BackwardsCompatibility1XTest is failing,
+         * as this test compares fixtures to OneVisitorTwoVisits* fixtures,
+         * sometimes for a given API method that fails to generate the same output as OneVisitorTwoVisits does,
+         * we need to add the API below which will cause the fixtures for this API to be created in processed/
+         */
         $reportsToCompareSeparately = array(
 
             // the label column is not the first column here
@@ -106,7 +112,12 @@ class BackwardsCompatibility1XTest extends SystemTestCase
 
             // those reports generate a different segment as a different raw value was stored that time
             'DevicesDetection.getOsVersions',
-            'Goals.get'
+            'Goals.get',
+
+            // Following #9345
+            'Actions.getPageUrls',
+            'Actions.getDownloads',
+            'Actions.getDownload',
         );
 
         $apiNotToCall = array(
diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt b/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt
index 937d7d2f86e36c9740bb3cccf33bdae0977c957a..09d4c5e5eadea04b3f101c99e8de52306d39c4f9 100644
--- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt
+++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt
@@ -10,79 +10,95 @@ try 'php archive.php --url=http://your.piwik/path'
 -------------------------------------------------------
 
 
-INFO [2015-08-20 13:41:26] ---------------------------
-INFO [2015-08-20 13:41:26] INIT
-INFO [2015-08-20 13:41:26] Running Piwik 3.0.0-b1 as Super User
-INFO [2015-08-20 13:41:26] ---------------------------
-INFO [2015-08-20 13:41:26] NOTES
-INFO [2015-08-20 13:41:26] - If you execute this script at least once per hour (or more often) in a crontab, you may disable 'Browser trigger archiving' in Piwik UI > Settings > General Settings.
-INFO [2015-08-20 13:41:26]   See the doc at: http://piwik.org/docs/setup-auto-archiving/
-INFO [2015-08-20 13:41:26] - Reports for today will be processed at most every 150 seconds. You can change this value in Piwik UI > Settings > General Settings.
-INFO [2015-08-20 13:41:26] - Reports for the current week/month/year will be refreshed at most every 3600 seconds.
-INFO [2015-08-20 13:41:26] Will invalidate archived reports for 2012-08-09 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-08-10 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-08-11 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-08-15 for following siteIds: 1,2
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-09-30 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2014-03-12 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2014-03-13 for following siteIds: 1
-INFO [2015-08-20 13:41:27] - Will process 0 websites with new visits since 7 days 0 hours
-INFO [2015-08-20 13:41:27] - Will process 2 other websites because some old data reports have been invalidated (eg. using the Log Import script) , IDs: 1, 2
-INFO [2015-08-20 13:41:27] ---------------------------
-INFO [2015-08-20 13:41:27] START
-INFO [2015-08-20 13:41:27] Starting Piwik reports archiving...
-INFO [2015-08-20 13:41:27] Will pre-process for website id = 1, period = day, date = last52
-INFO [2015-08-20 13:41:27] - pre-processing all visits
-INFO [2015-08-20 13:41:29] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:41:29] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:41:29] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:41:31] Archived website id = 1, period = day, 3 segments, 0 visits in last last52 days, 0 visits today, Time elapsed: 2.207s
-INFO [2015-08-20 13:41:31] Will pre-process for website id = 1, period = week, date = last260
-INFO [2015-08-20 13:41:31] - pre-processing all visits
-INFO [2015-08-20 13:41:31] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:41:31] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:41:56] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:18] Archived website id = 1, period = week, 3 segments, 40 visits in last last260 weeks, 0 visits this week, Time elapsed: 47.002s
-INFO [2015-08-20 13:42:18] Will pre-process for website id = 1, period = month, date = last52
-INFO [2015-08-20 13:42:18] - pre-processing all visits
-INFO [2015-08-20 13:42:18] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:42:18] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:24] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:29] Archived website id = 1, period = month, 3 segments, 40 visits in last last52 months, 0 visits this month, Time elapsed: 11.370s
-INFO [2015-08-20 13:42:29] Will pre-process for website id = 1, period = year, date = last7
-INFO [2015-08-20 13:42:29] - pre-processing all visits
-INFO [2015-08-20 13:42:29] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:42:29] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:32] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:34] Archived website id = 1, period = year, 3 segments, 40 visits in last last7 years, 0 visits this year, Time elapsed: 4.820s
-INFO [2015-08-20 13:42:34] Archived website id = 1, 16 API requests, Time elapsed: 67.301s [1/2 done]
-INFO [2015-08-20 13:42:34] Will pre-process for website id = 2, period = day, date = last52
-INFO [2015-08-20 13:42:34] - pre-processing all visits
-INFO [2015-08-20 13:42:36] Archived website id = 2, period = day, 0 segments, 0 visits in last last52 days, 0 visits today, Time elapsed: 0.001s
-INFO [2015-08-20 13:42:36] Will pre-process for website id = 2, period = week, date = last260
-INFO [2015-08-20 13:42:36] - pre-processing all visits
-INFO [2015-08-20 13:42:51] Archived website id = 2, period = week, 0 segments, 1 visits in last last260 weeks, 0 visits this week, Time elapsed: 15.229s
-INFO [2015-08-20 13:42:51] Will pre-process for website id = 2, period = month, date = last52
-INFO [2015-08-20 13:42:51] - pre-processing all visits
-INFO [2015-08-20 13:42:55] Archived website id = 2, period = month, 0 segments, 1 visits in last last52 months, 0 visits this month, Time elapsed: 3.790s
-INFO [2015-08-20 13:42:55] Will pre-process for website id = 2, period = year, date = last7
-INFO [2015-08-20 13:42:55] - pre-processing all visits
-INFO [2015-08-20 13:42:56] Archived website id = 2, period = year, 0 segments, 1 visits in last last7 years, 0 visits this year, Time elapsed: 1.380s
-INFO [2015-08-20 13:42:56] Archived website id = 2, 4 API requests, Time elapsed: 22.132s [2/2 done]
-INFO [2015-08-20 13:42:56] Done archiving!
-INFO [2015-08-20 13:42:56] ---------------------------
-INFO [2015-08-20 13:42:56] SUMMARY
-INFO [2015-08-20 13:42:56] Total visits for today across archived websites: 0
-INFO [2015-08-20 13:42:56] Archived today's reports for 2 websites
-INFO [2015-08-20 13:42:56] Archived week/month/year for 2 websites
-INFO [2015-08-20 13:42:56] Skipped 0 websites: no new visit since the last script execution
-INFO [2015-08-20 13:42:56] Skipped 0 websites day archiving: existing daily reports are less than 150 seconds old
-INFO [2015-08-20 13:42:56] Skipped 0 websites week/month/year archiving: existing periods reports are less than 3600 seconds old
-INFO [2015-08-20 13:42:56] Total API requests: 20
-INFO [2015-08-20 13:42:56] done: 2/2 100%, 0 vtoday, 2 wtoday, 2 wperiods, 20 req, 89599 ms, no error
-INFO [2015-08-20 13:42:56] Time elapsed: 89.600s
-INFO [2015-08-20 13:42:56] ---------------------------
-INFO [2015-08-20 13:42:56] SCHEDULED TASKS
-INFO [2015-08-20 13:42:56] Starting Scheduled tasks...
-INFO [2015-08-20 13:42:56] done
-INFO [2015-08-20 13:42:56] ---------------------------
\ No newline at end of file
+INFO [2016-11-15 01:01:32] ---------------------------
+INFO [2016-11-15 01:01:32] INIT
+INFO [2016-11-15 01:01:32] Running Piwik 3.0.0-b2 as Super User
+INFO [2016-11-15 01:01:32] ---------------------------
+INFO [2016-11-15 01:01:32] NOTES
+INFO [2016-11-15 01:01:32] - If you execute this script at least once per hour (or more often) in a crontab, you may disable 'Browser trigger archiving' in Piwik UI > Settings > General Settings.
+INFO [2016-11-15 01:01:32]   See the doc at: http://piwik.org/docs/setup-auto-archiving/
+INFO [2016-11-15 01:01:32] - Reports for today will be processed at most every 150 seconds. You can change this value in Piwik UI > Settings > General Settings.
+INFO [2016-11-15 01:01:32] - Reports for the current week/month/year will be refreshed at most every 3600 seconds.
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2012-08-09 for following websites ids: 1
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2012-08-10 for following websites ids: 1
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2012-08-11 for following websites ids: 1
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2012-08-15 for following websites ids: 1,2,3
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2012-09-30 for following websites ids: 1
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2014-03-12 for following websites ids: 1,3
+INFO [2016-11-15 01:01:32] - Will invalidate archived reports for 2014-03-13 for following websites ids: 1,3
+INFO [2016-11-15 01:01:32] - Will process 3 other websites because some old data reports have been invalidated (eg. using the Log Import script) , IDs: 1, 2, 3
+INFO [2016-11-15 01:01:32] ---------------------------
+INFO [2016-11-15 01:01:32] START
+INFO [2016-11-15 01:01:32] Starting Piwik reports archiving...
+INFO [2016-11-15 01:01:32] Old report was invalidated for website id 1
+INFO [2016-11-15 01:01:32] Will pre-process for website id = 1, period = day, date = last52
+INFO [2016-11-15 01:01:32] - pre-processing all visits
+INFO [2016-11-15 01:01:34] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 01:01:34] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:01:34] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:01:37] Archived website id = 1, period = day, 3 segments, 0 visits in last 52 days, 0 visits today, Time elapsed: 5.036s
+INFO [2016-11-15 01:01:37] Will pre-process for website id = 1, period = week, date = last260
+INFO [2016-11-15 01:01:37] - pre-processing all visits
+INFO [2016-11-15 01:01:37] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 01:01:37] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:02:33] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:03:02] Archived website id = 1, period = week, 3 segments, 41 visits in last 260 weeks, 0 visits this week, Time elapsed: 84.465s
+INFO [2016-11-15 01:03:02] Will pre-process for website id = 1, period = month, date = last52
+INFO [2016-11-15 01:03:02] - pre-processing all visits
+INFO [2016-11-15 01:03:02] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 01:03:02] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:03:13] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:03:19] Archived website id = 1, period = month, 3 segments, 41 visits in last 52 months, 0 visits this month, Time elapsed: 17.197s
+INFO [2016-11-15 01:03:19] Will pre-process for website id = 1, period = year, date = last7
+INFO [2016-11-15 01:03:19] - pre-processing all visits
+INFO [2016-11-15 01:03:19] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 01:03:19] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:03:23] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 01:03:25] Archived website id = 1, period = year, 3 segments, 41 visits in last 7 years, 0 visits this year, Time elapsed: 6.455s
+INFO [2016-11-15 01:03:25] Archived website id = 1, 16 API requests, Time elapsed: 113.161s [1/3 done]
+INFO [2016-11-15 01:03:25] Old report was invalidated for website id 2
+INFO [2016-11-15 01:03:25] Will pre-process for website id = 2, period = day, date = last52
+INFO [2016-11-15 01:03:25] - pre-processing all visits
+INFO [2016-11-15 01:03:27] Archived website id = 2, period = day, 0 segments, 0 visits in last 52 days, 0 visits today, Time elapsed: 1.523s
+INFO [2016-11-15 01:03:27] Will pre-process for website id = 2, period = week, date = last260
+INFO [2016-11-15 01:03:27] - pre-processing all visits
+INFO [2016-11-15 01:03:47] Archived website id = 2, period = week, 0 segments, 1 visits in last 260 weeks, 0 visits this week, Time elapsed: 19.715s
+INFO [2016-11-15 01:03:47] Will pre-process for website id = 2, period = month, date = last52
+INFO [2016-11-15 01:03:47] - pre-processing all visits
+INFO [2016-11-15 01:03:50] Archived website id = 2, period = month, 0 segments, 1 visits in last 52 months, 0 visits this month, Time elapsed: 3.855s
+INFO [2016-11-15 01:03:50] Will pre-process for website id = 2, period = year, date = last7
+INFO [2016-11-15 01:03:50] - pre-processing all visits
+INFO [2016-11-15 01:03:51] Archived website id = 2, period = year, 0 segments, 1 visits in last 7 years, 0 visits this year, Time elapsed: 1.058s
+INFO [2016-11-15 01:03:51] Archived website id = 2, 4 API requests, Time elapsed: 26.156s [2/3 done]
+INFO [2016-11-15 01:03:52] Old report was invalidated for website id 3
+INFO [2016-11-15 01:03:52] Will pre-process for website id = 3, period = day, date = last52
+INFO [2016-11-15 01:03:52] - pre-processing all visits
+INFO [2016-11-15 01:03:53] Archived website id = 3, period = day, 0 segments, 0 visits in last 52 days, 0 visits today, Time elapsed: 1.536s
+INFO [2016-11-15 01:03:53] Will pre-process for website id = 3, period = week, date = last260
+INFO [2016-11-15 01:03:53] - pre-processing all visits
+INFO [2016-11-15 01:04:14] Archived website id = 3, period = week, 0 segments, 15 visits in last 260 weeks, 0 visits this week, Time elapsed: 20.828s
+INFO [2016-11-15 01:04:14] Will pre-process for website id = 3, period = month, date = last52
+INFO [2016-11-15 01:04:14] - pre-processing all visits
+INFO [2016-11-15 01:04:18] Archived website id = 3, period = month, 0 segments, 15 visits in last 52 months, 0 visits this month, Time elapsed: 4.449s
+INFO [2016-11-15 01:04:18] Will pre-process for website id = 3, period = year, date = last7
+INFO [2016-11-15 01:04:18] - pre-processing all visits
+INFO [2016-11-15 01:04:20] Archived website id = 3, period = year, 0 segments, 15 visits in last 7 years, 0 visits this year, Time elapsed: 1.866s
+INFO [2016-11-15 01:04:20] Archived website id = 3, 4 API requests, Time elapsed: 28.684s [3/3 done]
+INFO [2016-11-15 01:04:20] Done archiving!
+INFO [2016-11-15 01:04:20] ---------------------------
+INFO [2016-11-15 01:04:20] SUMMARY
+INFO [2016-11-15 01:04:20] Total visits for today across archived websites: 0
+INFO [2016-11-15 01:04:20] Archived today's reports for 3 websites
+INFO [2016-11-15 01:04:20] Archived week/month/year for 3 websites
+INFO [2016-11-15 01:04:20] Skipped 0 websites
+INFO [2016-11-15 01:04:20] - 0 skipped because no new visit since the last script execution
+INFO [2016-11-15 01:04:20] - 0 skipped because existing daily reports are less than 150 seconds old
+INFO [2016-11-15 01:04:20] - 0 skipped because existing week/month/year periods reports are less than 3600 seconds old
+INFO [2016-11-15 01:04:20] Total API requests: 24
+INFO [2016-11-15 01:04:20] done: 3/3 100%, 0 vtoday, 3 wtoday, 3 wperiods, 24 req, 168167 ms, no error
+INFO [2016-11-15 01:04:20] Time elapsed: 168.167s
+INFO [2016-11-15 01:04:20] ---------------------------
+INFO [2016-11-15 01:04:20] SCHEDULED TASKS
+INFO [2016-11-15 01:04:20] Starting Scheduled tasks...
+INFO [2016-11-15 01:04:20] done
+INFO [2016-11-15 01:04:20] ---------------------------
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml
index 5eb17eb5321f730f178a137095552cec535f48ee..2de80dd3ff433ac530f26c8f6ec188ce0deba454 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml
@@ -4,26 +4,14 @@
 		<label>piwik.net</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
-		<sum_time_spent>122</sum_time_spent>
-		<entry_nb_visits>2</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>123</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>2</exit_nb_visits>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/19.pdf</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://piwik.net/19.pdf</url>
 			</row>
 			<row>
@@ -31,16 +19,14 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://piwik.net/other.png</url>
 			</row>
 			<row>
 				<label>/thing.css</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>61</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 				<url>http://piwik.net/thing.css</url>
 			</row>
@@ -48,13 +34,8 @@
 				<label>/thing.js</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>61</sum_time_spent>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>3</entry_nb_actions>
-				<entry_sum_visit_length>123</entry_sum_visit_length>
-				<entry_bounce_count>0</entry_bounce_count>
+				<sum_time_spent>0</sum_time_spent>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
 				<url>http://piwik.net/thing.js</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml
index 9c5b6902684038eb3e373995d4e39726652dde4c..95d74bd84aa37daffdf0d69c2ce71c0700a77487 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml
@@ -4,26 +4,14 @@
 		<label>piwik.net</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
-		<sum_time_spent>122</sum_time_spent>
-		<entry_nb_visits>2</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>123</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>2</exit_nb_visits>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/19.pdf</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://piwik.net/19.pdf</url>
 			</row>
 			<row>
@@ -31,16 +19,14 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://piwik.net/other.png</url>
 			</row>
 			<row>
 				<label>/thing.css</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>61</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 				<url>http://piwik.net/thing.css</url>
 			</row>
@@ -48,13 +34,8 @@
 				<label>/thing.js</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>61</sum_time_spent>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>3</entry_nb_actions>
-				<entry_sum_visit_length>123</entry_sum_visit_length>
-				<entry_bounce_count>0</entry_bounce_count>
+				<sum_time_spent>0</sum_time_spent>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
 				<url>http://piwik.net/thing.js</url>
 			</row>
 		</subtable>
@@ -64,16 +45,13 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<exit_nb_visits>1</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/latest.zip</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://builds.piwik.org/latest.zip</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
index ed79501504aa6d0cebb7be65f50346a2d0a24875..60556b22b98f7ae917e871c63fdb280ab0509514 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
@@ -887,10 +887,10 @@
 		<entry_nb_actions>1</entry_nb_actions>
 		<entry_sum_visit_length>0</entry_sum_visit_length>
 		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
+		<exit_nb_visits>2</exit_nb_visits>
 		<avg_time_on_page>4</avg_time_on_page>
 		<bounce_rate>100%</bounce_rate>
-		<exit_rate>50%</exit_rate>
+		<exit_rate>100%</exit_rate>
 		<avg_time_generation>0.113</avg_time_generation>
 		<subtable>
 			<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
index 7973b3e001012a3abe1a7fea60fca9b719c2d69d..c53fa70fe8c82bb73afd2054d1bd16244df4b78f 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
@@ -884,17 +884,37 @@
 		<entry_nb_actions>1</entry_nb_actions>
 		<entry_sum_visit_length>0</entry_sum_visit_length>
 		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
+		<exit_nb_visits>2</exit_nb_visits>
 		<avg_time_on_page>4</avg_time_on_page>
 		<bounce_rate>100%</bounce_rate>
-		<exit_rate>50%</exit_rate>
+		<exit_rate>100%</exit_rate>
 		<avg_time_generation>0.113</avg_time_generation>
 		<subtable>
+			<row>
+				<label>/index</label>
+				<nb_visits>1</nb_visits>
+				<nb_hits>1</nb_hits>
+				<sum_time_spent>7</sum_time_spent>
+				<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+				<min_time_generation>0.113</min_time_generation>
+				<max_time_generation>0.113</max_time_generation>
+				<exit_nb_visits>1</exit_nb_visits>
+				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+				<avg_time_on_page>7</avg_time_on_page>
+				<bounce_rate>0%</bounce_rate>
+				<exit_rate>100%</exit_rate>
+				<avg_time_generation>0.113</avg_time_generation>
+				<url>http://piwik.org/download/</url>
+			</row>
 			<row>
 				<label>counter</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
+				<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
+				<min_time_generation />
+				<max_time_generation>0</max_time_generation>
 				<entry_nb_visits>1</entry_nb_visits>
 				<entry_nb_actions>1</entry_nb_actions>
 				<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -903,6 +923,7 @@
 				<avg_time_on_page>0</avg_time_on_page>
 				<bounce_rate>100%</bounce_rate>
 				<exit_rate>100%</exit_rate>
+				<avg_time_generation>0</avg_time_generation>
 				<subtable>
 					<row>
 						<label>/index</label>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml
index d03b4e81bb3acc9de1d2d6fc68884275ea851933..772331b5950475914645d61c251e028eb5b7b148 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml
@@ -5,25 +5,13 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://demo.piwik.org/</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
index 6ed96aef32694818a87528a898b2b35d5e006683..afdbc75c740a2c2485d3126a1d6629847fb3c0b7 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
@@ -900,10 +900,10 @@
 		<entry_nb_actions>1</entry_nb_actions>
 		<entry_sum_visit_length>0</entry_sum_visit_length>
 		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
+		<exit_nb_visits>2</exit_nb_visits>
 		<avg_time_on_page>4</avg_time_on_page>
 		<bounce_rate>100%</bounce_rate>
-		<exit_rate>50%</exit_rate>
+		<exit_rate>100%</exit_rate>
 		<avg_time_generation>0.113</avg_time_generation>
 		<subtable>
 			<row>
@@ -914,10 +914,12 @@
 				<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
 				<min_time_generation>0.113</min_time_generation>
 				<max_time_generation>0.113</max_time_generation>
+				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<avg_time_on_page>7</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
-				<exit_rate>0%</exit_rate>
+				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.113</avg_time_generation>
 				<url>http://piwik.org/download/</url>
 			</row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
index 4c6a424157119d8bc745bbd598ab0050aebd5265..4f7962f12b5d7b3dc100b11ad94357ed13378f42 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
@@ -112,7 +112,7 @@
 		<logo>plugins/UserCountry/images/flags/us.png</logo>
 	</row>
 	<row>
-		<label>Seoul, Seoul-t&amp;#039;ukpyolsi, South Korea</label>
+		<label>Seoul, Seoul-t'ukpyolsi, South Korea</label>
 		<nb_visits>1</nb_visits>
 		<nb_actions>1</nb_actions>
 		<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
index b9f8ff9295c009f0b42598c86c60f0f6c8baf0ae..ca4f6b23bf5cbf5792b8dcd848eded71a5e2afba 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
@@ -101,7 +101,7 @@
 		<logo>plugins/UserCountry/images/flags/ca.png</logo>
 	</row>
 	<row>
-		<label>Seoul-t&amp;#039;ukpyolsi, South Korea</label>
+		<label>Seoul-t'ukpyolsi, South Korea</label>
 		<nb_visits>1</nb_visits>
 		<nb_actions>1</nb_actions>
 		<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
index 5ae68e26247b6ff081223dab7da3ffb8ab9a663f..255255c504cdd0bbe17355aa1cb930f974090e23 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
@@ -10,7 +10,7 @@
 		<nb_visits_converted>1</nb_visits_converted>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
-		<idvisitor>c7a1daa770a8e43a</idvisitor>
+		
 	</row>
 	<row>
 		<label>user1</label>
@@ -22,7 +22,7 @@
 		<nb_visits_converted>1</nb_visits_converted>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
-		<idvisitor>b3daa77b4c04a955</idvisitor>
+		
 	</row>
 	<row>
 		<label>user2</label>
@@ -34,6 +34,6 @@
 		<nb_visits_converted>1</nb_visits_converted>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
-		<idvisitor>c515c2f2350e7b1a</idvisitor>
+		
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml
index a78a95e97b3bccceadf6ff6f0013313db99c3e10..b3f2de96149cd3d5246ed1d4909c82fd74352785 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml
@@ -5,16 +5,13 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<exit_nb_visits>1</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/latest.zip</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://builds.piwik.org/latest.zip</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml
index 2b3103a1a23059c06452d925e640c2b7c3f2ab65..2dac302631cf0e8a928fa2369f7e6695fc855ca9 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml
@@ -409,6 +409,39 @@
 			</row>
 		</subtable>
 	</row>
+	<row>
+		<label>download</label>
+		<nb_visits>1</nb_visits>
+		<nb_hits>1</nb_hits>
+		<sum_time_spent>7</sum_time_spent>
+		<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+		<min_time_generation>0.113</min_time_generation>
+		<max_time_generation>0.113</max_time_generation>
+		<exit_nb_visits>1</exit_nb_visits>
+		<avg_time_on_page>7</avg_time_on_page>
+		<bounce_rate>0%</bounce_rate>
+		<exit_rate>100%</exit_rate>
+		<avg_time_generation>0.113</avg_time_generation>
+		<subtable>
+			<row>
+				<label>/index</label>
+				<nb_visits>1</nb_visits>
+				<nb_hits>1</nb_hits>
+				<sum_time_spent>7</sum_time_spent>
+				<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+				<min_time_generation>0.113</min_time_generation>
+				<max_time_generation>0.113</max_time_generation>
+				<exit_nb_visits>1</exit_nb_visits>
+				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+				<avg_time_on_page>7</avg_time_on_page>
+				<bounce_rate>0%</bounce_rate>
+				<exit_rate>100%</exit_rate>
+				<avg_time_generation>0.113</avg_time_generation>
+				<url>http://piwik.org/download/</url>
+			</row>
+		</subtable>
+	</row>
 	<row>
 		<label>what-is-piwisk</label>
 		<nb_visits>1</nb_visits>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml
index d03b4e81bb3acc9de1d2d6fc68884275ea851933..772331b5950475914645d61c251e028eb5b7b148 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml
@@ -5,25 +5,13 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/</label>
 				<nb_visits>1</nb_visits>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-				<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<url>http://demo.piwik.org/</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml
index 33738e28ff12ee2e74340680f477c6b6431b11bf..962fe422feb81637d44f1615ec397812bfa357b5 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml
@@ -452,9 +452,10 @@
 		<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
 		<min_time_generation>0.113</min_time_generation>
 		<max_time_generation>0.113</max_time_generation>
+		<exit_nb_visits>1</exit_nb_visits>
 		<avg_time_on_page>7</avg_time_on_page>
 		<bounce_rate>0%</bounce_rate>
-		<exit_rate>0%</exit_rate>
+		<exit_rate>100%</exit_rate>
 		<avg_time_generation>0.113</avg_time_generation>
 		<subtable>
 			<row>
@@ -465,10 +466,12 @@
 				<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
 				<min_time_generation>0.113</min_time_generation>
 				<max_time_generation>0.113</max_time_generation>
+				<exit_nb_visits>1</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+				<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 				<avg_time_on_page>7</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
-				<exit_rate>0%</exit_rate>
+				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.113</avg_time_generation>
 				<url>http://piwik.org/download/</url>
 			</row>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml
index 32470e4bcbcbbfa7a9938fdc630fc1ae8665a2f2..ef6e3b3e333d1d28b6fe846bc729ff202bfb8ede 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml
@@ -5,7 +5,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>72</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<url>http://piwik.org/path/again/latest.zip</url>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml
index c064136f4346ff3daf2406ccf7e51ea9d6ec4f62..283d6e07c9c32940f2438e7df2365032d28d12a9 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml
@@ -4,14 +4,14 @@
 		<label>piwik.org</label>
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>72</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/path/again/latest.zip</label>
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>72</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>http://piwik.org/path/again/latest.zip</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml
index 1565685cb1caf5a7bd83c30273e06a15343f85d3..17089a01222091e2571a13f0afeff5a8828d1fcd 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml
@@ -5,7 +5,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>180</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<url>http://dev.piwik.org/svn</url>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml
index c6795a704e778dc618aa6981a3873de1732372b0..40ef57a97d65ecbd05a334b58e6c44369c0c15fd 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml
@@ -4,14 +4,14 @@
 		<label>outlinks.org</label>
 		<nb_visits>2</nb_visits>
 		<nb_hits>2</nb_hits>
-		<sum_time_spent>468</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/#!outlink-with-fragment-&lt;script&gt;</label>
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>https://outlinks.org/#!outlink-with-fragment-&lt;script&gt;</url>
 			</row>
 			<row>
@@ -19,7 +19,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>108</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>http://outlinks.org/other_outlink#fragment&amp;pk_campaign=Open%20partnership</url>
 			</row>
 		</subtable>
@@ -28,14 +28,14 @@
 		<label>dev.piwik.org</label>
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>180</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/svn</label>
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>180</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>http://dev.piwik.org/svn</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml
index 2a46f6f4a1a3e8b19fcf53ad5aee7de0d61fdbcf..4b7136441e9b4eed721afe928a433d19d220c224 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml
@@ -5,12 +5,12 @@
 		<nb_visits>1</nb_visits>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>180</sum_time_spent>
+		<sum_time_spent>900</sum_time_spent>
 		<sum_time_generation>0.224</sum_time_generation>
 		<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
 		<min_time_generation>0.224</min_time_generation>
 		<max_time_generation>0.224</max_time_generation>
-		<avg_time_on_page>180</avg_time_on_page>
+		<avg_time_on_page>900</avg_time_on_page>
 		<bounce_rate>0%</bounce_rate>
 		<exit_rate>0%</exit_rate>
 		<avg_time_generation>0.224</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml
index 32470e4bcbcbbfa7a9938fdc630fc1ae8665a2f2..ef6e3b3e333d1d28b6fe846bc729ff202bfb8ede 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml
@@ -5,7 +5,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>72</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<url>http://piwik.org/path/again/latest.zip</url>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml
index c064136f4346ff3daf2406ccf7e51ea9d6ec4f62..283d6e07c9c32940f2438e7df2365032d28d12a9 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml
@@ -4,14 +4,14 @@
 		<label>piwik.org</label>
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>72</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/path/again/latest.zip</label>
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>72</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>http://piwik.org/path/again/latest.zip</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
index cc4024a67f994702869a056fe77561c12c1b3bae..17089a01222091e2571a13f0afeff5a8828d1fcd 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
@@ -5,7 +5,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>72</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<url>http://dev.piwik.org/svn</url>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
index 01dadf7a928f360bedb2f192fe668b042444c87f..40ef57a97d65ecbd05a334b58e6c44369c0c15fd 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
@@ -4,14 +4,14 @@
 		<label>outlinks.org</label>
 		<nb_visits>2</nb_visits>
 		<nb_hits>2</nb_hits>
-		<sum_time_spent>468</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/#!outlink-with-fragment-&lt;script&gt;</label>
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>https://outlinks.org/#!outlink-with-fragment-&lt;script&gt;</url>
 			</row>
 			<row>
@@ -19,7 +19,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>108</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>http://outlinks.org/other_outlink#fragment&amp;pk_campaign=Open%20partnership</url>
 			</row>
 		</subtable>
@@ -28,14 +28,14 @@
 		<label>dev.piwik.org</label>
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>72</sum_time_spent>
+		<sum_time_spent>0</sum_time_spent>
 		<subtable>
 			<row>
 				<label>/svn</label>
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
-				<sum_time_spent>72</sum_time_spent>
+				<sum_time_spent>0</sum_time_spent>
 				<url>http://dev.piwik.org/svn</url>
 			</row>
 		</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
index c86cc78b132c80666d9bce58420d3ada3c542537..ce256e7c76d74c5eec472dd7f997d2ac12d02cdb 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
@@ -5,11 +5,11 @@
 		<nb_visits>1</nb_visits>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
-		<sum_time_spent>180</sum_time_spent>
+		<sum_time_spent>792</sum_time_spent>
 		<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
 		<min_time_generation>0.224</min_time_generation>
 		<max_time_generation>0.224</max_time_generation>
-		<avg_time_on_page>180</avg_time_on_page>
+		<avg_time_on_page>792</avg_time_on_page>
 		<bounce_rate>0%</bounce_rate>
 		<exit_rate>0%</exit_rate>
 		<avg_time_generation>0.224</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml b/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml
index 34447b169add6dbc11842f8e5b1ffaa00e7b2fc1..3354c1df29cb2fd444be835b0659037d9a0780af 100644
--- a/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml
+++ b/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml
@@ -249,7 +249,7 @@
 				<change>-100%</change>
 			</nb_visits_1>
 			<nb_visits_2>
-				<name>Google - justice )(&amp;^#%$ not &amp;#039;&quot; corruption! (Visits)</name>
+				<name>Google - justice )(&amp;^#%$ not '&quot; corruption! (Visits)</name>
 				<min>0</min>
 				<max>1</max>
 			</nb_visits_2>
diff --git a/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml b/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml
index a0555e1b4ac45dbe4b33c6577f9da9e760cb6f21..8a1dc9d8333c6e217c30fa71e8738aaaad53cb4a 100644
--- a/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml
+++ b/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml
@@ -14,7 +14,7 @@
 		<logo>plugins/Referrers/images/searchEngines/google.com.png</logo>
 	</row>
 	<row>
-		<label>Google - justice )(&amp;^#%$ not &amp;#039;&quot; corruption!</label>
+		<label>Google - justice )(&amp;^#%$ not '&quot; corruption!</label>
 		<nb_visits>8</nb_visits>
 		<nb_actions>8</nb_actions>
 		<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml b/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml
index 10f622eddabae0db3740f467c266e6cb8a1ecede..0f7c1f401bdf27b70a0673b47c53a3ead37445c5 100644
--- a/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml
+++ b/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml
@@ -33,7 +33,7 @@
 				<change>-100%</change>
 			</nb_visits_0>
 			<nb_visits_1>
-				<name>justice )(&amp;^#%$ not &amp;#039;&quot; corruption! (Visits)</name>
+				<name>justice )(&amp;^#%$ not '&quot; corruption! (Visits)</name>
 				<min>0</min>
 				<max>8</max>
 				<change>-100%</change>
diff --git a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml
index 865d25db4e8a57c729071b0a1d9a89c4d327046c..27a3ba1abe53ec4047086761111fe024caee1cec 100644
--- a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml
@@ -22,10 +22,10 @@
 		</row>
 	</previousSiteSearches>
 	<pageMetrics>
-		<loops>2</loops>
+		<loops>5</loops>
 		<pageviews>18</pageviews>
 		<entries>4</entries>
-		<exits>7</exits>
+		<exits>4</exits>
 	</pageMetrics>
 	<followingPages>
 		<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml
index 7e7b38175731e0ce0a4257a6617b9d9eb4c84ec9..a73d7d39dd0c9b0f367acb5fdec6c1536ccc21cd 100644
--- a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml
@@ -22,10 +22,10 @@
 		</row>
 	</previousSiteSearches>
 	<pageMetrics>
-		<loops>2</loops>
+		<loops>7</loops>
 		<pageviews>21</pageviews>
 		<entries>4</entries>
-		<exits>9</exits>
+		<exits>4</exits>
 	</pageMetrics>
 	<followingPages>
 		<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml
index 6233153f1cae531f2367408fb7615004722074e9..9e13a4a0baa8275d8fb418381196c4acd6f13763 100644
--- a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml
@@ -22,10 +22,10 @@
 		</row>
 	</previousSiteSearches>
 	<pageMetrics>
-		<loops>2</loops>
+		<loops>5</loops>
 		<pageviews>18</pageviews>
 		<entries>4</entries>
-		<exits>7</exits>
+		<exits>4</exits>
 	</pageMetrics>
 	<followingPages>
 		<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml
index c782fbb7613e96876d81feb2ce260ec123d968f8..ea8dfddac4a9c870031ee2eaf06d816d95923d8d 100644
--- a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml
@@ -22,10 +22,10 @@
 		</row>
 	</previousSiteSearches>
 	<pageMetrics>
-		<loops>2</loops>
+		<loops>7</loops>
 		<pageviews>21</pageviews>
 		<entries>4</entries>
-		<exits>9</exits>
+		<exits>4</exits>
 	</pageMetrics>
 	<followingPages>
 		<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml b/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml
index 865d25db4e8a57c729071b0a1d9a89c4d327046c..27a3ba1abe53ec4047086761111fe024caee1cec 100644
--- a/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml
@@ -22,10 +22,10 @@
 		</row>
 	</previousSiteSearches>
 	<pageMetrics>
-		<loops>2</loops>
+		<loops>5</loops>
 		<pageviews>18</pageviews>
 		<entries>4</entries>
-		<exits>7</exits>
+		<exits>4</exits>
 	</pageMetrics>
 	<followingPages>
 		<row>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml
index 207e2159fcf85ea7006e939526f8e3162cc2bf52..58ddaf23b72063061d023e759dae7d76182b2ac0 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml
@@ -89,7 +89,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>2</nb_hits>
 				<bounce_rate>0%</bounce_rate>
-				<avg_time_on_page>00:03:00</avg_time_on_page>
+				<avg_time_on_page>00:04:30</avg_time_on_page>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.31s</avg_time_generation>
 			</row>
@@ -118,7 +118,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>2</nb_hits>
 				<bounce_rate>0%</bounce_rate>
-				<avg_time_on_page>00:03:00</avg_time_on_page>
+				<avg_time_on_page>00:04:30</avg_time_on_page>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.31s</avg_time_generation>
 			</row>
@@ -147,7 +147,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>2</nb_hits>
 				<bounce_rate>0%</bounce_rate>
-				<avg_time_on_page>00:03:00</avg_time_on_page>
+				<avg_time_on_page>00:04:30</avg_time_on_page>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.31s</avg_time_generation>
 			</row>
@@ -176,7 +176,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>2</nb_hits>
 				<bounce_rate>0%</bounce_rate>
-				<avg_time_on_page>00:03:00</avg_time_on_page>
+				<avg_time_on_page>00:04:30</avg_time_on_page>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.31s</avg_time_generation>
 			</row>
@@ -205,7 +205,7 @@
 				<nb_visits>1</nb_visits>
 				<nb_hits>2</nb_hits>
 				<bounce_rate>0%</bounce_rate>
-				<avg_time_on_page>00:03:00</avg_time_on_page>
+				<avg_time_on_page>00:04:30</avg_time_on_page>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.31s</avg_time_generation>
 			</row>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
index 57f0b1452f0bb9fa6fc8fa10d565bbfb48f02efc..afa770ee0e5efa5eb85086bb674c9f3aa3204454 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
@@ -93,13 +93,13 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>2</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>540</sum_time_spent>
 				<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 				<exit_nb_visits>1</exit_nb_visits>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
@@ -149,13 +149,13 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>2</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>540</sum_time_spent>
 				<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 				<exit_nb_visits>1</exit_nb_visits>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
@@ -205,13 +205,13 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>2</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>540</sum_time_spent>
 				<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 				<exit_nb_visits>1</exit_nb_visits>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
@@ -261,13 +261,13 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>2</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>540</sum_time_spent>
 				<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 				<exit_nb_visits>1</exit_nb_visits>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
@@ -317,13 +317,13 @@
 				<nb_visits>1</nb_visits>
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>2</nb_hits>
-				<sum_time_spent>360</sum_time_spent>
+				<sum_time_spent>540</sum_time_spent>
 				<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 				<exit_nb_visits>1</exit_nb_visits>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
index de92713eae586dfc6db9467e73c643aeb6c7d4a8..385b9c0ae7dc68f82580290c38eb0866f4815082 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
@@ -44,14 +44,14 @@
 				<label>/thankyou</label>
 				<nb_visits>8</nb_visits>
 				<nb_hits>16</nb_hits>
-				<sum_time_spent>2880</sum_time_spent>
+				<sum_time_spent>4320</sum_time_spent>
 				<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_visits>8</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
 				<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
index e61f0aa200c92bd38d9b9c81a0b88927e5844663..cf977fd0b1290570f862db646c544f034d7e101b 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
@@ -90,14 +90,14 @@
 				<label>/thankyou</label>
 				<nb_visits>6</nb_visits>
 				<nb_hits>12</nb_hits>
-				<sum_time_spent>2160</sum_time_spent>
+				<sum_time_spent>3240</sum_time_spent>
 				<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_visits>6</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
 				<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
@@ -131,14 +131,14 @@
 				<label>/thankyou</label>
 				<nb_visits>2</nb_visits>
 				<nb_hits>4</nb_hits>
-				<sum_time_spent>720</sum_time_spent>
+				<sum_time_spent>1080</sum_time_spent>
 				<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_visits>2</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
 				<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
index 9cb3a82c02d0909811519dfdd2a82f61893dcccf..bcf37b77178f5c7685264541f55e2ee74bbd11c4 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
@@ -44,14 +44,14 @@
 				<label>/thankyou</label>
 				<nb_visits>8</nb_visits>
 				<nb_hits>16</nb_hits>
-				<sum_time_spent>2880</sum_time_spent>
+				<sum_time_spent>4320</sum_time_spent>
 				<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
 				<min_time_generation>0.173</min_time_generation>
 				<max_time_generation>0.452</max_time_generation>
 				<exit_nb_visits>8</exit_nb_visits>
 				<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
 				<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
-				<avg_time_on_page>180</avg_time_on_page>
+				<avg_time_on_page>270</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>100%</exit_rate>
 				<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml
index f7e7161700997315d8ba5db108f38138d0b2789f..2e19a93bfc559c3864e1f1a61e442f47fcd77d3f 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml
@@ -92,13 +92,13 @@
 			<nb_visits>1</nb_visits>
 			<nb_uniq_visitors>1</nb_uniq_visitors>
 			<nb_hits>2</nb_hits>
-			<sum_time_spent>360</sum_time_spent>
+			<sum_time_spent>540</sum_time_spent>
 			<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 			<exit_nb_visits>1</exit_nb_visits>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
@@ -148,13 +148,13 @@
 			<nb_visits>1</nb_visits>
 			<nb_uniq_visitors>1</nb_uniq_visitors>
 			<nb_hits>2</nb_hits>
-			<sum_time_spent>360</sum_time_spent>
+			<sum_time_spent>540</sum_time_spent>
 			<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 			<exit_nb_visits>1</exit_nb_visits>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
@@ -204,13 +204,13 @@
 			<nb_visits>1</nb_visits>
 			<nb_uniq_visitors>1</nb_uniq_visitors>
 			<nb_hits>2</nb_hits>
-			<sum_time_spent>360</sum_time_spent>
+			<sum_time_spent>540</sum_time_spent>
 			<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 			<exit_nb_visits>1</exit_nb_visits>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
@@ -260,13 +260,13 @@
 			<nb_visits>1</nb_visits>
 			<nb_uniq_visitors>1</nb_uniq_visitors>
 			<nb_hits>2</nb_hits>
-			<sum_time_spent>360</sum_time_spent>
+			<sum_time_spent>540</sum_time_spent>
 			<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 			<exit_nb_visits>1</exit_nb_visits>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
@@ -316,13 +316,13 @@
 			<nb_visits>1</nb_visits>
 			<nb_uniq_visitors>1</nb_uniq_visitors>
 			<nb_hits>2</nb_hits>
-			<sum_time_spent>360</sum_time_spent>
+			<sum_time_spent>540</sum_time_spent>
 			<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
 			<exit_nb_visits>1</exit_nb_visits>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml
index e68d67ec347379b9f893e9bfac2de76c6bdd9bc1..1d720682774540e6bd2b03fcf61a8b62aa2ba379 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml
@@ -43,14 +43,14 @@
 			<label>/thankyou</label>
 			<nb_visits>8</nb_visits>
 			<nb_hits>16</nb_hits>
-			<sum_time_spent>2880</sum_time_spent>
+			<sum_time_spent>4320</sum_time_spent>
 			<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_visits>8</exit_nb_visits>
 			<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
 			<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml
index 12e84f1f05fc32ec36fed574298bca6b33a53f27..0128e3a8ed2f404435d0fc7a5d87b7e8ee485c04 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml
@@ -89,14 +89,14 @@
 			<label>/thankyou</label>
 			<nb_visits>6</nb_visits>
 			<nb_hits>12</nb_hits>
-			<sum_time_spent>2160</sum_time_spent>
+			<sum_time_spent>3240</sum_time_spent>
 			<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_visits>6</exit_nb_visits>
 			<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
 			<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
@@ -130,14 +130,14 @@
 			<label>/thankyou</label>
 			<nb_visits>2</nb_visits>
 			<nb_hits>4</nb_hits>
-			<sum_time_spent>720</sum_time_spent>
+			<sum_time_spent>1080</sum_time_spent>
 			<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_visits>2</exit_nb_visits>
 			<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
 			<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml
index 266832e5907e14988a205f4bb42bf45bbae5e2d4..52d72a528d0fe08cef711d74733aec13e4782922 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml
@@ -43,14 +43,14 @@
 			<label>/thankyou</label>
 			<nb_visits>8</nb_visits>
 			<nb_hits>16</nb_hits>
-			<sum_time_spent>2880</sum_time_spent>
+			<sum_time_spent>4320</sum_time_spent>
 			<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
 			<min_time_generation>0.173</min_time_generation>
 			<max_time_generation>0.452</max_time_generation>
 			<exit_nb_visits>8</exit_nb_visits>
 			<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
 			<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
-			<avg_time_on_page>180</avg_time_on_page>
+			<avg_time_on_page>270</avg_time_on_page>
 			<bounce_rate>0%</bounce_rate>
 			<exit_rate>100%</exit_rate>
 			<avg_time_generation>0.313</avg_time_generation>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
index e29c38ad884998101103cca175a355aca60d72a7..2e268537e35b3372efdd5f2b10b4aedd90fdd5b3 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
@@ -243,7 +243,7 @@ Page URLs
 label,nb_visits,nb_hits,bounce_rate,avg_time_on_page,exit_rate,avg_time_generation
 /index.htm,9,9,11%,00:05:20,11%,0.3s
 Page URL not defined,9,17,0%,00:00:00,0%,0.22s
-/thankyou,8,16,0%,00:03:00,100%,0.31s
+/thankyou,8,16,0%,00:04:30,100%,0.31s
 /products,1,1,100%,00:00:00,100%,0.15s
 
 Entry pages
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
index 3d01673888bb711d98b918bff990d59954caacc0..e5386df4f1f2e67f5ab5f47eebb82c673db83284 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
@@ -4203,7 +4203,7 @@
                                                                                                 8
                                                                                     </td>
                                             <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217);  padding: 5px 0 5px 5px;">
-                                                                                                00:03:00
+                                                                                                00:04:30
                                                                                     </td>
                                             <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217);  padding: 5px 0 5px 5px;">
                                                                                                 0%
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 447ef39261be5f11681c4b056f2e82c3050fa147..250f47704aebc7d6ce751be1c3a9d499033eafdc 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -576,7 +576,7 @@
 		<isReport>1</isReport>
 	</row>
 	<row>
-		<name>Region</name>
+		<name>Visitor Map</name>
 		<category>
 			<id>General_Visitors</id>
 			<name>Visitors</name>
@@ -588,20 +588,18 @@
 			<name>Locations</name>
 			<order>25</order>
 		</subcategory>
-		<module>UserCountry</module>
-		<action>getRegion</action>
-		<order>107</order>
+		<module>UserCountryMap</module>
+		<action>visitorMap</action>
+		<order>1</order>
 		<parameters>
-			<module>UserCountry</module>
-			<action>getRegion</action>
+			<module>UserCountryMap</module>
+			<action>visitorMap</action>
 		</parameters>
-		<uniqueId>widgetUserCountrygetRegion</uniqueId>
+		<uniqueId>widgetUserCountryMapvisitorMap</uniqueId>
 		<isWide>0</isWide>
-		<viewDataTable>table</viewDataTable>
-		<isReport>1</isReport>
 	</row>
 	<row>
-		<name>Visitor Map</name>
+		<name>Region</name>
 		<category>
 			<id>General_Visitors</id>
 			<name>Visitors</name>
@@ -613,15 +611,17 @@
 			<name>Locations</name>
 			<order>25</order>
 		</subcategory>
-		<module>UserCountryMap</module>
-		<action>visitorMap</action>
-		<order>1</order>
+		<module>UserCountry</module>
+		<action>getRegion</action>
+		<order>107</order>
 		<parameters>
-			<module>UserCountryMap</module>
-			<action>visitorMap</action>
+			<module>UserCountry</module>
+			<action>getRegion</action>
 		</parameters>
-		<uniqueId>widgetUserCountryMapvisitorMap</uniqueId>
+		<uniqueId>widgetUserCountrygetRegion</uniqueId>
 		<isWide>0</isWide>
+		<viewDataTable>table</viewDataTable>
+		<isReport>1</isReport>
 	</row>
 	<row>
 		<name>Continent</name>
@@ -778,7 +778,7 @@
 		<isReport>1</isReport>
 	</row>
 	<row>
-		<name>Visits per visit duration</name>
+		<name>Visits by Visit Number</name>
 		<category>
 			<id>General_Visitors</id>
 			<name>Visitors</name>
@@ -791,15 +791,15 @@
 			<order>30</order>
 		</subcategory>
 		<module>VisitorInterest</module>
-		<action>getNumberOfVisitsPerVisitDuration</action>
-		<order>115</order>
+		<action>getNumberOfVisitsByVisitCount</action>
+		<order>125</order>
 		<parameters>
 			<module>VisitorInterest</module>
-			<action>getNumberOfVisitsPerVisitDuration</action>
+			<action>getNumberOfVisitsByVisitCount</action>
 		</parameters>
-		<uniqueId>widgetVisitorInterestgetNumberOfVisitsPerVisitDuration</uniqueId>
+		<uniqueId>widgetVisitorInterestgetNumberOfVisitsByVisitCount</uniqueId>
 		<isWide>0</isWide>
-		<viewDataTable>cloud</viewDataTable>
+		<viewDataTable>table</viewDataTable>
 		<isReport>1</isReport>
 	</row>
 	<row>
@@ -822,7 +822,7 @@
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Visits by Visit Number</name>
+		<name>Visits per visit duration</name>
 		<category>
 			<id>General_Visitors</id>
 			<name>Visitors</name>
@@ -835,15 +835,15 @@
 			<order>30</order>
 		</subcategory>
 		<module>VisitorInterest</module>
-		<action>getNumberOfVisitsByVisitCount</action>
-		<order>125</order>
+		<action>getNumberOfVisitsPerVisitDuration</action>
+		<order>115</order>
 		<parameters>
 			<module>VisitorInterest</module>
-			<action>getNumberOfVisitsByVisitCount</action>
+			<action>getNumberOfVisitsPerVisitDuration</action>
 		</parameters>
-		<uniqueId>widgetVisitorInterestgetNumberOfVisitsByVisitCount</uniqueId>
+		<uniqueId>widgetVisitorInterestgetNumberOfVisitsPerVisitDuration</uniqueId>
 		<isWide>0</isWide>
-		<viewDataTable>table</viewDataTable>
+		<viewDataTable>cloud</viewDataTable>
 		<isReport>1</isReport>
 	</row>
 	<row>
@@ -1864,7 +1864,7 @@
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Product SKU</name>
+		<name>Product Category</name>
 		<category>
 			<id>Goals_Ecommerce</id>
 			<name>Ecommerce</name>
@@ -1877,19 +1877,19 @@
 			<order>10</order>
 		</subcategory>
 		<module>Goals</module>
-		<action>getItemsSku</action>
-		<order>130</order>
+		<action>getItemsCategory</action>
+		<order>132</order>
 		<parameters>
 			<module>Goals</module>
-			<action>getItemsSku</action>
+			<action>getItemsCategory</action>
 		</parameters>
-		<uniqueId>widgetGoalsgetItemsSku</uniqueId>
+		<uniqueId>widgetGoalsgetItemsCategory</uniqueId>
 		<isWide>0</isWide>
 		<viewDataTable>table</viewDataTable>
 		<isReport>1</isReport>
 	</row>
 	<row>
-		<name>Product Category</name>
+		<name>Product SKU</name>
 		<category>
 			<id>Goals_Ecommerce</id>
 			<name>Ecommerce</name>
@@ -1902,13 +1902,13 @@
 			<order>10</order>
 		</subcategory>
 		<module>Goals</module>
-		<action>getItemsCategory</action>
-		<order>132</order>
+		<action>getItemsSku</action>
+		<order>130</order>
 		<parameters>
 			<module>Goals</module>
-			<action>getItemsCategory</action>
+			<action>getItemsSku</action>
 		</parameters>
-		<uniqueId>widgetGoalsgetItemsCategory</uniqueId>
+		<uniqueId>widgetGoalsgetItemsSku</uniqueId>
 		<isWide>0</isWide>
 		<viewDataTable>table</viewDataTable>
 		<isReport>1</isReport>
@@ -2748,7 +2748,7 @@
 		<isReport>1</isReport>
 	</row>
 	<row>
-		<name>Piwik Changelog</name>
+		<name>Piwik.org Blog</name>
 		<category>
 			<id>About Piwik</id>
 			<name>About Piwik</name>
@@ -2757,17 +2757,17 @@
 		</category>
 		<subcategory />
 		<module>RssWidget</module>
-		<action>rssChangelog</action>
+		<action>rssPiwik</action>
 		<order>99</order>
 		<parameters>
 			<module>RssWidget</module>
-			<action>rssChangelog</action>
+			<action>rssPiwik</action>
 		</parameters>
-		<uniqueId>widgetRssWidgetrssChangelog</uniqueId>
+		<uniqueId>widgetRssWidgetrssPiwik</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>System Summary</name>
+		<name>Example Widget Name</name>
 		<category>
 			<id>About Piwik</id>
 			<name>About Piwik</name>
@@ -2775,18 +2775,18 @@
 			<icon />
 		</category>
 		<subcategory />
-		<module>CoreHome</module>
-		<action>getSystemSummary</action>
-		<order>15</order>
+		<module>ExamplePlugin</module>
+		<action>myExampleWidget</action>
+		<order>99</order>
 		<parameters>
-			<module>CoreHome</module>
-			<action>getSystemSummary</action>
+			<module>ExamplePlugin</module>
+			<action>myExampleWidget</action>
 		</parameters>
-		<uniqueId>widgetCoreHomegetSystemSummary</uniqueId>
+		<uniqueId>widgetExamplePluginmyExampleWidget</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Top Keywords for Page URL</name>
+		<name>SEO Rankings</name>
 		<category>
 			<id>SEO</id>
 			<name>SEO</name>
@@ -2794,18 +2794,18 @@
 			<icon />
 		</category>
 		<subcategory />
-		<module>Referrers</module>
-		<action>getKeywordsForPage</action>
+		<module>SEO</module>
+		<action>getRank</action>
 		<order>99</order>
 		<parameters>
-			<module>Referrers</module>
-			<action>getKeywordsForPage</action>
+			<module>SEO</module>
+			<action>getRank</action>
 		</parameters>
-		<uniqueId>widgetReferrersgetKeywordsForPage</uniqueId>
+		<uniqueId>widgetSEOgetRank</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Piwik.org Blog</name>
+		<name>System Check</name>
 		<category>
 			<id>About Piwik</id>
 			<name>About Piwik</name>
@@ -2813,18 +2813,18 @@
 			<icon />
 		</category>
 		<subcategory />
-		<module>RssWidget</module>
-		<action>rssPiwik</action>
-		<order>99</order>
+		<module>Installation</module>
+		<action>getSystemCheck</action>
+		<order>16</order>
 		<parameters>
-			<module>RssWidget</module>
-			<action>rssPiwik</action>
+			<module>Installation</module>
+			<action>getSystemCheck</action>
 		</parameters>
-		<uniqueId>widgetRssWidgetrssPiwik</uniqueId>
+		<uniqueId>widgetInstallationgetSystemCheck</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Latest Marketplace Updates</name>
+		<name>Support Piwik!</name>
 		<category>
 			<id>About Piwik</id>
 			<name>About Piwik</name>
@@ -2832,33 +2832,33 @@
 			<icon />
 		</category>
 		<subcategory />
-		<module>CorePluginsAdmin</module>
-		<action>getNewPlugins</action>
-		<order>19</order>
+		<module>CoreHome</module>
+		<action>getDonateForm</action>
+		<order>5</order>
 		<parameters>
-			<module>CorePluginsAdmin</module>
-			<action>getNewPlugins</action>
+			<module>CoreHome</module>
+			<action>getDonateForm</action>
 		</parameters>
-		<uniqueId>widgetCorePluginsAdmingetNewPlugins</uniqueId>
+		<uniqueId>widgetCoreHomegetDonateForm</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>SEO Rankings</name>
+		<name>Piwik Changelog</name>
 		<category>
-			<id>SEO</id>
-			<name>SEO</name>
+			<id>About Piwik</id>
+			<name>About Piwik</name>
 			<order>99</order>
 			<icon />
 		</category>
 		<subcategory />
-		<module>SEO</module>
-		<action>getRank</action>
+		<module>RssWidget</module>
+		<action>rssChangelog</action>
 		<order>99</order>
 		<parameters>
-			<module>SEO</module>
-			<action>getRank</action>
+			<module>RssWidget</module>
+			<action>rssChangelog</action>
 		</parameters>
-		<uniqueId>widgetSEOgetRank</uniqueId>
+		<uniqueId>widgetRssWidgetrssChangelog</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
@@ -2881,7 +2881,7 @@
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Welcome!</name>
+		<name>System Summary</name>
 		<category>
 			<id>About Piwik</id>
 			<name>About Piwik</name>
@@ -2890,36 +2890,36 @@
 		</category>
 		<subcategory />
 		<module>CoreHome</module>
-		<action>getPromoVideo</action>
-		<order>10</order>
+		<action>getSystemSummary</action>
+		<order>15</order>
 		<parameters>
 			<module>CoreHome</module>
-			<action>getPromoVideo</action>
+			<action>getSystemSummary</action>
 		</parameters>
-		<uniqueId>widgetCoreHomegetPromoVideo</uniqueId>
+		<uniqueId>widgetCoreHomegetSystemSummary</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Movers and Shakers</name>
+		<name>Latest Marketplace Updates</name>
 		<category>
-			<id>Insights_WidgetCategory</id>
-			<name>Insights</name>
+			<id>About Piwik</id>
+			<name>About Piwik</name>
 			<order>99</order>
 			<icon />
 		</category>
 		<subcategory />
-		<module>Insights</module>
-		<action>getOverallMoversAndShakers</action>
-		<order>99</order>
+		<module>Marketplace</module>
+		<action>getNewPlugins</action>
+		<order>19</order>
 		<parameters>
-			<module>Insights</module>
-			<action>getOverallMoversAndShakers</action>
+			<module>Marketplace</module>
+			<action>getNewPlugins</action>
 		</parameters>
-		<uniqueId>widgetInsightsgetOverallMoversAndShakers</uniqueId>
+		<uniqueId>widgetMarketplacegetNewPlugins</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>System Check</name>
+		<name>Welcome!</name>
 		<category>
 			<id>About Piwik</id>
 			<name>About Piwik</name>
@@ -2927,56 +2927,56 @@
 			<icon />
 		</category>
 		<subcategory />
-		<module>Installation</module>
-		<action>getSystemCheck</action>
-		<order>16</order>
+		<module>CoreHome</module>
+		<action>getPromoVideo</action>
+		<order>10</order>
 		<parameters>
-			<module>Installation</module>
-			<action>getSystemCheck</action>
+			<module>CoreHome</module>
+			<action>getPromoVideo</action>
 		</parameters>
-		<uniqueId>widgetInstallationgetSystemCheck</uniqueId>
+		<uniqueId>widgetCoreHomegetPromoVideo</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Example Widget Name</name>
+		<name>Top Keywords for Page URL</name>
 		<category>
-			<id>About Piwik</id>
-			<name>About Piwik</name>
+			<id>SEO</id>
+			<name>SEO</name>
 			<order>99</order>
 			<icon />
 		</category>
 		<subcategory />
-		<module>ExamplePlugin</module>
-		<action>myExampleWidget</action>
+		<module>Referrers</module>
+		<action>getKeywordsForPage</action>
 		<order>99</order>
 		<parameters>
-			<module>ExamplePlugin</module>
-			<action>myExampleWidget</action>
+			<module>Referrers</module>
+			<action>getKeywordsForPage</action>
 		</parameters>
-		<uniqueId>widgetExamplePluginmyExampleWidget</uniqueId>
+		<uniqueId>widgetReferrersgetKeywordsForPage</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Support Piwik!</name>
+		<name>Insights Overview</name>
 		<category>
-			<id>About Piwik</id>
-			<name>About Piwik</name>
+			<id>Insights_WidgetCategory</id>
+			<name>Insights</name>
 			<order>99</order>
 			<icon />
 		</category>
 		<subcategory />
-		<module>CoreHome</module>
-		<action>getDonateForm</action>
-		<order>5</order>
+		<module>Insights</module>
+		<action>getInsightsOverview</action>
+		<order>99</order>
 		<parameters>
-			<module>CoreHome</module>
-			<action>getDonateForm</action>
+			<module>Insights</module>
+			<action>getInsightsOverview</action>
 		</parameters>
-		<uniqueId>widgetCoreHomegetDonateForm</uniqueId>
+		<uniqueId>widgetInsightsgetInsightsOverview</uniqueId>
 		<isWide>0</isWide>
 	</row>
 	<row>
-		<name>Insights Overview</name>
+		<name>Movers and Shakers</name>
 		<category>
 			<id>Insights_WidgetCategory</id>
 			<name>Insights</name>
@@ -2985,13 +2985,13 @@
 		</category>
 		<subcategory />
 		<module>Insights</module>
-		<action>getInsightsOverview</action>
+		<action>getOverallMoversAndShakers</action>
 		<order>99</order>
 		<parameters>
 			<module>Insights</module>
-			<action>getInsightsOverview</action>
+			<action>getOverallMoversAndShakers</action>
 		</parameters>
-		<uniqueId>widgetInsightsgetInsightsOverview</uniqueId>
+		<uniqueId>widgetInsightsgetOverallMoversAndShakers</uniqueId>
 		<isWide>0</isWide>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
index c8c4cc202217e9357aad0ecdc9c51d46163bd267..3a3e734f39f08bd18d22a1e0ece56a09f3e7dd04 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
@@ -14,4 +14,4 @@
 &lt;/script&gt;
 &lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;//example.org/piwik/piwik.php?idsite=1&quot; style=&quot;border:0;&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/noscript&gt;
 &lt;!-- End Piwik Code --&gt;
-</result>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml
index ee5d1985fc83af214ac238263b2a9003bc53673a..f8607561a625caefc282f39ec9f5299717b0ea8c 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml
@@ -5,11 +5,6 @@
 		<nb_visits>5</nb_visits>
 		<nb_hits>5</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>5</entry_nb_visits>
-		<entry_nb_actions>5</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>5</entry_bounce_count>
-		<exit_nb_visits>5</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/20/download</label>
@@ -17,13 +12,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://cloudsite5.com/20/download</url>
 			</row>
 			<row>
@@ -31,11 +19,6 @@
 				<nb_visits>4</nb_visits>
 				<nb_hits>4</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>4</entry_nb_visits>
-				<entry_nb_actions>4</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>4</entry_bounce_count>
-				<exit_nb_visits>4</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -44,11 +27,6 @@
 		<nb_visits>5</nb_visits>
 		<nb_hits>5</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>5</entry_nb_visits>
-		<entry_nb_actions>5</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>5</entry_bounce_count>
-		<exit_nb_visits>5</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/24/download</label>
@@ -56,13 +34,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://cloudsite6.com/24/download</url>
 			</row>
 			<row>
@@ -70,11 +41,6 @@
 				<nb_visits>4</nb_visits>
 				<nb_hits>4</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>4</entry_nb_visits>
-				<entry_nb_actions>4</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>4</entry_bounce_count>
-				<exit_nb_visits>4</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -83,11 +49,6 @@
 		<nb_visits>5</nb_visits>
 		<nb_hits>5</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>5</entry_nb_visits>
-		<entry_nb_actions>5</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>5</entry_bounce_count>
-		<exit_nb_visits>5</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/28/download</label>
@@ -95,13 +56,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://cloudsite7.com/28/download</url>
 			</row>
 			<row>
@@ -109,11 +63,6 @@
 				<nb_visits>4</nb_visits>
 				<nb_hits>4</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>4</entry_nb_visits>
-				<entry_nb_actions>4</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>4</entry_bounce_count>
-				<exit_nb_visits>4</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -122,10 +71,5 @@
 		<nb_visits>10</nb_visits>
 		<nb_hits>10</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>10</entry_nb_visits>
-		<entry_nb_actions>10</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>10</entry_bounce_count>
-		<exit_nb_visits>10</exit_nb_visits>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml
index 1181f0a0c3b1687900bf09d8b71d6a195f3a45ce..226cf16cbfa403e06276babc91b11e7514740035 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml
@@ -5,11 +5,6 @@
 		<nb_visits>5</nb_visits>
 		<nb_hits>5</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>5</entry_nb_visits>
-		<entry_nb_actions>5</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>5</entry_bounce_count>
-		<exit_nb_visits>5</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/</label>
@@ -17,13 +12,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://othersite10.com/</url>
 			</row>
 			<row>
@@ -31,11 +19,6 @@
 				<nb_visits>4</nb_visits>
 				<nb_hits>4</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>4</entry_nb_visits>
-				<entry_nb_actions>4</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>4</entry_bounce_count>
-				<exit_nb_visits>4</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -44,11 +27,6 @@
 		<nb_visits>5</nb_visits>
 		<nb_hits>5</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>5</entry_nb_visits>
-		<entry_nb_actions>5</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>5</entry_bounce_count>
-		<exit_nb_visits>5</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/</label>
@@ -56,13 +34,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://othersite11.com/</url>
 			</row>
 			<row>
@@ -70,11 +41,6 @@
 				<nb_visits>4</nb_visits>
 				<nb_hits>4</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>4</entry_nb_visits>
-				<entry_nb_actions>4</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>4</entry_bounce_count>
-				<exit_nb_visits>4</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -83,11 +49,6 @@
 		<nb_visits>5</nb_visits>
 		<nb_hits>5</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>5</entry_nb_visits>
-		<entry_nb_actions>5</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>5</entry_bounce_count>
-		<exit_nb_visits>5</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/</label>
@@ -95,13 +56,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://othersite12.com/</url>
 			</row>
 			<row>
@@ -109,11 +63,6 @@
 				<nb_visits>4</nb_visits>
 				<nb_hits>4</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>4</entry_nb_visits>
-				<entry_nb_actions>4</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>4</entry_bounce_count>
-				<exit_nb_visits>4</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -122,10 +71,5 @@
 		<nb_visits>10</nb_visits>
 		<nb_hits>10</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>10</entry_nb_visits>
-		<entry_nb_actions>10</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>10</entry_bounce_count>
-		<exit_nb_visits>10</exit_nb_visits>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml
index ace4b75be7c030a7752154f0cdfdf4f0865ce910..0cdfb7e595f64737a6edde1d2ffb1e0fbe6be113 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml
@@ -5,44 +5,24 @@
 		<nb_visits>10</nb_visits>
 		<nb_hits>10</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>10</entry_nb_visits>
-		<entry_nb_actions>10</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>10</entry_bounce_count>
-		<exit_nb_visits>10</exit_nb_visits>
 	</row>
 	<row>
 		<label>cloudsite5.com/ - Others</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 	</row>
 	<row>
 		<label>cloudsite6.com/ - Others</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 	</row>
 	<row>
 		<label>cloudsite7.com/ - Others</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 	</row>
 	<row>
 		<label>cloudsite5.com/20/download</label>
@@ -50,13 +30,6 @@
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-		<exit_nb_visits>1</exit_nb_visits>
 		<url>http://cloudsite5.com/20/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F20%2Fdownload</segment>
 	</row>
@@ -66,13 +39,6 @@
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-		<exit_nb_visits>1</exit_nb_visits>
 		<url>http://cloudsite6.com/24/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F24%2Fdownload</segment>
 	</row>
@@ -82,13 +48,6 @@
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-		<exit_nb_visits>1</exit_nb_visits>
 		<url>http://cloudsite7.com/28/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F28%2Fdownload</segment>
 	</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml
index 20b7d824003d8bfe9fa1363a841876e5e46523b4..a4f79150a4b3f63aacc0a2541149a8bee16e6133 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml
@@ -5,44 +5,24 @@
 		<nb_visits>10</nb_visits>
 		<nb_hits>10</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>10</entry_nb_visits>
-		<entry_nb_actions>10</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>10</entry_bounce_count>
-		<exit_nb_visits>10</exit_nb_visits>
 	</row>
 	<row>
 		<label>othersite10.com/ - Others</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 	</row>
 	<row>
 		<label>othersite11.com/ - Others</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 	</row>
 	<row>
 		<label>othersite12.com/ - Others</label>
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 	</row>
 	<row>
 		<label>othersite10.com/</label>
@@ -50,13 +30,6 @@
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-		<exit_nb_visits>1</exit_nb_visits>
 		<url>http://othersite10.com/</url>
 		<segment>outlinkUrl==http%3A%2F%2Fothersite10.com%2F</segment>
 	</row>
@@ -66,13 +39,6 @@
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-		<exit_nb_visits>1</exit_nb_visits>
 		<url>http://othersite11.com/</url>
 		<segment>outlinkUrl==http%3A%2F%2Fothersite11.com%2F</segment>
 	</row>
@@ -82,13 +48,6 @@
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-		<exit_nb_visits>1</exit_nb_visits>
 		<url>http://othersite12.com/</url>
 		<segment>outlinkUrl==http%3A%2F%2Fothersite12.com%2F</segment>
 	</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml
index ae8e9590d083fdc74d571b09e2558c24cbe0f3b9..ed197c1b31fcd53a7438c5b44abe32ddca51a410 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml
@@ -5,14 +5,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite5.com/20/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F20%2Fdownload</segment>
 	</row>
@@ -21,14 +14,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite5.com/21/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F21%2Fdownload</segment>
 	</row>
@@ -37,14 +23,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite5.com/22/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F22%2Fdownload</segment>
 	</row>
@@ -53,14 +32,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite5.com/23/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F23%2Fdownload</segment>
 	</row>
@@ -69,14 +41,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite5.com/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2Fdownload</segment>
 	</row>
@@ -85,14 +50,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite6.com/24/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F24%2Fdownload</segment>
 	</row>
@@ -101,14 +59,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite6.com/25/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F25%2Fdownload</segment>
 	</row>
@@ -117,14 +68,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite6.com/26/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F26%2Fdownload</segment>
 	</row>
@@ -133,14 +77,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite6.com/27/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F27%2Fdownload</segment>
 	</row>
@@ -149,14 +86,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite6.com/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2Fdownload</segment>
 	</row>
@@ -165,14 +95,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite7.com/28/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F28%2Fdownload</segment>
 	</row>
@@ -181,14 +104,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite7.com/29/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F29%2Fdownload</segment>
 	</row>
@@ -197,14 +113,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite7.com/30/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F30%2Fdownload</segment>
 	</row>
@@ -213,14 +122,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite7.com/31/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F31%2Fdownload</segment>
 	</row>
@@ -229,14 +131,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite7.com/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2Fdownload</segment>
 	</row>
@@ -245,14 +140,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite8.com/32/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F32%2Fdownload</segment>
 	</row>
@@ -261,14 +149,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite8.com/33/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F33%2Fdownload</segment>
 	</row>
@@ -277,14 +158,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite8.com/34/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F34%2Fdownload</segment>
 	</row>
@@ -293,14 +167,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite8.com/35/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F35%2Fdownload</segment>
 	</row>
@@ -309,14 +176,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite8.com/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2Fdownload</segment>
 	</row>
@@ -325,14 +185,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite9.com/36/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F36%2Fdownload</segment>
 	</row>
@@ -341,14 +194,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite9.com/37/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F37%2Fdownload</segment>
 	</row>
@@ -357,14 +203,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite9.com/38/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F38%2Fdownload</segment>
 	</row>
@@ -373,14 +212,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite9.com/39/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F39%2Fdownload</segment>
 	</row>
@@ -389,14 +221,7 @@
 		<nb_visits>1</nb_visits>
 		<nb_hits>1</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>1</entry_nb_visits>
-		<entry_nb_actions>1</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>1</entry_bounce_count>
-		<exit_nb_visits>1</exit_nb_visits>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
-		<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
-		<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
 		<url>http://cloudsite9.com/download</url>
 		<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2Fdownload</segment>
 	</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml
index 486f5a4a8086a239c54a03f87a92d71a3b755385..c0aa6cc9a2822fcb32bdb3ffb3c50d648e70f04b 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml
@@ -5,11 +5,6 @@
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/20/download</label>
@@ -17,13 +12,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://cloudsite5.com/20/download</url>
 			</row>
 			<row>
@@ -31,11 +19,6 @@
 				<nb_visits>3</nb_visits>
 				<nb_hits>3</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>3</entry_nb_visits>
-				<entry_nb_actions>3</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>3</entry_bounce_count>
-				<exit_nb_visits>3</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -44,10 +27,5 @@
 		<nb_visits>21</nb_visits>
 		<nb_hits>21</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>21</entry_nb_visits>
-		<entry_nb_actions>21</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>21</entry_bounce_count>
-		<exit_nb_visits>21</exit_nb_visits>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml
index d7f085aa42de63dd0b60ea34aa92759a9debe20c..395151dd5163ba9e63b27233031a7bdc3f583ac1 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml
@@ -5,11 +5,6 @@
 		<nb_visits>4</nb_visits>
 		<nb_hits>4</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>4</entry_nb_visits>
-		<entry_nb_actions>4</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>4</entry_bounce_count>
-		<exit_nb_visits>4</exit_nb_visits>
 		<subtable>
 			<row>
 				<label>/</label>
@@ -17,13 +12,6 @@
 				<nb_uniq_visitors>1</nb_uniq_visitors>
 				<nb_hits>1</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
-				<entry_nb_visits>1</entry_nb_visits>
-				<entry_nb_actions>1</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>1</entry_bounce_count>
-				<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
-				<exit_nb_visits>1</exit_nb_visits>
 				<url>http://othersite10.com/</url>
 			</row>
 			<row>
@@ -31,11 +19,6 @@
 				<nb_visits>3</nb_visits>
 				<nb_hits>3</nb_hits>
 				<sum_time_spent>0</sum_time_spent>
-				<entry_nb_visits>3</entry_nb_visits>
-				<entry_nb_actions>3</entry_nb_actions>
-				<entry_sum_visit_length>0</entry_sum_visit_length>
-				<entry_bounce_count>3</entry_bounce_count>
-				<exit_nb_visits>3</exit_nb_visits>
 			</row>
 		</subtable>
 	</row>
@@ -44,10 +27,5 @@
 		<nb_visits>21</nb_visits>
 		<nb_hits>21</nb_hits>
 		<sum_time_spent>0</sum_time_spent>
-		<entry_nb_visits>21</entry_nb_visits>
-		<entry_nb_actions>21</entry_nb_actions>
-		<entry_sum_visit_length>0</entry_sum_visit_length>
-		<entry_bounce_count>21</entry_bounce_count>
-		<exit_nb_visits>21</exit_nb_visits>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/UI/expected-screenshots/DashboardManager_expanded.png b/tests/UI/expected-screenshots/DashboardManager_expanded.png
index cf63988ca4f67fe504edaab56fd440a7d70dbf15..03c98e51cf65b2da9e534b6ac52364d45c286915 100644
Binary files a/tests/UI/expected-screenshots/DashboardManager_expanded.png and b/tests/UI/expected-screenshots/DashboardManager_expanded.png differ
diff --git a/tests/UI/expected-screenshots/DashboardManager_removed.png b/tests/UI/expected-screenshots/DashboardManager_removed.png
index 9a670881814e0ec4e5b1d4664b5fb2abc5d0631b..493649357fbc872354cc2df8e1050e05118288fc 100644
Binary files a/tests/UI/expected-screenshots/DashboardManager_removed.png and b/tests/UI/expected-screenshots/DashboardManager_removed.png differ
diff --git a/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png b/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png
index 208c5545f9fc5c199f37ed5789b4fd6e1e3095aa..22110711166eff64925b98d23cc11bc2fce62665 100644
Binary files a/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png and b/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png differ
diff --git a/tests/UI/expected-screenshots/DashboardManager_widget_preview.png b/tests/UI/expected-screenshots/DashboardManager_widget_preview.png
index 5494fb208c9bf2d0a2f6c84e658f4914f8cce0bf..03f18720d0c3ad9bb137f820bc7a3c2f575476e1 100644
Binary files a/tests/UI/expected-screenshots/DashboardManager_widget_preview.png and b/tests/UI/expected-screenshots/DashboardManager_widget_preview.png differ
diff --git a/tests/UI/expected-screenshots/Dashboard_removed.png b/tests/UI/expected-screenshots/Dashboard_removed.png
index dd384cfc69fb6c3b930d0c3db27a04b040844d1d..07085c8a8ddaf1e0198b514cabae717bbb589f37 100644
Binary files a/tests/UI/expected-screenshots/Dashboard_removed.png and b/tests/UI/expected-screenshots/Dashboard_removed.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b865112d34664f2f8f1b584aa62d1eb127764e6
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..96215d688566e0615678cf539f8e06d68ad66ad0
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdb8a346973238f1e6bf5d341e21d77d6c490003
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..00a8ac2874781f738621a59a17bfd135614379e7
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..61b9a684eef2cfa0c93951fac787553e549500bd
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc0a2a43f50b650e414abde62de2c403f3ada7ba
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..870eb3a98b4b255e0ec575b1e636984f8220c255
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac5b71c9cfcc10f2cdfb91e8da9036eb6772193e
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef638514d6f73961dc8074ef2088fc02e21dc637
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..769990ad67894c3069c18f0a195f78c32001509e
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..40e09d34e0fbb3ec1424e4cd4ffc2283cf331d5a
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..ffdb015738eaa09a4422d331191ce3923795ceef
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7b97bca7eee4c61d15155e16957cbe3becc6553
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png
new file mode 100644
index 0000000000000000000000000000000000000000..eaedf044fa528e8eaf382dfdcfceabdc7c78de53
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ebe59347e1292405f0caaf2bf36287c1e88ff21
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png
new file mode 100644
index 0000000000000000000000000000000000000000..0701015fc332a36cd7a9744657cb1e92b10cb78e
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..30351a385b9b72ed5545bbd252e4126acadeb3c2
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png
new file mode 100644
index 0000000000000000000000000000000000000000..b30e7fbffe27adb897f4f2bc71d63cf53b58d875
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..a310068f1e8c5a8806945d05ebe951f9a29a62f6
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..a310068f1e8c5a8806945d05ebe951f9a29a62f6
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..54668033ea289d61e2328e564ba5e47a34956b27
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..90d6808f55298604dc93ad4dab9a262b6360cacb
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..90d6808f55298604dc93ad4dab9a262b6360cacb
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..5453092aa8c372bc1a4948f62dbfc3457c4d1924
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..72fa3aab47921c1186a920415e3b0f82b678aa6b
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1eaf7ec8d39bca9a0f9da9fdde909f32c53a4c1
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b71115837b0724009fa52b3d05448f894745d34
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cdeaed41ffc7036d7e8944dbcdaedf711b7d50c
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b938086480166087ec4457d1d78e0b65cc91d8f
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..500196cfb4e87c3a0ce6e3bb6b6faf374b94f4d4
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png
new file mode 100644
index 0000000000000000000000000000000000000000..db86de03ccd29aa9bb1c7c35412f3f470b0ce3b5
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png
new file mode 100644
index 0000000000000000000000000000000000000000..6efcbbf06b8aa39aed27817cd8447b25769649ca
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..a26bb41cc3b0e605db9cdfe196d572b46d2b881b
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png b/tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png
new file mode 100644
index 0000000000000000000000000000000000000000..62e8cf7bea60f58b98c53f55bb48c98a12ab4844
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png b/tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png
new file mode 100644
index 0000000000000000000000000000000000000000..073f732aae396ed40ee45f41d801cd3a57f66f15
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png
new file mode 100644
index 0000000000000000000000000000000000000000..31446ff085a12fe6bdfdfbb1513c61895390cf94
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f3c2fb25266ec8b318ec1d860128165277d5e85
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png b/tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png
new file mode 100644
index 0000000000000000000000000000000000000000..d135e1127d3525fa340e9e9f915f57bf2ce1b218
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..74b8aa9e5cd37f97da5a799531a9a0e1a5cf6c28
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd6b4293fd4e6a82f13ebc31aad44acb2f9cd656
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png
new file mode 100644
index 0000000000000000000000000000000000000000..c88a30b7c48d229fecea1b2d6364d58dccb7b90e
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png
new file mode 100644
index 0000000000000000000000000000000000000000..10daf00c6425076103a41be50d1bba2ce403659c
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png differ
diff --git a/tests/UI/expected-screenshots/Marketplace_updates_superuser.png b/tests/UI/expected-screenshots/Marketplace_updates_superuser.png
new file mode 100644
index 0000000000000000000000000000000000000000..e37583dfb5bc748fae0e4f07bb332c533b08c003
Binary files /dev/null and b/tests/UI/expected-screenshots/Marketplace_updates_superuser.png differ
diff --git a/tests/UI/expected-screenshots/Theme_home.png b/tests/UI/expected-screenshots/Theme_home.png
index 9c9dce3051e61fb2181a1a5d1f567ffec93660ec..dd0803cef45ff5caec0283073531e58cf273160f 100644
Binary files a/tests/UI/expected-screenshots/Theme_home.png and b/tests/UI/expected-screenshots/Theme_home.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
index af51f6365c9b55aee0918899f7a82bb4391e91e1..1bcfab0c77e7b90a294fdc623ba99d478e8e8838 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png and b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png
index 13b87a20265b63ea6aef80ecd91593664146a145..5d80d181ccffecd4dc987b405ba27cfe771d8fe4 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png and b/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png
index d4f4e56103ee5d1e7a490aa717fb3db3f9f50dfa..3270c941e40e1748b1c611ba4a830de5d0ac4388 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png and b/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
index dad4ec975c602d4d767d1b556b02bd914f5ac0bf..59120fe451cbd8249832b7bc29d4c790a1bb2925 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png and b/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png b/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
index 9eb0c90cc9ccc99633f9c1ff78721aa773b64616..420fc0f71495b06a128534f703d04001598abc91 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png and b/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
index 96a7c7324a0cf182b27d80c79e780b85eab2fa1e..1b0a7c87e403240767877165ad865f4348b55fba 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png and b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
index f0495e85bcace7339623419dc882c59ddb75b661..6a6af904d6d653dffb30aea7f06e4a8a173a37da 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png and b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png b/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png
index cb8cbe42656da38a0bc9bc4a65ca6900ed8bbec4..80b9e7c5a5cb2fc7e926a5e8ae1b9074aefb5b59 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png and b/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png differ
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png b/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png
index 2d7732163e76135b0ffd355e143634de790a9052..eaf22538af8aa8dfdf7a905212f1ab5f58d0dfa8 100644
Binary files a/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png and b/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png differ
diff --git a/tests/UI/specs/Marketplace_spec.js b/tests/UI/specs/Marketplace_spec.js
new file mode 100644
index 0000000000000000000000000000000000000000..dab2e3a5e65d27e4b82a5c68b03cb772c2717e95
--- /dev/null
+++ b/tests/UI/specs/Marketplace_spec.js
@@ -0,0 +1,265 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * Screenshot tests for main, top and admin menus.
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("Marketplace", function () {
+    this.timeout(0);
+
+    this.fixture = "Piwik\\Plugins\\Marketplace\\tests\\Fixtures\\SimpleFixtureTrackFewVisits";
+
+    var urlBase = '?module=Marketplace&action=overview&';
+    var paidPluginsUrl = urlBase + 'show=premium';
+    var themesUrl = urlBase + 'show=themes';
+    var pluginsUrl = urlBase;
+
+    var noLicense = 'noLicense';
+    var expiredLicense = 'expiredLicense';
+    var exceededLicense = 'exceededLicense';
+    var validLicense = 'validLicense';
+
+    function loadPluginDetailPage(page, pluginName, isFreePlugin)
+    {
+        page.load(isFreePlugin ? pluginsUrl : paidPluginsUrl);
+        page.click('.card-title [piwik-plugin-name="' + pluginName + '"]');
+    }
+
+    function captureSelector(done, screenshotName, test, selector)
+    {
+        expect.screenshot(screenshotName).to.be.captureSelector(selector, test, done);
+    }
+
+    function captureMarketplace(done, screenshotName, test, selector)
+    {
+        if (!selector) {
+            selector = '';
+        }
+
+        captureSelector(done, screenshotName, test, '.marketplace' + selector);
+    }
+
+    function captureWithNotification(done, screenshotName, test)
+    {
+        captureMarketplace(done, screenshotName, test, ',#notificationContainer');
+    }
+
+    function captureWithDialog(done, screenshotName, test)
+    {
+        captureSelector(done, screenshotName, test, '.ui-dialog:visible');
+    }
+
+    function assumePaidPluginsActivated()
+    {
+        testEnvironment.mockMarketplaceAssumePluginNamesActivated = ['CustomPlugin1','CustomPlugin2','PaidPlugin1','PaidPlugin2'];
+        testEnvironment.save();
+    }
+
+    function setEnvironment(mode, consumer)
+    {
+        if (mode === 'user') {
+            testEnvironment.idSitesViewAccess = [1];
+        } else {
+            // superuser
+            testEnvironment.idSitesViewAccess = [];
+        }
+
+        if (mode === 'multiUserEnvironment') {
+            testEnvironment.overrideConfig('General', 'multi_server_environment', '1');
+        } else {
+            testEnvironment.overrideConfig('General', 'multi_server_environment', '0');
+        }
+
+        testEnvironment.overrideConfig('General', 'enable_plugins_admin', '1');
+
+        delete testEnvironment.mockMarketplaceAssumePluginNamesActivated;
+
+        testEnvironment.consumer = consumer;
+        testEnvironment.mockMarketplaceApiService = 1;
+        testEnvironment.save();
+    }
+
+    ['superuser', 'user', 'multiUserEnvironment'].forEach(function (mode) {
+
+        if (mode !== 'user') {
+            it('should show available updates in plugins page', function (done) {
+                setEnvironment(mode, noLicense);
+
+                captureSelector(done, 'updates_' + mode, function (page) {
+                    page.load('?module=CorePluginsAdmin&action=plugins&idSite=1&period=day&date=yesterday&activated=');
+                }, '#content .card:first');
+            });
+        }
+
+        it(mode + ' for a user without license key should be able to open paid plugins', function (done) {
+            setEnvironment(mode, noLicense);
+
+            captureMarketplace(done, 'paid_plugins_no_license_' + mode, function (page) {
+                page.load(paidPluginsUrl);
+            });
+        });
+
+        it(mode + ' for a user with license key should be able to open paid plugins', function (done) {
+            setEnvironment(mode, validLicense);
+
+            captureMarketplace(done, 'paid_plugins_with_license_' + mode, function (page) {
+                page.load(paidPluginsUrl);
+            });
+        });
+
+        it(mode + ' for a user with exceeded license key should be able to open paid plugins', function (done) {
+            setEnvironment(mode, exceededLicense);
+            assumePaidPluginsActivated();
+
+            captureMarketplace(done, 'paid_plugins_with_exceeded_license_' + mode, function (page) {
+                page.load(paidPluginsUrl);
+            });
+        });
+
+        it('should show themes page', function (done) {
+            setEnvironment(mode, validLicense);
+
+            captureMarketplace(done, 'themes_with_valid_license_' + mode, function (page) {
+                page.load(themesUrl);
+            });
+        });
+
+        it('should show free plugin details', function (done) {
+            setEnvironment(mode, noLicense);
+
+            captureWithDialog(done, 'free_plugin_details_' + mode, function (page) {
+                var isFree = true;
+                loadPluginDetailPage(page, 'TreemapVisualization', isFree);
+            });
+        });
+
+        it('should show paid plugin details when having no license', function (done) {
+            setEnvironment(mode, noLicense);
+
+            captureWithDialog(done, 'paid_plugin_details_no_license_' + mode, function (page) {
+                assumePaidPluginsActivated();
+                var isFree = false;
+                loadPluginDetailPage(page, 'PaidPlugin1', isFree);
+            });
+        });
+
+        it('should show paid plugin details when having valid license', function (done) {
+            setEnvironment(mode, validLicense);
+
+            captureWithDialog(done, 'paid_plugin_details_valid_license_' + mode + '_installed', function (page) {
+                assumePaidPluginsActivated();
+                var isFree = false;
+                loadPluginDetailPage(page, 'PaidPlugin1', isFree);
+            });
+        });
+
+        it('should show paid plugin details when having valid license', function (done) {
+            setEnvironment(mode, exceededLicense);
+
+            captureWithDialog(done, 'paid_plugin_details_exceeded_license_' + mode, function (page) {
+                assumePaidPluginsActivated();
+                var isFree = false;
+                loadPluginDetailPage(page, 'PaidPlugin1', isFree);
+            });
+        });
+    });
+
+    var mode = 'superuser';
+
+    it('should show a dialog showing a list of all possible plugins to install', function (done) {
+        setEnvironment(mode, validLicense);
+
+        captureSelector(done, mode + '_install_all_paid_plugins_at_once', function (page) {
+            page.load(pluginsUrl);
+            page.click('.installAllPaidPlugins');
+        }, '.modal.open');
+    });
+
+    it('should show an error message when invalid license key entered', function (done) {
+        setEnvironment(mode, noLicense);
+
+        captureWithNotification(done, mode + '_invalid_license_key_entered', function (page) {
+            page.load(pluginsUrl);
+            page.sendKeys('#license_key', 'invalid');
+            page.click('.marketplace-paid-intro'); // click outside so change event is triggered
+            page.click('#submit_license_key input');
+        });
+    });
+
+    it('should show a confirmation before removing a license key', function (done) {
+        setEnvironment(mode, validLicense);
+
+        captureSelector(done, mode + '_remove_license_key_confirmation', function (page) {
+            page.load(pluginsUrl);
+            page.click('#remove_license_key input');
+        }, '.modal.open');
+    });
+
+    it('should show a confirmation before removing a license key', function (done) {
+        setEnvironment(mode, noLicense);
+
+        captureMarketplace(done, mode + '_remove_license_key_confirmed', function (page) {
+            page.click('.modal.open .modal-footer a:contains(Yes)')
+        });
+    });
+
+    it('should show a success message when valid license key entered', function (done) {
+        setEnvironment(mode, noLicense);
+
+        captureMarketplace(done, mode + '_valid_license_key_entered', function (page) {
+            page.load(pluginsUrl);
+            page.sendKeys('#license_key', 'valid');
+            page.execCallback(function () {
+                setEnvironment(mode, validLicense);
+            });
+            page.click('#submit_license_key input');
+        });
+    });
+
+    it('should hide activate / deactivate buttons if plugins admin is disabled', function (done) {
+        setEnvironment(mode, noLicense);
+        testEnvironment.overrideConfig('General', 'enable_plugins_admin', '0');
+        testEnvironment.save();
+
+        captureMarketplace(done, mode + '_enable_plugins_admin', function (page) {
+            page.load(pluginsUrl);
+        });
+    });
+
+    it('should hide activate / deactivate buttons if plugins admin is disabled when also multi server environment is enabled', function (done) {
+        setEnvironment('multiUserEnvironment', noLicense);
+        testEnvironment.overrideConfig('General', 'enable_plugins_admin', '0');
+        testEnvironment.save();
+
+        captureMarketplace(done, mode + '_enable_plugins_admin_with_multiserver_enabled', function (page) {
+            page.load(pluginsUrl);
+        });
+    });
+
+    [expiredLicense, exceededLicense, validLicense, noLicense].forEach(function (consumer) {
+        it('should show a subscription overview for ' + consumer, function (done) {
+            setEnvironment('superuser', consumer);
+
+            captureSelector(done, 'subscription_overview_' + consumer, function (page) {
+                page.load('?module=Marketplace&action=subscriptionOverview');
+            }, '#content');
+        });
+    });
+
+    [noLicense, expiredLicense, exceededLicense].forEach(function (consumer) {
+        // when there is no license it should not show a warning! as it could be due to network problems etc
+        it('should show a warning if license is ' + consumer, function (done) {
+            setEnvironment('superuser', consumer);
+
+            assumePaidPluginsActivated();
+
+            captureSelector(done, 'notification_plugincheck_' + consumer, function (page) {
+                page.load('?module=UsersManager&action=index');
+            }, '#notificationContainer');
+        });
+    });
+
+});
\ No newline at end of file
diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js
index 1551a68511416afb713cb5df1a0aa7c2a804ee12..fe83cffcbc27ca32bff611421909b7156debc0ef 100644
--- a/tests/lib/screenshot-testing/support/page-renderer.js
+++ b/tests/lib/screenshot-testing/support/page-renderer.js
@@ -110,6 +110,8 @@ PageRenderer.prototype.evaluate = function (impl, waitTime) {
     this.queuedEvents.push([this._evaluate, waitTime, impl]);
 };
 
+// like .evaluate() but doesn't call `impl` in context of the webpage. Useful if you want to change eg a testEnvironment
+// before a click. Makes sure this callback `impl` will be executed just before the next action instead of immediately
 PageRenderer.prototype.execCallback = function (callback, waitTime) {
     this.queuedEvents.push([this._execCallback, waitTime, callback]);
 };
diff --git a/tests/resources/yuicompressor/How to.md b/tests/resources/yuicompressor/How to.md
new file mode 100644
index 0000000000000000000000000000000000000000..a4f7bff27a2cc28d708f5b6e3b3788c1369e8ba3
--- /dev/null
+++ b/tests/resources/yuicompressor/How to.md	
@@ -0,0 +1,2 @@
+* Download latest version from https://cloud.github.com/downloads/yui/yuicompressor/yuicompressor-2.4.7.zip
+* extract the build/yuicompressor.jar in the piwik/tests/resources/yuicompressor folder
diff --git a/tests/resources/yuicompressor/yuicompressor-2.4.7.jar b/tests/resources/yuicompressor/yuicompressor-2.4.7.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3c9a408aacde5b2efa2f99abf19b4afdfdc0998f
Binary files /dev/null and b/tests/resources/yuicompressor/yuicompressor-2.4.7.jar differ
diff --git a/tests/resources/yuicompressor/yuicompressor-2.4.7.zip b/tests/resources/yuicompressor/yuicompressor-2.4.7.zip
deleted file mode 100644
index 741cc40bb1b1e52679bf5b37fee68db127a5be87..0000000000000000000000000000000000000000
Binary files a/tests/resources/yuicompressor/yuicompressor-2.4.7.zip and /dev/null differ